ask() умеет вызывать OpenAI-совместимую модель: топ-FAQ как контекст, краткий
ответ на русском (source:'model'), таймаут 12с, при ошибке/без ключа — мягкий
откат на FAQ. Конфиг через ENV (ASSISTANT_LLM_URL/KEY/MODEL): дефолт — Groq
(бесплатный ключ), поддержан и локальный Ollama без ключа. Фронт показывает
ответ модели сверху, FAQ и поиск по платформе — ниже. .env.example дополнен.
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>
Контент: контекстные подсказки на ВСЕ разделы (PAGE_HINTS), «Совет дня» (ротация),
FAQ расширен ~10 -> ~50 записей по всем фичам. «Спроси Квантика» теперь ищет и по
платформе (LS.globalSearch) рядом с FAQ. Умный проактив: weakSubject (слабый предмет
по тестам, /api/assistant/context) -> «потренируемся» и daily-plan (план на сегодня из
квестов и карточек к повторению).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Подсказка тура уезжала за край на нижних пунктах сайдбара (Питомец), а оверлей
ловил клики → «ничего не сделать». Теперь: scrollIntoView ДО замера позиции,
подсказка жёстко клампится в пределах экрана (меряем реальный размер), и клик
по затемнённому фону закрывает тур (escape-hatch вдобавок к Esc).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Компаньон стоял на left:18px, поверх профиля внизу сайдбара (230/62px).
Теперь сдвигается правее сайдбара (.app-layout ~ .asst-root: 248px, collapsed
80px), на мобиле — к левому краю (шторка). Плавный transition при сворачивании.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Ф2: коачмарк-тур новичка по разделам (сайдбар + сам помощник), офер на
дашборде пока не пройден/не закрыт, повтор из приветствия и Assistant.tour().
activeLesson: контекст-эндпоинт отдаёт начатый незавершённый урок (как
«продолжить чтение»), добавлено проактивное правило «Продолжи …» → /course.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Плавающий помощник на всех страницах (через sidebar.js + inject в учебник):
контекстные подсказки по странице, проактивные напоминания из реальных данных
(домашка с дедлайном, карточки к повторению, серия под угрозой, квест дня),
поздравления (левелап/серия) и панель «Спроси Квантика» (поиск по FAQ + точка
расширения под локальную модель). Консервативно: дневной лимит, кулдауны,
«не показывать», выключатель в профиле. Лицо — pet-sprite, данные — /api/pet.
Бэкенд: миграция 062 (assistant_enabled + assistant_seen, cross-device «видел»),
GET /api/assistant/context, POST seen/dismiss/ask, PATCH settings — гейт фичи 'pet'.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>