feat(assistant): Квантик-ассистент — Ф0/Ф1 + «Спроси» (правиловый движок)

Плавающий помощник на всех страницах (через 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>
This commit is contained in:
Maxim Dolgolyov
2026-06-04 16:17:37 +03:00
parent 26c0ac0e58
commit 3f8009c59d
8 changed files with 599 additions and 0 deletions
+16
View File
@@ -0,0 +1,16 @@
'use strict';
/* Квантик-ассистент. Все маршруты — под авторизацией (router-level), фича-гейт
* 'pet' навешивается при монтировании в server.js. */
const router = require('express').Router();
const { authMiddleware } = require('../middleware/auth');
const ctrl = require('../controllers/assistantController');
router.use(authMiddleware);
router.get('/context', ctrl.getContext);
router.post('/seen', ctrl.markSeen);
router.post('/dismiss', ctrl.dismiss);
router.patch('/settings', ctrl.setSettings);
router.post('/ask', ctrl.ask);
module.exports = router;