From ee740817a81313d7cf32622542c51f6b8bc1a54b Mon Sep 17 00:00:00 2001 From: Maxim Dolgolyov Date: Wed, 24 Jun 2026 22:51:10 +0300 Subject: [PATCH] =?UTF-8?q?fix(assistant):=20=D1=80=D1=83=D1=81=D1=81?= =?UTF-8?q?=D0=BA=D0=B8=D0=B5=20=D0=BD=D0=B0=D0=B7=D0=B2=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D1=82=D1=80=D1=83=D0=B4=D0=BD=D1=8B=D1=85=20=D1=82?= =?UTF-8?q?=D0=B5=D0=BC=20=D0=B2=20=D0=BF=D0=B0=D0=BC=D1=8F=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Темы экзамена в exam_tasks.topic хранятся англ. ключами (algebra, geometry, functions, ...). Добавлена карта _EXAM_TOPIC_RU; в _studentProfile экзаменные темы переводятся на русский перед слиянием с темами банка тестов. Co-Authored-By: Claude Opus 4.8 (1M context) --- backend/src/controllers/assistantController.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/backend/src/controllers/assistantController.js b/backend/src/controllers/assistantController.js index d4bf384..b16beac 100644 --- a/backend/src/controllers/assistantController.js +++ b/backend/src/controllers/assistantController.js @@ -153,6 +153,13 @@ function weakSubject(uid) { } /* ── Долгая память об ученике ─────────────────────────────────────────── */ +// Темы экзамена хранятся англ. ключами (exam_tasks.topic) — показываем по-русски. +const _EXAM_TOPIC_RU = { + algebra: 'Алгебра', equations: 'Уравнения и неравенства', planimetry: 'Планиметрия', + geometry: 'Геометрия', 'word-sequences': 'Текстовые задачи', numbers: 'Числа и вычисления', + trigonometry: 'Тригонометрия', stereometry: 'Стереометрия', functions: 'Функции', + theory: 'Теория вероятностей', expressions: 'Выражения и преобразования', advanced: 'Повышенной сложности' +}; // Производный профиль (без LLM) — из уже накопленных сигналов. function _studentProfile(uid) { const out = { weakSubjects: [], weakTopics: [], exam: null, streak: 0 }; @@ -184,9 +191,10 @@ function _studentProfile(uid) { WHERE ea.user_id = ? AND et.topic IS NOT NULL AND et.topic <> ''${forget ? ' AND ea.created_at > ?' : ''} GROUP BY et.topic HAVING attempts >= 3 `).all(...(forget ? [uid, forget] : [uid])).forEach(r => { - const c = cand[r.topic]; + const topic = _EXAM_TOPIC_RU[r.topic] || r.topic; + const c = cand[topic]; if (c) { c.attempts += r.attempts; c.correct += (r.correct || 0); } - else cand[r.topic] = { topic: r.topic, attempts: r.attempts, correct: r.correct || 0 }; + else cand[topic] = { topic: topic, attempts: r.attempts, correct: r.correct || 0 }; }); } catch (e) {} out.weakTopics = Object.values(cand)