lct-hack/scenarios/tickets/t01-1-fire-container.yaml
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

53 lines
2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Билет 1, вызов 1 (docs/spec/TICKETS.md). Ситуация и адрес — дословно из билета,
# факты и чек-лист выведены из ситуации: чего в строке нет, того звонящий не знает.
id: t01-1-fire-container
title: "Возгорание мусорного контейнера"
ticket: 1
position: 1
type: fire
level: L2
topics: [fires]
modes: [training, exam, self]
extends: checklists/fire.yaml
signs: [на улице, мусор, открытое пламя]
persona:
base: calm
arc:
- { stage: registration, mood: calm }
- { stage: interview, mood: calm }
first_line: "Здравствуйте. Тут мусорный контейнер горит, у депо."
facts:
- id: f_address
value: "Депо, около станции Москва-Пассажирская Киевская, длинное помещение недалеко от участкового пункта полиции"
refined: "Московская железная дорога, Киевская, 1 км, дом 2, строение 2"
reveal_on: { question: q_address }
refine_on: q_address_check
- id: f_what_burns
value: "горит мусорный контейнер, пламя открытое"
reveal_on: { question: q_what_burns }
- id: f_people
value: "пострадавших нет, рядом никого"
reveal_on: { question: q_people }
- id: f_caller
value: "Сидоров Иван Сергеевич, телефон 916-126-34-71"
reveal_on: { question: q_caller }
checklist:
- { id: q_address, fact: f_address }
- { id: q_address_check }
- { id: q_what_burns, fact: f_what_burns }
- { id: q_people, fact: f_people }
- { id: q_caller, fact: f_caller }
required_fields: [address, incident_type, description]
ground_truth:
address: "Московская железная дорога, Киевская, 1 км, дом 2, строение 2"
victims: 0
tree:
pregenerated: false