diff --git a/frontend/trainer.html b/frontend/trainer.html index dd9c75b..e420ac2 100644 --- a/frontend/trainer.html +++ b/frontend/trainer.html @@ -858,11 +858,12 @@ // Префикс «x =» и подсказка ввода зависят от типа задачи. function applyInputMode() { var k = cur && cur.kind; - var multi = (k === 'roots' || k === 'simplify' || k === 'inequality'); + var multi = (k === 'roots' || k === 'simplify' || k === 'inequality' || k === 'system'); var eqx = $('tr-eqx'); if (eqx) eqx.style.display = multi ? 'none' : ''; $('tr-input').placeholder = (k === 'roots') ? 'корни через ;' : (k === 'simplify') ? 'упрощённое выражение' : (k === 'inequality') ? ('напр. ' + (cur.answerVar || 'x') + ' < 3') + : (k === 'system') ? 'напр. x = 2; y = 3' : 'ответ'; var tog = $('tr-step-toggle'); if (tog) tog.style.display = canStep() ? '' : 'none'; var df = $('tr-difficulty'); if (df) df.style.display = (k === 'word') ? 'none' : ''; @@ -874,9 +875,10 @@ if (cur.kind === 'roots' && cur.answers) return 'Корни: ' + cur.answers.map(fmt).join('; '); if (cur.kind === 'simplify') return '= ' + (cur.answerExpr ? fmt(cur.answerExpr) : ''); if (cur.kind === 'inequality' && cur.answerRel) return (cur.answerVar || 'x') + ' ' + (REL_SYM[cur.answerRel.op] || cur.answerRel.op) + ' ' + fmt(cur.answerRel.bound); + if (cur.kind === 'system' && cur.pair) return (cur.answerVars || ['x', 'y']).map(function (v) { return v + ' = ' + fmt(cur.pair[v]); }).join(', '); return 'x = ' + fmt(cur.answer); } - function isLabelKind() { return cur.kind === 'roots' || cur.kind === 'simplify' || cur.kind === 'inequality'; } + function isLabelKind() { return cur.kind === 'roots' || cur.kind === 'simplify' || cur.kind === 'inequality' || cur.kind === 'system'; } function updateStats() { $('tr-solved').textContent = solved; $('tr-streak').textContent = streak; } function stepHtml(st, n) { @@ -1016,7 +1018,10 @@ onSolved(); } else { streak = 0; - fb.className = 'tr-feedback bad'; fb.innerHTML = ICON.bad + ' Неверно. Разбери решение и реши похожую.'; + // репетитор (C1): адресная подсказка по типовой ошибке, не выдавая ответ + var diag = TE.analyzeMistake ? TE.analyzeMistake(cur, r.value) : null; + var msg = diag ? diag.hint : 'Неверно. Разбери решение и реши похожую.'; + fb.className = 'tr-feedback bad'; fb.innerHTML = ICON.bad + ' ' + esc(msg); $('tr-card').classList.add('tr-wrong'); recordAnswer(false); submitAttempt(false); revealSolution();