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
|
|
@ -7,7 +7,9 @@
|
|||
import type {
|
||||
InstructorToServer,
|
||||
ServerToObserver,
|
||||
ServerToStation,
|
||||
ServerToTrainee,
|
||||
StationToServer,
|
||||
TraineeToServer,
|
||||
} from "@/shared/types/generated";
|
||||
|
||||
|
|
@ -104,6 +106,13 @@ export const callChannel = (sessionId: string, options?: ChannelOptions<ServerTo
|
|||
export const observeChannel = (sessionId: string, options?: ChannelOptions<ServerToObserver>) =>
|
||||
new Channel<ServerToObserver, never>(`/ws/observe/${sessionId}`, options);
|
||||
|
||||
/** Станция ДДС: только JSON, аудио здесь нет вообще. */
|
||||
export const stationChannel = (
|
||||
sessionId: string,
|
||||
role: string,
|
||||
options?: ChannelOptions<ServerToStation>,
|
||||
) => new Channel<ServerToStation, StationToServer>(`/ws/station/${sessionId}?role=${role}`, options);
|
||||
|
||||
/** Преподаватель: только передача, входящих в этом канале нет. */
|
||||
export const controlChannel = (sessionId: string, options?: { onStatus?: (status: ChannelStatus) => void }) =>
|
||||
new Channel<never, InstructorToServer>(`/ws/control/${sessionId}`, options);
|
||||
|
|
|
|||
|
|
@ -1,11 +0,0 @@
|
|||
// Заглушка экрана. Каждая ссылается на карточку, которая её закрывает.
|
||||
export function Stub({ title, card }: { title: string; card: string }) {
|
||||
return (
|
||||
<main className="stub">
|
||||
<h1>{title}</h1>
|
||||
<p>
|
||||
Экран не реализован. Карточка: <code>tasks/{card}.md</code>
|
||||
</p>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
Loading…
Reference in a new issue