Инструменты пользователя

Инструменты сайта


problems:diagnostics:coralclose

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
problems:diagnostics:coralclose [2025/10/28 14:51] – Вадим Мартовскийproblems:diagnostics:coralclose [2026/07/31 12:15] (текущий) – Вадим Мартовский
Строка 1: Строка 1:
-<html>+==== 🌊 Умная диагностика кораллов ==== 
 + 
 +<html><!-- 🌊 Умная диагностика кораллов ( htmlok=1) -->
 <style> <style>
-.coral-step { margin:20px; padding:13px; border-radius:10px; background: #f8faff; box-shadow: 0 2px 8px #eee;} +.coral-step { 
-.coral-step h3 { margin:0 0 8px 0; color:#0077b6;} +  margin: 20px auto; 
-.coral-btn { display:block; margin:7px 0; padding:8px 16px; background:#26a69a; color:#fff; border:none; border-radius:5px; cursor:pointer; font-size:14px;} +  padding: 16px; 
-.coral-btn:hover { background:#34bfa3;} +  border-radius: 12px; 
-.coral-response { margin:10px 0 0 0; padding:10px; background:#fff3cd; border-radius:5px; border:1px solid #ffeeba;} +  background: #f8faff; 
-.coral-hide { display: none; } +  box-shadow: 0 2px 8px rgba(0,0,0,0.05); 
-</style>+  max-width: 600px; 
 +  font-family: system-ui, sans-serif; 
 +} 
 +.coral-step h3 { 
 +  margin: 0 0 10px 0; 
 +  color: #0077b6; 
 +  text-align: center; 
 +} 
 +.coral-btn { 
 +  display: block; 
 +  width: 100%; 
 +  margin: 6px 0; 
 +  padding: 10px 14px; 
 +  background: #26a69a; 
 +  color: #fff; 
 +  border: none; 
 +  border-radius: 6px; 
 +  cursor: pointer; 
 +  font-size: 15px; 
 +  transition: 0.2s; 
 +  text-align: center; 
 +} 
 +.coral-btn:hover { background: #34bfa3; }
  
-<div class="coral-step"> +.coral-btn-nav { 
-  <h3>Диагностика: Один коралл закрылся</h3>+  background: #607d8b; 
 +  width: 48%; 
 +} 
 +.coral-btn-nav:hover { background: #78909c; }
  
-  <button class="coral-btn" onclick="showStep('norm')">Коралл периодически сам закрывается</button> +.coral-btn-home { 
-  <button class="coral-btn" onclick="showStep('problem')">Коралл не раскрывается более суток/выглядит нездорово</button>+  background: #455a64; 
 +  width: 48%; 
 +} 
 +.coral-btn-home:hover { background: #546e7a; }
  
-  <div id="norm" class="coral-response coral-hide"> +.coral-response { 
-    Это нормально для многих видов АКВАКУЛЬТУРЫ и LPS. <br> +  margin: 10px 0 0 0; 
-    Если ткани здоровые, нет пятен, слизи — просто наблюдайте в течение дня. +  padding: 10px; 
-    <br><button class="coral-btn" onclick="backToStart()">Назад</button> +  background: #fff3cd; 
-  </div>+  border-radius: 5px; 
 +  border: 1px solid #ffeeba; 
 +  font-size: 14px; 
 +}
  
-  <div id="problem" class="coral-response coral-hide"> +.coral-history { 
-    <b>Как быстро закрылся?</b> +  background: #eef7fa; 
-    <br> +  padding: 8px; 
-    <button class="coral-btn" onclick="showStep('fast')">Внезапно (часы)</button> +  border-radius: 6px; 
-    <button class="coral-btn" onclick="showStep('slow')">Постепенно (дни/недели)</button> +  font-size: 13px; 
-    <button class="coral-btn" onclick="backToStart()">Назад</button> +  margin-bottom: 10px; 
-  </div>+} 
 +.coral-history-item { 
 +  margin-bottom: 5px; 
 +} 
 +.coral-history-item span { 
 +  color: #00695c; 
 +} 
 +.coral-nav { 
 +  display: flex; 
 +  justify-content: space-between; 
 +  gap: 6px; 
 +  margin-top: 12px; 
 +} 
 +</style>
  
-  <div id="fast" class="coral-response coral-hide"> +<div id="diag-root"></div>
-    Есть механические повреждения на коралле? +
-    <br> +
-    <button class="coral-btn" onclick="showStep('damageyes')">Да</button> +
-    <button class="coral-btn" onclick="showStep('damageno')">Нет</button> +
-    <button class="coral-btn" onclick="backToStep('problem')">Назад</button> +
-  </div>+
  
-  <div id="damageyes" class="coral-response coral-hide"> +<!-- 🧠 JSON-структура сценария --> 
-    ✔️ Проверьте наличие улиток, рыбок-подбиральщиков, механических травм.<br> +<script type="application/json" id="diag-data"> 
-    Изолируйте повреждённый участок, при необходимости обработайте.<br> +{ 
-    <button class="coral-btn" onclick="backToStep('fast')">Назад</button> +  "title": "Диагностика: Кораллы закрылись", 
-    <button class="coral-btn" onclick="backToStart()">В начало</button> +  "steps": { 
-  </div>+    "start": { 
 +      "question": "Выберите сценарий:", 
 +      "answers": { 
 +        "one": "Один коралл", 
 +        "one_species": "Один вид", 
 +        "multi": "Несколько видов", 
 +        "all": "Все кораллы" 
 +      } 
 +    },
  
-  <div id="damageno" class="coral-response coral-hide"> +    "one": { 
-    Были изменения в аквариуме? +      "question": "Коралл закрывается кратковременно или более суток?", 
-    <br> +      "answers": { 
-    <button class="coral-btn coral-btn-mini" onclick="showStep('neighbor')">Новый сосед/коралл</button> +        "short": "Кратковременно", 
-    <button class="coral-btn coral-btn-mini" onclick="showStep('light')">Новое освещение</button> +        "long": "Более суток" 
-    <button class="coral-btn coral-btn-mini" onclick="showStep('add')">Новые добавки/дозировка</button> +      } 
-    <button class="coral-btn coral-btn-mini" onclick="showStep('flow')">Новое течение</button> +    }, 
-    <button class="coral-btn coral-btn-mini" onclick="showStep('clean')">Чистка аквариума</button> +    "short": { 
-    <button class="coral-btn coral-btn-mini" onclick="showStep('none')">Никаких изменений</button> +      "text": "✅ Кратковременное закрытие — нормально для многих LPS. Просто наблюдайте." 
-    <button class="coral-btn" onclick="backToStep('fast')">Назад</button> +    }, 
-  </div>+    "long": { 
 +      "question": "Локальные причины: поток, сосед, свет. Что изменилось?", 
 +      "answers": { 
 +        "flow": "Течение", 
 +        "neighbor": "Появился сосед", 
 +        "light": "Освещение", 
 +        "none": "Ничего не менялось" 
 +      } 
 +    }, 
 +    "flow": { 
 +      "text": "💡 Переместите коралл в зону мягкого потока или скорректируйте направление течения." 
 +    }, 
 +    "neighbor": { 
 +      "text": "💡 Отодвиньте нового соседа, оцените конфликт. Разделите, если нужно." 
 +    }, 
 +    "light": { 
 +      "text": "💡 Верните прежний световой режим или постепенно корректируйте интенсивность." 
 +    }, 
 +    "none": { 
 +      "text": "⚠️ Проверьте параметры воды (pH, KH, нитраты, аммиак). Возможен стресс или скрытая болезнь." 
 +    },
  
-  <!-- Примеры быстрого ответа (можно добавить новые сценарии) --> +    "one_species": { 
-  <div id="neighbor" class="coral-response coral-hide"> +      "question": "Все представители вида закрылись или только часть?", 
-    ✔️ Отодвиньте новый коралл или соседа подальше.<br> +      "answers": { 
-    Оцените, нет ли конфликтов/агрессии.<br> +        "one_species_all": "Все", 
-    <button class="coral-btn" onclick="backToStep('damageno')">Назад</button> +        "one_species_some": "Только часть" 
-    <button class="coral-btn" onclick="backToStart()">В начало</button> +      } 
-  </div> +    }, 
-  <div id="light" class="coral-response coral-hide"> +    "one_species_all": { 
-    ✔️ Проверьте интенсивность и спектр освещения.<br> +      "question": "Изменился свет, добавки или течение?", 
-    Верните прежнюю лампу или отрегулируйте мощность.<br> +      "answers": { 
-    <button class="coral-btn" onclick="backToStep('damageno')">Назад</button> +        "yes": "Да", 
-    <button class="coral-btn" onclick="backToStart()">В начало</button> +        "no": "Нет" 
-  </div> +      } 
-  <div id="add" class="coral-response coral-hide"> +    }, 
-    ✔️ Проверьте дозировку всех добавок, нет ли превышения.<br> +    "yes": { 
-    <button class="coral-btn" onclick="backToStep('damageno')">Назад</button> +      "text": "💡 Верните прежние настройки освещения, потока и дозировки. Наблюдайте." 
-    <button class="coral-btn" onclick="backToStart()">В начало</button> +    }, 
-  </div> +    "no": { 
-  <div id="flow" class="coral-response coral-hide"> +      "question": "Есть признаки инфекции (слизь, пятна, белый стрип)?", 
-    ✔️ Переместите коралл в зону мягкого потока или скорректируйте направление течения.<br> +      "answers": { 
-    <button class="coral-btn" onclick="backToStep('damageno')">Назад</button> +        "infect_yes": "Да", 
-    <button class="coral-btn" onclick="backToStart()">В начало</button> +        "infect_no": "Нет" 
-  </div> +      } 
-  <div id="clean" class="coral-response coral-hide"> +    }, 
-    ✔️ Возможен взвесь/мусор после чистки.<br> +    "infect_yes": { 
-    Аккуратно продуйте коралл, поставьте уголь.<br> +      "text": "⚠️ Изолируйте поражённые, обработайте ваннами, поставьте уголь. Консультация специалиста рекомендуется." 
-    <button class="coral-btn" onclick="backToStep('damageno')">Назад</button> +    }, 
-    <button class="coral-btn" onclick="backToStart()">В начало</button> +    "infect_no": { 
-  </div> +      "text": "✅ Возможно, временная адаптация или стресс. Проверьте стабильность параметров воды." 
-  <div id="none" class="coral-response coral-hide"> +    }, 
-    ✔️ Если никаких изменений — проверьте параметры воды, на паразитов.<br> +    "one_species_some": { 
-    <button class="coral-btn" onclick="backToStep('damageno')">Назад</button> +      "question": "Есть общий локальный признак (свет, сосед, место)?", 
-    <button class="coral-btn" onclick="backToStart()">В начало</button> +      "answers": { 
-  </div>+        "yes": "Да", 
 +        "no": "Нет" 
 +      } 
 +    }, 
 +    "yes": { 
 +      "text": "💡 Диагностируйте локальное влияние: поток, конфликт соседей, локальный свет. Скорректируйте." 
 +    }, 
 +    "no": { 
 +      "question": "Остальные представители в норме?", 
 +      "answers": { 
 +        "all_good": "Да", 
 +        "some_bad": "Нет" 
 +      } 
 +    }, 
 +    "all_good": { 
 +      "text": "✅ Понаблюдайте — это индивидуальная реакция. Возможна изоляция для карантина." 
 +    }, 
 +    "some_bad": { 
 +      "text": "⚠️ Проверьте все параметры вида. Возможен скрытый стресс или начальная стадия массового влияния." 
 +    },
  
-  <!-- Медленный сценарий (демо) --> +    "multi": { 
-  <div id="slow" class="coral-response coral-hide"> +      "question": "Какие типы пострадали?", 
-    (Шаги для медленного закрытия: вопросы о параметрах воды, кормлении, соседях и т.д.) +      "answers": { 
-    <br><button class="coral-btn" onclick="backToStep('problem')">Назад</button> +        "multi_lps": "Только LPS", 
-    <button class="coral-btn" onclick="backToStart()">В начало</button> +        "multi_sps": "Только SPS", 
-  </div>+        "multi_soft": "Мягкие кораллы", 
 +        "multi_mixed": "Несколько типов" 
 +      } 
 +    }, 
 +    "multi_lps": { 
 +      "question": "Изменилась ли доза кормления/добавок?", 
 +      "answers": { 
 +        "yes": "Да", 
 +        "no": "Нет" 
 +      } 
 +    }, 
 +    "multi_sps": { 
 +      "question": "Были скачки KH/pH?", 
 +      "answers": { 
 +        "yes": "Да", 
 +        "no": "Нет" 
 +      } 
 +    }, 
 +    "multi_soft": { 
 +      "question": "Были изменения света или температуры?", 
 +      "answers": { 
 +        "yes": "Да", 
 +        "no": "Нет" 
 +      } 
 +    }, 
 +    "multi_mixed": { 
 +      "question": "Все виды закрылись одновременно?", 
 +      "answers": { 
 +        "yes": "Да", 
 +        "no": "Нет" 
 +      } 
 +    }, 
 +    "multi_env": { 
 +      "question": "Проводилась чистка, подмена воды, химические вещества?", 
 +      "answers": { 
 +        "yes": "Да", 
 +        "no": "Нет" 
 +      } 
 +    }, 
 +    "multi_env_yes": { 
 +      "text": "⚠️ Подмените воду, поставьте свежий уголь, ищите причину. Массовый стресс часто связан с вмешательством." 
 +    }, 
 +    "multi_env_no": { 
 +      "text": "✅ Сделайте базовую диагностику параметров воды, фильтрации, света и потока." 
 +    },
  
-</div>+    "all": { 
 +      "question": "Когда произошло закрытие?", 
 +      "answers": { 
 +        "yesterday": "Вчера", 
 +        "today": "Сегодня", 
 +        "long": "Давно" 
 +      } 
 +    }, 
 +    "all_corals_env": { 
 +      "question": "Менялись параметры воды или было вмешательство?", 
 +      "answers": { 
 +        "yes": "Да", 
 +        "no": "Нет" 
 +      } 
 +    }, 
 +    "all_corals_env_yes": { 
 +      "text": "⚠️ Срочно проверьте все параметры: аммиак, нитриты, pH, KH, температура. Подмените воду!" 
 +    }, 
 +    "all_corals_env_no": { 
 +      "question": "Оборудование работало стабильно?", 
 +      "answers": { 
 +        "yes": "Да", 
 +        "no": "Нет" 
 +      } 
 +    }, 
 +    "all_corals_hardware_yes": { 
 +      "text": "✅ Следите за освещением, скиммером, нагревом. Массовое закрытие иногда связано с мелкой поломкой." 
 +    }, 
 +    "all_corals_hardware_no": { 
 +      "text": "⚠️ Восстановите работу оборудования, обеспечьте аэрацию и фильтрацию, следите за параметрами." 
 +    }, 
 +    "all_corals_long": { 
 +      "question": "Есть запах, мутность воды, признаки бактериального всплеска?", 
 +      "answers": { 
 +        "yes": "Да", 
 +        "no": "Нет" 
 +      } 
 +    }, 
 +    "all_corals_long_yes": { 
 +      "text": "⚠️ Усильте аэрацию, срочно подмените воду, поставьте свежий уголь." 
 +    }, 
 +    "all_corals_long_no": { 
 +      "text": "✅ Понаблюдайте, возможно сезонный стресс или адаптация. Проверьте все параметры!" 
 +    } 
 +  } 
 +} 
 + 
 +</script>
  
 <script> <script>
-function showStep(id) { +(function(){ 
-  hideAll(); +  const root = document.getElementById('diag-root'); 
-  document.getElementById(id).classList.remove('coral-hide'); +  const data = JSON.parse(document.getElementById('diag-data').textContent); 
-} +  let path = []; 
-function backToStart() { + 
-  hideAll(); +  function renderStep(id) { 
-} +    const step = data.steps[id]; 
-function backToStep(step) { +    let html = '<div class="coral-step">'; 
-  hideAll(); +    html += '<h3>' + (data.title || '') + '</h3>'; 
-  document.getElementById(step).classList.remove('coral-hide'); + 
-} +    // История 
-function hideAll() { +    if (path.length) { 
-  var steps = document.querySelectorAll('.coral-response'); +      html += '<div class="coral-history">'; 
-  steps.forEach(function(s){ s.classList.add('coral-hide'); }); +      path.forEach(p => { 
-}+        html += `<div class="coral-history-item"> 
 +          <b>${p.question}</b><br> 
 +          <span>→ ${p.answer}</span> 
 +        </div>`; 
 +      }); 
 +      html += '</div><hr>'; 
 +    } 
 + 
 +    if(step.question) html += '<p><b>' + step.question + '</b></p>'; 
 +    if(step.text) html += '<div class="coral-response">' + step.text + '</div>'; 
 + 
 +    if(step.answers){ 
 +      for(const key in step.answers){ 
 +        html += '<button class="coral-btn" data-next="' + key + '" data-q="' + step.question + '" data-a="' + step.answers[key] + '">' + step.answers[key] + '</button>'; 
 +      } 
 +    } 
 + 
 +    html += ` 
 +      <div class="coral-nav"> 
 +        <button class="coral-btn coral-btn-nav" data-next="back">⬅️ Назад</button> 
 +        <button class="coral-btn coral-btn-home" data-next="start">🏠 В начало</button> 
 +      </div> 
 +    `; 
 + 
 +    html += '</div>'; 
 +    root.innerHTML = html; 
 + 
 +    Array.from(root.querySelectorAll('.coral-btn')).forEach(btn=>{ 
 +      btn.addEventListener('click', function(){ 
 +        const next = this.getAttribute('data-next'); 
 +        if (next === 'back') { path.pop(); renderStep(path.length ? path.at(-1).step : 'start'); return; } 
 +        if (next === 'start') { path = []; renderStep('start'); return; } 
 + 
 +        const q = this.getAttribute('data-q'); 
 +        const a = this.getAttribute('data-a'); 
 +        if (q && a) path.push({question:q, answer:a, step:next}); 
 +        renderStep(next); 
 +        root.scrollIntoView({behavior:'smooth'}); 
 +      }); 
 +    }); 
 +  } 
 + 
 +  if (document.readyState === 'loading') 
 +    document.addEventListener('DOMContentLoaded', () => renderStep('start')); 
 +  else renderStep('start'); 
 +})();
 </script> </script>
 </html> </html>
 +
 +
 +<html><div style="text-align:right;"><i>Made with ❤️ by @Martovsky</i></div></html>
 +----
  
problems/diagnostics/coralclose.1761652304.txt.gz · Последнее изменение: — Вадим Мартовский