diff --git a/backend/src/controllers/adminController.js b/backend/src/controllers/adminController.js index 1a5197b..301c4f6 100644 --- a/backend/src/controllers/adminController.js +++ b/backend/src/controllers/adminController.js @@ -1013,6 +1013,12 @@ function buildSystemKb() { chunks.push({ title: m.name, text: `Модуль «${m.name}» — ${e ? 'ВКЛЮЧЁН и доступен' : 'ВЫКЛЮЧЕН (не предлагать ученику)'}. ${m.desc}${m.url ? ' Раздел: ' + m.url + '.' : ''}` }); }); chunks.push({ title: 'Доступные модули', text: `Сейчас на платформе ВКЛЮЧЕНЫ разделы: ${on.join(', ')}.` + (off.length ? ` ВЫКЛЮЧЕНЫ (о них не рассказывать и не предлагать): ${off.join(', ')}.` : '') }); + // авто-подхват НОВЫХ модулей: любой фича-флаг, которого нет в каталоге (assistant — это сам помощник, пропускаем) + const known = new Set(MODULE_CATALOG.map(m => m.key).filter(Boolean)); + Object.keys(flags).forEach(k => { + if (known.has(k) || k === 'assistant') return; + chunks.push({ title: 'Функция: ' + k, text: `Функция платформы «${k}» — ${flags[k] !== false ? 'ВКЛЮЧЕНА' : 'ВЫКЛЮЧЕНА (не предлагать)'}.` }); + }); const doc = _aset('assistant_system_doc'); if (doc && doc.trim()) doc.split(/\n{2,}/).map(s => s.trim()).filter(Boolean).forEach(p => chunks.push({ title: 'Описание системы', text: p.slice(0, 1500) })); return chunks;