- Баг «не помнит»: на самом деле free-лимит Gemini (429). callLLM теперь
возвращает ошибку; при 429 показываем «много запросов, подожди минутку —
память не потеряется» и НЕ ломаем историю (убираем неудачный вопрос); при
сбое — «не получилось, попробуй позже». Раньше показывалось «не нашёл ответ».
- В окне «Спроси» — пояснение, сколько помнит Квантик (≈6 реплик, рабочая память).
- Окна красивее: шире, аватар Квантика в шапке, мягкая анимация.
- Управление помощником вынесено в отдельный раздел админки «Помощник Квантик»
(системный вкл/выкл + модель/ключ/тест/RAG/кнопки экзамена/статистика/качество);
из раздела «Игры» конфиг убран.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Идентичность: вопросы про модель/нейросеть/провайдера/системный промпт
отбиваются шаблонно (META_RE, без вызова LLM) + запрет в системном промпте.
- Кнопки «Подсказка»/«Спросить Квантика» на карточках экзамена скрыты по
умолчанию; включаются тумблером в админке (assistant_exam_buttons →
examButtons в /context → класс html.asst-exam-on открывает кнопки).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- RAG: индексатор scripts/index-textbooks.js → textbook_chunks (миграция 063);
ask() подмешивает релевантные куски учебников (LIKE-скоринг). Покрывает
учебники со статическим текстом; JS-рендеримые — через контекст страницы.
Админка: тумблер RAG + кнопка «Переиндексировать» + число фрагментов.
- Кэш ответов (assistant_cache, 7 дней, только «чистые» вопросы без контекста/
истории) + суточный счётчик (assistant_usage: ИИ/кэш/FAQ) в админке.
- Режим учителя: роль в /context, системный промпт для учителей (задания,
план урока, учительские инструменты), подсказки-чипы для учителей.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Отдельный фича-флаг 'assistant' (вместо reuse 'pet'): админ может включать/
выключать помощника в Управление → фичи, независимо от питомца. Дефолт ON.
- FAQ расширен (~50 -> ~60): профиль/пароль, колоды/массовый импорт/SRS,
прогресс по предмету, поиск, экзамен9, питомец, «без класса», «о чём спросить».
- В «Спроси Квантика» — чипы с примерами вопросов (что можно спросить).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The feature_classroom_enabled flag was fully wired in backend
(classroom/sessions.js:11-14 returns 403 when '0', initialized in
legacy-migrate.js:870 to '1') but had no UI control — admin could
only flip it via direct SQL.
- adminController.updateFeatures: classroom was ALREADY in allowed list
- admin/sections/games.js: new toggle row with video icon added to GAME_FEATURES
- js/api.js hideDisabledFeatures: classroom path mapping added ('/classroom')
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace ~3500L admin.js monolith with thin orchestrator (~700L) +
14 IIFE-wrapped per-section modules under /js/admin/sections/.
Section modules expose AdminSections.<name>.init/reload (lazy init via
switchTab/router) and re-expose onclick handlers via window.X for
backward compat. Shared helpers (MODES/DIFFS, fmtDate, pctClass,
renderMath, qTypeBadge, pagination) live in /js/admin/_shared.js
exposed on window.AdminCtx.
switchTab now dispatches to AdminSections via ROUTE_TO_SECTION map;
non-extracted system tabs (topics/audit/errors/health/classroom/avatars)
remain inline in admin.js. user-panel overlay markup untouched — Phase 6
will remove it.