feat(backend): API этапа 1 на реальных данных (#12) #66

Merged
Eleboba merged 1 commits from feat/12-api into dev 2026-10-04 12:38:14 +03:00
Owner

Что меняется

API этапа 1 на реальных данных вместо фикстур (пути/схемы app/api/schemas.py без изменений):

  • список пациентов врача: цвет по открытым алертам (ADR-006), PHQ-9/PCL-5, тренд, приверженность 7 дн., индекс риска прерывания терапии (правила, веса в app/api/doctor_views.py), день терапии, последнее событие; сортировка red→yellow→grey→green, затем риск;
  • карточка (ряды, дозы, алерты, план безопасности, саммари build_summary), 403 для чужого врача, аудит view_patient;
  • лента алертов (since_id/open_only), ack (+аудит), ack острого → doctor_ack в движок → пациент выходит из кризиса;
  • подключение пациента: identity + профиль + назначение + одноразовый код + deep link;
  • диалог: события → движок, outbox, история; демо: часы, reset (+scripts.seed_demo.reset() если есть), персоны по data/synthetic/*.jsonl.

Closes #12

Зона

Lane B (backend): app/api/routes.py, app/api/doctor_views.py, app/api/demo.py, tests/test_api_doctor.py, tests/test_api_dialog.py. Также заменён tests/test_contracts.py::test_api_fixture_routes (проверял фикстуры в роутерах).

Как проверить

make lint test; вручную: make up && make seed, GET /api/v1/doctors/doc-smirnova/patients.

Чек-лист

  • rebase на origin/dev
  • make lint + make test зелёные
  • лог в issue (### 2026-10-04)
  • нет ПДн в логах, нет реальных данных, нет секретов
  • общие файлы не трогались

🤖 Generated with Claude Code

## Что меняется API этапа 1 на реальных данных вместо фикстур (пути/схемы `app/api/schemas.py` без изменений): - список пациентов врача: цвет по открытым алертам (ADR-006), PHQ-9/PCL-5, тренд, приверженность 7 дн., индекс риска прерывания терапии (правила, веса в `app/api/doctor_views.py`), день терапии, последнее событие; сортировка red→yellow→grey→green, затем риск; - карточка (ряды, дозы, алерты, план безопасности, саммари `build_summary`), 403 для чужого врача, аудит `view_patient`; - лента алертов (since_id/open_only), ack (+аудит), ack острого → `doctor_ack` в движок → пациент выходит из кризиса; - подключение пациента: identity + профиль + назначение + одноразовый код + deep link; - диалог: события → движок, outbox, история; демо: часы, reset (+`scripts.seed_demo.reset()` если есть), персоны по `data/synthetic/*.jsonl`. Closes #12 ## Зона Lane B (backend): `app/api/routes.py`, `app/api/doctor_views.py`, `app/api/demo.py`, `tests/test_api_doctor.py`, `tests/test_api_dialog.py`. Также заменён `tests/test_contracts.py::test_api_fixture_routes` (проверял фикстуры в роутерах). ## Как проверить `make lint test`; вручную: `make up && make seed`, `GET /api/v1/doctors/doc-smirnova/patients`. ## Чек-лист - [x] rebase на origin/dev - [x] make lint + make test зелёные - [x] лог в issue (### 2026-10-04) - [x] нет ПДн в логах, нет реальных данных, нет секретов - [x] общие файлы не трогались 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Eleboba added 1 commit 2026-10-04 12:36:32 +03:00
feat(backend): API stage 1 on real data instead of fixtures
CI / ruff · pytest (pull_request) Successful in 1m25s
25728c4b31
Doctor list/card/alerts/ack/connect, dialog events/outbox/history and demo
controls now read the identity and clinical DBs. Rule-based discontinuation
risk index, trend, adherence; every doctor read is audited.

Refs #12

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Eleboba merged commit c4eab1ef66 into dev 2026-10-04 12:38:14 +03:00
Eleboba deleted branch feat/12-api 2026-10-04 12:38:15 +03:00
Sign in to join this conversation.