|
feat: прокачка геймификации — тиры ачивок, редкие растения, история (ТЗ 0.9)
- Редкие растения: редкость решается при закрытии по весу задачи (epic — только крупные, rare — шанс растёт с XP), хранится в xp_events.rarity; в саду — золото + бейдж (sparkle/crown), PATCH отдаёт X-Plant-Rarity - Связка с «3 вариантами» (3.9): PATCH принимает earned_via="options", xp_events.via_options, заголовок X-Options-Close; тост «выбрал и сделал» - Празднование: «золотое» конфетти (56 частиц) на редкости/крупные закрытия, тост с припиской о редком растении - GET /api/xp/events — события начисления (для сада: редкости, счётчик, история) - Сад: названия уровней (ботанические звания), «последний росток», история закрытий по месяцам (12 мес), ачивки с тирами I/II/III + новые исследователи (Спринтер, Разносторонний, Марафонец, Дедлайн-босс, Выбрал и сделал) - Локали ru/en/uk, ТЗ 0.9 (п. 3.13 дополнен) Co-Authored-By: Claude Code <noreply@anthropic.com> |
|---|
|
|
| backend/alembic/versions/a1f2c3d4e5f6_xp_events_table.py |
|---|
| backend/alembic/versions/b7e4d5c6a8f9_xp_rarity_via_options.py 0 → 100644 |
|---|
| backend/app/api/tasks.py |
|---|
| backend/app/api/xp.py |
|---|
| backend/app/models.py |
|---|
| backend/app/schemas.py |
|---|
| backend/app/services/xp.py |
|---|
| backend/tests/test_xp.py |
|---|
| docs/TZ.md |
|---|
| frontend/src/api.ts |
|---|
| frontend/src/gamification.ts |
|---|
| frontend/src/locales/en.ts |
|---|
| frontend/src/locales/ru.ts |
|---|
| frontend/src/locales/uk.ts |
|---|
| frontend/src/views/GardenView.vue |
|---|
| frontend/src/views/OptionsView.vue |
|---|