Пачка 2 ревью: общий путь закрытия — MCP-награды и анти-дюп спавна
- Новый services/closing.py: handle_task_closed — спавн регулярной + XP +
  монеты + бонус уровня; используют и HTTP-API, и MCP-инструменты. Закрытие
  агентом теперь даёт те же награды, что и UI (ТЗ 3.5, 3.13, 3.10).
- Задача.spawned_at (+миграция): спавн — один раз на цепочку; раньше MCP
  спавнил следующий экземпляр при каждом обновлении закрытой задачи.
- Выход из done сбрасывает done_at (HTTP и MCP): повторное закрытие снова
  проходит через ветку закрытия без дублей наград (открытый вопрос ТЗ 7).
- MCP create_task: микронаграда за создание, как в HTTP-API; broadcast
  xp.changed (celebrate:true при закрытии, false при создании).
- Тесты: MCP-награды при закрытии и создании, спавн ровно один раз,
  un-done/повторное закрытие без дублей (HTTP и MCP). 109 passed.
  ТЗ 0.28.

Co-Authored-By: Claude Code <noreply@anthropic.com>
1 parent 7537193 commit 114bdc5025324a6ff4e65eca9ba958e6b6820198
@root root authored 4 hours ago
Showing 8 changed files
View
backend/alembic/versions/d5e6a7b8c9d0_task_spawned_at.py 0 → 100644
View
backend/app/api/tasks.py
View
backend/app/mcp_server.py
View
backend/app/models.py
View
backend/app/services/closing.py 0 → 100644
View
backend/tests/test_mcp.py
View
backend/tests/test_recurrence.py
View
docs/TZ.md