feat(assistant): чёткий ответ при лимите ИИ (память не теряется), напоминание о памяти, отдельный раздел в админке

- Баг «не помнит»: на самом деле free-лимит Gemini (429). callLLM теперь
  возвращает ошибку; при 429 показываем «много запросов, подожди минутку —
  память не потеряется» и НЕ ломаем историю (убираем неудачный вопрос); при
  сбое — «не получилось, попробуй позже». Раньше показывалось «не нашёл ответ».
- В окне «Спроси» — пояснение, сколько помнит Квантик (≈6 реплик, рабочая память).
- Окна красивее: шире, аватар Квантика в шапке, мягкая анимация.
- Управление помощником вынесено в отдельный раздел админки «Помощник Квантик»
  (системный вкл/выкл + модель/ключ/тест/RAG/кнопки экзамена/статистика/качество);
  из раздела «Игры» конфиг убран.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-06-04 20:03:02 +03:00
parent 961504b256
commit 78300845ed
6 changed files with 176 additions and 116 deletions
+11
View File
@@ -1070,6 +1070,9 @@
<button class="admin-nav-item" data-tab="games" onclick="switchTab(this)" id="btn-tab-games" style="display:none">
<i data-lucide="gamepad-2" style="width:15px;height:15px"></i> Игры
</button>
<button class="admin-nav-item" data-tab="assistant" onclick="switchTab(this)" id="btn-tab-assistant" style="display:none">
<i data-lucide="sparkles" style="width:15px;height:15px"></i> Помощник Квантик
</button>
<button class="admin-nav-item" data-tab="audit" onclick="switchTab(this)">
<i data-lucide="scroll-text" style="width:15px;height:15px"></i> Аудит-лог
</button>
@@ -1545,6 +1548,13 @@
</div>
</div>
<!-- ── Помощник Квантик ── -->
<div class="tab-pane" id="tab-assistant">
<div class="section-title">Помощник «Квантик»</div>
<div class="perm-desc" style="margin-bottom:20px">Настройки ИИ-помощника: модель, RAG по учебникам, кнопки на экзамене, статистика и качество ответов.</div>
<div id="assistant-admin"><div style="color:var(--muted);font-size:0.84rem">Загрузка…</div></div>
</div>
<!-- ── Игры ── -->
<div class="tab-pane" id="tab-games">
<div class="section-title">Управление играми</div>
@@ -2117,6 +2127,7 @@
<script src="/js/admin/sections/sublog.js"></script>
<script src="/js/admin/sections/sims.js"></script>
<script src="/js/admin/sections/games.js"></script>
<script src="/js/admin/sections/assistant.js"></script>
<script src="/js/admin/sections/tpl.js"></script>
<script src="/js/admin/sections/subjects.js"></script>
<script src="/js/admin/sections/permissions.js"></script>