Сад со слайда 13: «Любая полезная активность растит сад». GET /api/v1/me/{token}/garden считает сад детерминированно из уже существующих строк: отметки «Принял(а)» по дозам, чек-ины и дневник, завершённые опросы. Новой таблицы и миграции нет (ADR-003).
Правила — config/garden.yaml: очки, дневной лимит по каждому типу, шаг роста (10 очков), растения растут по очереди (4 стадии), названия стадий.
Принципы «без давления»: очки только прибавляются, пропуск ничего не отнимает; настроение и баллы шкал на рост не влияют; сравнений нет; сад видит только пациент.
«Сегодня» берётся из демо-часов. Опрос в чек-листе дня появляется только после выполнения, чтобы пустой день не выглядел «пропуском».
Андрей в сиде на 12-м дне: 66 очков, первый цветок распустился, второй растёт.
## Что меняется
Сад со слайда 13: «Любая полезная активность растит сад». `GET /api/v1/me/{token}/garden` считает сад детерминированно из уже существующих строк: отметки «Принял(а)» по дозам, чек-ины и дневник, завершённые опросы. Новой таблицы и миграции нет (ADR-003).
- Правила — `config/garden.yaml`: очки, дневной лимит по каждому типу, шаг роста (10 очков), растения растут по очереди (4 стадии), названия стадий.
- Принципы «без давления»: очки только прибавляются, пропуск ничего не отнимает; настроение и баллы шкал на рост не влияют; сравнений нет; сад видит только пациент.
- «Сегодня» берётся из демо-часов. Опрос в чек-листе дня появляется только после выполнения, чтобы пустой день не выглядел «пропуском».
- Андрей в сиде на 12-м дне: 66 очков, первый цветок распустился, второй растёт.
Closes #118
## Зона
B
## Как проверить
`uv run pytest tests/test_services_garden.py` · `make seed` → `curl localhost:8000/api/v1/me/<token Андрея>/garden`.
## Чек-лист
- [x] rebase на origin/dev
- [x] make lint + make test зелёные (1071 passed)
- [x] лог в issue
- [x] нет ПДн в логах, нет секретов
- [ ] вычитка правил и текстов психиатром — #120
🤖 Generated with [Claude Code](https://claude.com/claude-code)
GET /api/v1/me/{token}/garden computes the garden on the fly from taken doses,
check-ins/diary and finished questionnaires (no new table). Rules and texts in
config/garden.yaml: per-day caps, points only add up, answers never count.
Refs #118
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Что меняется
Сад со слайда 13: «Любая полезная активность растит сад».
GET /api/v1/me/{token}/gardenсчитает сад детерминированно из уже существующих строк: отметки «Принял(а)» по дозам, чек-ины и дневник, завершённые опросы. Новой таблицы и миграции нет (ADR-003).config/garden.yaml: очки, дневной лимит по каждому типу, шаг роста (10 очков), растения растут по очереди (4 стадии), названия стадий.Closes #118
Зона
B
Как проверить
uv run pytest tests/test_services_garden.py·make seed→curl localhost:8000/api/v1/me/<token Андрея>/garden.Чек-лист
🤖 Generated with Claude Code
GET /api/v1/me/{token}/garden computes the garden on the fly from taken doses, check-ins/diary and finished questionnaires (no new table). Rules and texts in config/garden.yaml: per-day caps, points only add up, answers never count. Refs #118 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>