lct-20: АРМ диспетчера ДДС и цепочка 112 → ДДС
Возврат карточки — самая ценная механика цепочки: неполнота КИО перестаёт быть процентом в отчёте и становится сорванным выездом с конкретной причиной. В разборе это отметка E6: «не заполнено floor, victims_count — выезд сорван». Снимок карточки не меняется после передачи: оператор не дописывает задним числом поле, которое забыл. Тест правит карточку после передачи и проверяет, что в снимке этого нет. Диспетчер садится за АРМ, когда вызов уже идёт, — станция, подключённая после передачи, всё равно получает карточку. У станции нет аудио вообще: ни VAD, ни распознавания, ни синтеза.
This commit is contained in:
parent
38082e2af3
commit
ee2a526831
15 changed files with 439 additions and 13 deletions
|
|
@ -18,6 +18,7 @@ from app.scoring.taxonomy import METRIC_MAP, METRIC_WEIGHTS
|
|||
from app.session.timers import SessionTimers
|
||||
|
||||
SOURCE_BY_CODE = {
|
||||
"E6": FindingSource.CHAIN,
|
||||
"E1": FindingSource.SLOTS,
|
||||
"E2": FindingSource.GROUND_TRUTH,
|
||||
"E3": FindingSource.TIMERS,
|
||||
|
|
@ -110,6 +111,7 @@ def evaluate(
|
|||
timers: SessionTimers,
|
||||
revealed_facts: list[str] | None,
|
||||
end_reason: CallEndReason | None = None,
|
||||
bounced_fields: list[str] | None = None,
|
||||
) -> GostResult:
|
||||
"""Посчитать детерминированный слой по завершённому занятию.
|
||||
|
||||
|
|
@ -230,4 +232,15 @@ def evaluate(
|
|||
finding=f"Не заполнены обязательные поля: {', '.join(empty)}" if empty else None,
|
||||
)
|
||||
|
||||
# ── цепочка 112 → ДДС, E6 ──
|
||||
if bounced_fields:
|
||||
build.add(
|
||||
"dds_chain", "Карточка принята ДДС",
|
||||
f"возвращена на уточнение: {', '.join(bounced_fields)}",
|
||||
"карточка пригодна для выезда",
|
||||
passed=False,
|
||||
ref="цепочка 112 → ДДС",
|
||||
finding=f"Диспетчер вернул карточку: не заполнено {', '.join(bounced_fields)} — выезд сорван",
|
||||
)
|
||||
|
||||
return build.result
|
||||
|
|
|
|||
Loading…
Reference in a new issue