docs: bootstrap repo — CLAUDE.md, spec, ADR, TenVex-style workflow
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
# CLAUDE.md — Руководство для Claude Code
|
||||
|
||||
## ⚡ ПЕРВОЕ ДЕЙСТВИЕ В КАЖДОЙ СЕССИИ
|
||||
|
||||
```bash
|
||||
set -a; . ./.env 2>/dev/null; set +a
|
||||
```
|
||||
Переменные: `GITEA_USER` (кто я), `GITEA_TOKEN` (секрет — **в чат не печатать**), `GITEA_URL`, `GITEA_REPO`.
|
||||
|
||||
---
|
||||
|
||||
## Что мы строим
|
||||
|
||||
Хакатон MedITron, кейс SberMed AI «ИИ-помощник пациента». **Сопровождение восстановления между визитами к врачу** при ПТСР и депрессии (фокус — ветераны СВО и их семьи): мониторинг после обращения + управление приёмом лекарств. Общее ядро + модули `veteran` / `depression` / `family`, включаемые скринингом.
|
||||
ИИ не ставит диагнозы и не лечит: LLM извлекает данные и формулирует реплики, **риск и алерты решают детерминированные правила**, клинические решения — врач.
|
||||
|
||||
**Дедлайн: пн 05.10.2026, 13:00 МСК.** Критерии жюри: работоспособность, функциональность, дизайн, клинико-экономика, клиентский путь.
|
||||
|
||||
Язык общения — русский. Код, идентификаторы, коммиты — английский. Тексты для пациента — в `config/texts/`, не в коде.
|
||||
|
||||
---
|
||||
|
||||
## Карта документации
|
||||
|
||||
> Задачи — в [Gitea Issues](https://gitea.24studbank.ru/MedITron/PTSRaiAgent/issues), не в файлах.
|
||||
|
||||
| Файл | О чём |
|
||||
|---|---|
|
||||
| [`docs/info/SPEC.md`](docs/info/SPEC.md) | **Исходная спецификация:** право (152-ФЗ, 323-ФЗ), архитектура, модель данных, шкалы, LLM-контракт, FSM |
|
||||
| [`docs/info/CLINICAL_MODULES.md`](docs/info/CLINICAL_MODULES.md) | Ядро + модули: шкалы, расписания, триггеры, обоснования |
|
||||
| [`docs/DECISIONS.md`](docs/DECISIONS.md) | ADR — отступления от SPEC. **При конфликте важнее SPEC** |
|
||||
| [`docs/product/`](docs/product/) | Идеи команды, демо-персона и сценарий, требования хакатона |
|
||||
| [`docs/source/`](docs/source/) | Кейс SberMed AI, концепция и CJM (pdf + txt) |
|
||||
| [`docs/dev/WORKFLOW.md`](docs/dev/WORKFLOW.md) | **Регламент:** зоны, жизненный цикл, worktree, ветки, PR |
|
||||
| [`docs/dev/GITEA_API.md`](docs/dev/GITEA_API.md) | Gitea API: issue, PR, зависимости |
|
||||
| [`docs/dev/ISSUE_TEMPLATE.md`](docs/dev/ISSUE_TEMPLATE.md) | Шаблон тела issue |
|
||||
|
||||
---
|
||||
|
||||
## Guardrails
|
||||
|
||||
Мнемоника: **обезличь, проверь безопасность, реши правилом, спроси часы, запиши в аудит.**
|
||||
|
||||
| # | Правило | Где |
|
||||
|---|---|---|
|
||||
| 1 | В LLM — только текст после `scrub()`, только через `app/llm/gateway.py` | `app/core/privacy.py` |
|
||||
| 2 | Safety-проверка до LLM на каждом входящем; `acute` → фиксированный скрипт, LLM не вызывается | `app/core/safety.py` |
|
||||
| 3 | Скоринг и алерты детерминированы, «действия агента» — выход правил (ADR-007) | `app/core/rules.py`, `config/rules.yaml` |
|
||||
| 4 | Время — только `app.core.clock` (демо-часы, ADR-005) | `app/core/clock.py` |
|
||||
| 5 | identity и clinical — разные БД, связь через HMAC-токен; clinical-код не импортирует identity | `app/db/` |
|
||||
| 6 | Каждое обращение врача к данным → `audit_log` | `app/db/audit.py` |
|
||||
| 7 | Пороги, шкалы, тексты, лексикон — в `config/` (ADR-008) | `config/` |
|
||||
| 8 | Только синтетика; логи без ПДн и без сырого текста; секреты только в `.env` | — |
|
||||
| 9 | Никаких зарубежных API: LLM = GigaChat или `mock`; офлайн по умолчанию (ADR-004) | `app/llm/` |
|
||||
| 10 | Одна задача = одна зона; `make lint && make test` перед PR | `docs/dev/WORKFLOW.md` |
|
||||
|
||||
---
|
||||
|
||||
## TL;DR — командная работа
|
||||
|
||||
1. **`.env` — первым делом.**
|
||||
2. **Задача = Issue в Gitea.** Нет issue — нет кода.
|
||||
3. **Зоны:** core / bot / backend / dashboard / devops / clinical / pitch / docs. В занятую чужую не лезь.
|
||||
4. **Задача = свой worktree** (`.claude/worktrees/<issue#>-<slug>`), ветка от `origin/dev` — до первого изменения. PR в `dev`; `main` — только человек.
|
||||
5. **Завершил → сразу push + PR**, после зелёного CI можно мержить самому (хакатон).
|
||||
6. **Лог** — в тело issue (`### YYYY-MM-DD`); архитектурные решения — в `docs/DECISIONS.md`.
|
||||
|
||||
---
|
||||
|
||||
## Запуск
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
make up # docker compose: postgres + app (API, бот) + dashboard; LLM_PROVIDER=mock по умолчанию
|
||||
make seed # синтетические пациенты и демо-сюжет
|
||||
make lint test
|
||||
```
|
||||
Дашборд и демо-консоль: http://localhost:8501 · API: http://localhost:8000/docs
|
||||
|
||||
> Telegram используется только для прототипа на синтетических данных; прод-канал — MAX / Госуслуги.
|
||||
Reference in New Issue
Block a user