[backend][B] MAX: привязка пациента, очередь уведомлений и серверный API #82
Notifications
Due Date
No due date set.
Blocks
Depends on
#83 [bot][A] MAX: webhook, отправка напоминаний и инструкция подключения
MedITron/PTSRaiAgent
#81 [contract] MAX: настройки и жизненный цикл отключённой по умолчанию интеграции
MedITron/PTSRaiAgent
Reference: MedITron/PTSRaiAgent#82
Reference in New Issue
Block a user
Описание
Подготовить только серверную часть интеграции MAX. Отдельные identity-таблицы для привязок, одноразовых кодов, дедупликации и очереди. API статуса/подключения/отключения через Bearer; явное согласие на привязку, проверка действующего согласия и совершеннолетия. Коды ограничены по времени, токен пациента не попадает в ссылку. Подписка отключается отдельно от Telegram. Очередь переживает перезапуск, имеет повторы и защиту от одновременной обработки. Файлы: app/db/max_notifications.py, app/integrations/max_store.py, app/api/max_notifications.py, bootstrap/routes, tests/test_max. Интерфейс сайта и создание бота исключены.
Желаемый результат
Проверенная серверная заготовка, отключённая до внесения токена и адресов. Создание бота, личная верификация MAX и изменения web-интерфейса не входят в задачу.
Как проверить
make lint && make test; целевые тесты с MockTransport и отдельными SQLite-базами.
Лог выполнения
2026-10-04
Добавлены identity-таблицы привязок, хешей одноразовых кодов, webhook-квитанций и очереди. API подключения/отключения с текущей авторизацией пациента и проверкой согласия. Очередь с арендой, повторными попытками и сбором завершённых тестов после перезапуска. Никаких оценок/ответов в MAX. make lint test: 989 passed, 1 skipped.