lct-16 и половина lct-19: разбор, отчёт, внешний монитор, эталон

Эталонный диалог собирается кодом из фактов и чек-листа: написанный
руками, он разошёлся бы с фактами при первой же правке сценария,
и курсанта оштрафовали бы за правильный ответ.

Отчёт: метрики фактом против норматива со ссылкой, отметка E1 на каждый
недобытый факт с эталонным вопросом, расхождение самооценки — что
курсант заметил сам, чего не заметил, что отметил зря. Не заметил —
самое ценное для разбора.

Внешний монитор — не отдельное приложение, а другой режим отрисовки тех
же событий: крупный таймер опроса, ход разговора, карточка, после оценки
разбор на весь экран.

Коррекция преподавателем сохраняет автооценку рядом: видно, что
скорректировано и кем.

Найдено: все метрики весили одинаково, и курсант, не задавший ни одного
вопроса, но заполнивший карточку руками, получал 87 из 100. Предварительные
веса (полнота опроса — 4) дают 74; окончательные утверждает методист,
вопрос записан в DEBRIEF.md.
This commit is contained in:
Ivan Gerasimov 2026-09-17 21:32:12 +03:00
commit fadfa3e479
20 changed files with 781 additions and 9 deletions

View file

@ -338,6 +338,13 @@ export interface SelfAssessment {
submitted_at: string;
}
/** Расхождение самооценки с автооценкой — отдельный материал для преподавателя. Курсант, не заметивший, что пропустил вопрос о пострадавших, — более важный случай, чем сама ошибка (docs/product/DEBRIEF.md). */
export interface SelfAssessmentDiff {
noticed?: Array<string>;
unnoticed?: Array<string>;
overcautious?: Array<string>;
}
/** Самооценка до показа автооценки. */
export interface SelfAssessmentSubmit {
type: "self_assessment.submit";
@ -367,6 +374,8 @@ export interface SessionReport {
missed_checklist: Array<string>;
hints_used: Array<HintUsage>;
self_assessment?: SelfAssessment | null;
self_assessment_diff?: SelfAssessmentDiff | null;
notes?: Array<InstructorNoteShown>;
score_auto: number;
score_final: number;
overridden_by?: string | null;