lct-hack/backend/tests
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Ivan Gerasimov b8dc39fd7d feat: исход вызова — не каждый звонок заканчивается карточкой (lct-36)
Весь продукт стоял на допущении «звонок → карточка → выезд». В билетах
заказчика оно нарушается намеренно: «поругался с продавцом Мегафон» — справка,
а вызов из Волгоградской области передаётся в систему-112 другого субъекта.
Курсант, заведший карточку на такой вызов, занял расчёт зря, и прежняя оценка
этого не видела — наоборот, награждала за полноту заполнения.

- Outcome в домене, поле outcome в сценарии, событие call.resolve у курсанта
  и две кнопки на АРМ. Отдельное действие, а не «положил трубку»: система
  должна отличить осознанное решение от брошенного вызова.
- Метрика outcome (E2, вес 3 — лишний выезд дороже неточного признака).
- Там, где карточка не заводится, метрики карточки не считаются вовсе.
  Полнота опроса считается: передать вызов не значит не опрашивать.
- call.resolve останавливает норматив опроса, как и передача карточки.

Попутно (lct-34): библиотека стала вложенной — scenarios/tickets/, поля
ticket и position, чек-листы для медицины, полиции и ЖКХ. Перенесён билет 1
целиком: три вызова, три классификатора, третий — из другого региона.

Найдено по ходу: модификаторы списка оповещения не были подключены ни к чему.
В классификаторе скорая добавляется к массовой драке признаком «пострадавшие»,
но взять его было неоткуда. Теперь модификаторы берутся из карточки —
victims_count, life_threat, evacuation_needed, fire.gasified, — и список
оповещения пересобирается при правке любого из этих полей.

161 тест зелёный (13 новых), make typecheck чистый.
2026-09-20 08:33:30 +03:00
..
test_db.py fix: test_db.py вешал make test, когда Postgres недоступен 2026-09-18 16:28:47 +03:00
test_domain.py lct-01: контракт закрыт — координаты, обязательные поля, коды ошибок 2026-09-15 19:48:56 +03:00
test_ekp.py feat: исход вызова — не каждый звонок заканчивается карточкой (lct-36) 2026-09-20 08:33:30 +03:00
test_llm.py lct-07 и lct-19: звонящий на LLM, офлайн-таблица, предгенерация 2026-09-17 23:50:19 +03:00
test_outcomes.py feat: исход вызова — не каждый звонок заканчивается карточкой (lct-36) 2026-09-20 08:33:30 +03:00
test_profile.py lct-18: профиль курсанта — радар, история попыток, дельта 2026-09-17 21:42:12 +03:00
test_reference.py lct-16 и половина lct-19: разбор, отчёт, внешний монитор, эталон 2026-09-17 21:32:12 +03:00
test_refinement.py feat: уточнение адреса — место происшествия не равно адресу заявителя (lct-35) 2026-09-19 20:26:49 +03:00
test_scenarios.py lct-03 и lct-04: журнал сессий и библиотека сценариев 2026-09-15 20:10:05 +03:00
test_scoring.py feat: классификатор ЕКП — признаки вместо выбора службы (lct-32) 2026-09-19 20:11:50 +03:00
test_slots.py lct-07 и lct-19: звонящий на LLM, офлайн-таблица, предгенерация 2026-09-17 23:50:19 +03:00
test_slots_e5.py lct-07 (без LLM): слот-автомат, персона, звонящий на заготовках, make repl 2026-09-17 13:57:43 +03:00
test_station.py feat: статусы реагирования на АРМ ДДС и ошибки диспетчера D1–D6 (lct-33) 2026-09-20 08:23:55 +03:00
test_statuses.py feat: статусы реагирования на АРМ ДДС и ошибки диспетчера D1–D6 (lct-33) 2026-09-20 08:23:55 +03:00
test_tree.py lct-07 и lct-19: звонящий на LLM, офлайн-таблица, предгенерация 2026-09-17 23:50:19 +03:00
test_voice_pipeline.py lct-06: голосовой контур VAD → STT → звонящий → TTS, с перебиванием 2026-09-17 15:04:17 +03:00
test_voice_text.py lct-06: голосовой контур VAD → STT → звонящий → TTS, с перебиванием 2026-09-17 15:04:17 +03:00
test_ws.py lct-22: пульт директив — преподаватель ведёт ситуацию 2026-09-17 21:38:43 +03:00