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>
1 parent d95a217 commit a99057f5e52cac0717ca47b2568d2000bac50e49
@root root authored 10 hours ago
Showing 16 changed files
View
backend/alembic/versions/a1f2c3d4e5f6_xp_events_table.py
View
backend/alembic/versions/b7e4d5c6a8f9_xp_rarity_via_options.py 0 → 100644
View
backend/app/api/tasks.py
View
backend/app/api/xp.py
View
backend/app/models.py
View
backend/app/schemas.py
View
backend/app/services/xp.py
View
backend/tests/test_xp.py
View
docs/TZ.md
View
frontend/src/api.ts
View
frontend/src/gamification.ts
View
frontend/src/locales/en.ts
View
frontend/src/locales/ru.ts
View
frontend/src/locales/uk.ts
View
frontend/src/views/GardenView.vue
View
frontend/src/views/OptionsView.vue