lct-01: контракт закрыт — координаты, обязательные поля, коды ошибок
Координаты были представлены дважды: кортежем в КИО и объектом в данных
ЭРА-ГЛОНАСС. Теперь Coords {lat, lon} везде — в кортеже не видно, где
широта, и ошибка всплывает на карте у диспетчера, а не в типах.
required_fields едет в call.incoming и session.snapshot: обязательность
полей задаёт сценарий, без списка АРМ не подсветит незаполненное поле,
и курсант узнаёт о неполноте карточки только из разбора.
Канал error получил коды (ErrorKind, восемь значений) — фронт разбирает
код, а не текст сообщения. Имя не ErrorCode: оно занято таксономией E1–E6,
два одинаковых имени дали бы коллизию в generated.ts.
Добавлены поля, которые спрашивает чек-лист, а записать было некуда:
куда идёт дым, уехал ли нарушитель, код домофона.
Документы догнали код: mkh → gkh, payload transcript.append с якорем ref,
причина director у tts.cancel, attempt и stopped у таймеров.
This commit is contained in:
parent
5844b374ad
commit
59d5a6a26d
5 changed files with 106 additions and 17 deletions
|
|
@ -15,6 +15,17 @@ from pydantic import BaseModel, Field
|
|||
from app.domain.classifiers import DDSCode, IncidentType
|
||||
|
||||
|
||||
class Coords(BaseModel):
|
||||
"""Координаты одним представлением на весь контракт.
|
||||
|
||||
Именованные поля, а не кортеж: в `[55.75, 37.61]` невозможно увидеть,
|
||||
где широта, а где долгота, и ошибка всплывёт на карте, а не в типах.
|
||||
"""
|
||||
|
||||
lat: float
|
||||
lon: float
|
||||
|
||||
|
||||
class ResponseStatus(StrEnum):
|
||||
REGISTERED = "registered"
|
||||
TRANSFERRED = "transferred"
|
||||
|
|
@ -30,6 +41,7 @@ class FireDetails(BaseModel):
|
|||
floors: int | None = None
|
||||
gasified: bool | None = None
|
||||
people_inside: bool | None = None
|
||||
smoke_spread: str | None = None # куда идёт дым — пункт чек-листа 01
|
||||
|
||||
|
||||
class PoliceDetails(BaseModel):
|
||||
|
|
@ -37,6 +49,7 @@ class PoliceDetails(BaseModel):
|
|||
|
||||
offence_kind: str | None = None
|
||||
suspects: str | None = None
|
||||
suspect_fled: bool | None = None # уехал ли нарушитель — пункт чек-листа 02
|
||||
vehicle: str | None = None
|
||||
|
||||
|
||||
|
|
@ -80,7 +93,8 @@ class KIO(BaseModel):
|
|||
building: str | None = None
|
||||
entrance: str | None = None
|
||||
floor: str | None = None
|
||||
coords: tuple[float, float] | None = None
|
||||
intercom_code: str | None = None # спрашивается чек-листом 03, без него скорая стоит у двери
|
||||
coords: Coords | None = None
|
||||
|
||||
# Происшествие
|
||||
incident_type: IncidentType | None = None
|
||||
|
|
|
|||
Loading…
Reference in a new issue