dana-medical-site/deploy/booking-service-safety.md

47 lines
3.7 KiB
Markdown
Raw Permalink 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.

# Услуги в публичной записи: временная защита от неверного справочника
Проверка 23.10.2026: в `onec_services` у 175 врачей разных направлений сохранён
один и тот же набор из 18 идентификаторов/названий (3150 строк). В нём смешаны
анализы, рентген, хирургические и стоматологические процедуры. Это не
подтверждённая связь «врач → выполняемая услуга». Точное место, где формируется
неверный список в действующем отправителе 1С, этой проверкой не установлено.
До сверки с 1С публичный `GET /api/v1/doctors/{slug}/slots` возвращает `services: []`,
форма не предлагает услуги и не отправляет `service_id`. Непустой `service_id`
из старой вкладки отклоняется до создания записи с кодом `service_unavailable`.
Выбор врача, реального свободного окна, филиала и очередь записи не меняются.
Импортированный справочник и прошлые записи не удаляются и не переписываются.
Для возвращения выбора услуг нужны проверенные привязки к конкретному врачу
из 1С, проверка этих привязок перед созданием записи и регрессионные примеры
для стоматолога, ЛОРа и хирурга. Нельзя заменять их общим прайсом клиники или
угадывать исполнителя по ключевым словам. Это ограничение снимается отдельным
проверенным изменением; один новый снимок 1С сам по себе его не отключает.
## Проверка
- `node web/scripts/test-booking-service-safety.mjs` запускать из `web/`,
используя путь `scripts/test-booking-service-safety.mjs`.
- `go test ./internal/api -run TestAppointmentRejectsUnverifiedService` —
отказ до обращения к БД для непроверенной услуги.
- `TestDoctorServicesQuarantine` — отдельная временная БД через
`DANA_AUTONOMY_TEST_DSN`. Проверяет пустой публичный список, сохранность
сырого импорта и создание pending-записи без `service_id`. Не запускать с
DSN продакшна.
- На сайте выбрать Шугаева и свободное время: в форме контактов нет списка
услуг; не создавать проверочную запись на продакшне.
## Откат
Предыдущий образ: `dana-medical-api:before-booking-service-safety-20261023`.
Из каталога `/home/mikail/dana-medical`:
```sh
docker tag dana-medical-api:before-booking-service-safety-20261023 dana-medical-api:latest
docker compose -p dana-medical -f docker-compose.prod.yml up -d --no-deps api
```
Проверить `/api/v1/health`. Такой откат возвращает и неверный список услуг;
использовать только при регрессии и затем согласовать исправление. БД и
медиа не откатывать, контейнер bridge не запускать.