feat(assistant): RAG по учебникам, кэш+счётчик, режим учителя
- 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>
This commit is contained in:
@@ -1051,7 +1051,7 @@ window.LS = {
|
||||
listMaterials, saveMaterial, updateMaterial, deleteMaterial, shareMaterial, getActivity,
|
||||
createMaterialCollection, updateMaterialCollection, deleteMaterialCollection,
|
||||
assistantContext, assistantSeen, assistantDismiss, assistantSettings, assistantAsk, assistantFlashcards,
|
||||
adminGetAssistant, adminSaveAssistant, adminTestAssistant,
|
||||
adminGetAssistant, adminSaveAssistant, adminTestAssistant, adminReindexTextbooks,
|
||||
fcListDecks, fcCreateDeck, fcAddCard,
|
||||
escapeHtml, esc,
|
||||
parseDate, fmtRelTime, safeHref,
|
||||
@@ -1278,6 +1278,7 @@ async function assistantFlashcards(text, title) { return req('POST', '/assistant
|
||||
async function adminGetAssistant() { return req('GET', '/admin/assistant'); }
|
||||
async function adminSaveAssistant(d) { return req('PUT', '/admin/assistant', d); }
|
||||
async function adminTestAssistant(d) { return req('POST', '/admin/assistant/test', d || {}); }
|
||||
async function adminReindexTextbooks() { return req('POST', '/admin/assistant/reindex', {}); }
|
||||
async function fcListDecks() { return req('GET', '/flashcards/decks'); }
|
||||
async function fcCreateDeck(d) { return req('POST', '/flashcards/decks', d); }
|
||||
async function fcAddCard(deckId, d) { return req('POST', `/flashcards/decks/${deckId}/cards`, d); }
|
||||
|
||||
Reference in New Issue
Block a user