lct-12: детерминированная оценка по ГОСТ, таксономия, радар
Каждая метрика — факт против норматива со ссылкой: «94 с при ≤ 75 с, ГОСТ Р 22.7.03-2021», а не балл. По недобытому факту — отдельная отметка E1 с эталонным вопросом: в разборе нужен конкретный вопрос, не процент. Радар — проекция тех же метрик без пересчёта весов, коммуникация без судьи не рисуется нулём. Таймер, не остановленный событием, — провал, а не зачёт: время недоказуемо, операция не завершена. Метрика, которую нечем посчитать (полнота опроса без модели эмбеддингов), видна как «не посчитано» — молча выброшенная выглядела бы пройденной. Найдено противоречие: таймеры опроса (75 с) и оповещения ДДС (60 с) стартовали на ответе и останавливались передачей в ДДС — один отрезок, два лимита. Опрос за законные 70 с давал E3, а на экране курсанта краснел таймер посреди нормального разговора. События «опрос закончен» в контракте нет, поэтому dds_notify снят с учёта, вопрос записан в CONTRACT.md. KIO проверяет присваивание: card.dds = "03" клало в карточку сырую строку вместо кода ДДС, и падала уже оценка, далеко от места ошибки.
This commit is contained in:
parent
7c97310938
commit
f01f2dab76
9 changed files with 489 additions and 7 deletions
25
backend/app/scoring/taxonomy.py
Normal file
25
backend/app/scoring/taxonomy.py
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
"""Какая метрика каким кодом ошибки и какой компетенцией размечается.
|
||||
|
||||
Это методика, а не вычисление: таблица читается глазами и сверяется
|
||||
с docs/product/METHODOLOGY.md. Считает метрики gost.py, сюда он только смотрит.
|
||||
"""
|
||||
|
||||
from app.domain.taxonomy import Competency, ErrorCode
|
||||
|
||||
#: Метрика → (код ошибки при провале, компетенция радара).
|
||||
METRIC_MAP: dict[str, tuple[ErrorCode, Competency]] = {
|
||||
"answer_time": (ErrorCode.E3, Competency.INTAKE),
|
||||
"callback": (ErrorCode.E3, Competency.INTAKE),
|
||||
"checklist_completeness": (ErrorCode.E1, Competency.INTERVIEW),
|
||||
"interview_time": (ErrorCode.E3, Competency.NORMS),
|
||||
"incident_type": (ErrorCode.E2, Competency.ROUTING),
|
||||
"dds_choice": (ErrorCode.E2, Competency.ROUTING),
|
||||
"address": (ErrorCode.E5, Competency.CARD),
|
||||
"victims_count": (ErrorCode.E5, Competency.CARD),
|
||||
"required_fields": (ErrorCode.E5, Competency.CARD),
|
||||
}
|
||||
|
||||
#: Вес детерминированного слоя в итоговой оценке. Остальное — LLM-судья
|
||||
#: на мягкие критерии (E4), и не больше (docs/arch/BACKEND.md).
|
||||
DETERMINISTIC_WEIGHT = 0.6
|
||||
JUDGE_WEIGHT = 0.4
|
||||
Loading…
Reference in a new issue