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

3.7 KiB
Raw Permalink Blame History

Услуги в публичной записи: временная защита от неверного справочника

Проверка 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:

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 не запускать.