diff --git a/backend/app/api/ws/station.py b/backend/app/api/ws/station.py index 596341c..e3e52a9 100644 --- a/backend/app/api/ws/station.py +++ b/backend/app/api/ws/station.py @@ -3,9 +3,9 @@ Учебный исходящий звонок бригаде имитируется событиями JSON. Для целевого локального прототипа не нужна внешняя телефония или аудиомодель. -Самая ценная механика цепочки — `card.bounce`: диспетчер видит, что не указан -этаж, и отбивает карточку обратно. Неполнота КИО перестаёт быть процентом -в отчёте и становится сорванным выездом с конкретной причиной. +`card.bounce` сервер отклоняет: ДДС не возвращает карточку в 112 при принятии +и не правит её поля. Об ошибке, которую вскрыл доклад бригады с места, +диспетчер сообщает в 112 по телефону (ответ заказчика, П.3). Правила пульта — в `DdsDesk.apply`; здесь разбор команды и рассылка итога. Отсев повторов и операция хранилища — в `run_command`. diff --git a/backend/app/session/dds.py b/backend/app/session/dds.py index 48fc334..d5f09e5 100644 --- a/backend/app/session/dds.py +++ b/backend/app/session/dds.py @@ -591,8 +591,13 @@ class DdsDesk(BaseModel): self.finish_work() outcome.finished = True case "card.bounce": + # Возврата карточки на этапе принятия нет; об ошибке, которую + # вскрыл доклад бригады с места, ДДС сообщает в 112 по телефону + # (ответ заказчика, П.3). return _refused( - "ДДС не проверяет заполнение карточки: замечания передаёт служба контроля 112" + "Карточку не возвращают в 112 при принятии и не правят на АРМ ДДС. " + "Если ошибка вскрылась по докладу бригады с места — сообщите о ней " + "в 112 по телефону" ) case "zone.decision": previous = next( diff --git a/backend/tests/test_dds_desk_apply.py b/backend/tests/test_dds_desk_apply.py index fa6c561..86d7d0c 100644 --- a/backend/tests/test_dds_desk_apply.py +++ b/backend/tests/test_dds_desk_apply.py @@ -175,7 +175,8 @@ def test_bounce_is_refused_in_favour_of_112_control(): outcome = state.desk.apply(CardBounce(missing_fields=["floor"]), state) assert outcome.error == ( - "ДДС не проверяет заполнение карточки: замечания передаёт служба контроля 112") + "Карточку не возвращают в 112 при принятии и не правят на АРМ ДДС. " + "Если ошибка вскрылась по докладу бригады с места — сообщите о ней в 112 по телефону") def test_refusals_leave_desk_untouched(): diff --git a/backend/tests/test_station.py b/backend/tests/test_station.py index e029f76..d367941 100644 --- a/backend/tests/test_station.py +++ b/backend/tests/test_station.py @@ -123,7 +123,7 @@ def test_dds_cannot_return_card_for_112_quality_control(client): station.send_json({"type": "card.bounce", "missing_fields": ["floor", "victims_count"], "comment": "куда ехать без этажа"}) error = read_until(station, "error") - assert "служба контроля 112" in error["message"] + assert "сообщите о ней в 112 по телефону" in error["message"] assert state.bounced_fields == [] trainee.send_json({"type": "call.hangup"}) wait_for(lambda: state.score is not None) diff --git a/frontend/src/pages/dds/Dds.tsx b/frontend/src/pages/dds/Dds.tsx index 59267b6..89f1f7d 100644 --- a/frontend/src/pages/dds/Dds.tsx +++ b/frontend/src/pages/dds/Dds.tsx @@ -669,7 +669,7 @@ export function Dds() { onClick={() => { channel.current?.send({ type: "zone.decision", in_zone: true }); }}>Наша -

ДДС не исправляет и не возвращает заполненную карточку: её качество контролируют оператор и служба контроля 112.

+

Карточку не правят на АРМ ДДС и не возвращают в 112 при принятии. Если бригада с места доложит о расхождении с карточкой — сообщите об ошибке в 112 по телефону.