Мандат ИИ-агента: поле задачи, модель журнала, миграция (0.85)
- ТЗ 0.85: новая §3.20 «Мандат ИИ-агента: доступность, взятие, приёмка,
  журнал» (четыре части: флаг доступности задачи, аренда, приёмка,
  журнал) и правки §3.4 (плоскость приёмки рядом с raw/approved), §3.5
  (экземпляр наследует доступность), §3.10 (тулы и флаг is_user), §3.13
  (момент начисления XP при агентском закрытии), §3.14 (kind'ы task.claimed
  и task.review), §5 (поля Task, таблица TaskEvent, конверт пагинации),
  §7 (этап M5+), §8 (открытый вопрос о ретенции журнала). Отдельным
  абзацем зафиксировано, что ai_eligible — не граница безопасности.
- models.Task: ai_eligible (по умолчанию нет), created_by_kind/created_by_name
  (под фильтр «создано агентом»), done_by_kind, accept_state (плоскость
  приёмки, отдельная от статуса — «done = сделано» сохраняется для XP,
  статистики, теплокарты и спавна регулярных) и аренда: claimed_by_token_id
  (FK mcp_tokens, ON DELETE SET NULL — label токена не уникален, поэтому
  сравнивать арендатора можно только по id), claimed_by_name, claimed_at,
  claim_expires_at. Свойства claim_is_alive и claimed_by: протухшая аренда
  наружу не показывается. Индексы (user_id, ai_eligible/accept_state/
  created_by_kind).
- models.TaskEvent — журнал «кто, что и когда»: task_id обнуляется при
  удалении задачи (ON DELETE SET NULL), заголовок хранится снапшотом, иначе
  записи умирали бы вместе с задачей. Актор (actor_kind/actor_name/via),
  комментарий, вид события.
- schemas: TaskCreate.ai_eligible, TaskUpdate.ai_eligible и close_comment
  (не поле задачи — уходит в событие закрытия, как earned_via), поля мандата
  в TaskOut, новые TaskEventOut/TaskEventPage/AcceptIn.
- services/recurrence._copy: новый экземпляр регулярной задачи наследует
  доступность агенту и автора правила.
- Миграция a1b2c3d4e5f7 (после d4e5f6a7b8c9): поля и индексы tasks, таблица
  task_events. Существующие задачи бэкфиллятся server_default — «не доступно
  агенту, создано пользователем»; accept_state и done_by_kind остаются NULL,
  приёмка к старым закрытиям не применяется.

ТЗ 0.85.
1 parent 5efb036 commit e6df8f4716458948678b2e6731a8035112dd712b
@root root authored 9 hours ago
Showing 5 changed files
View
backend/alembic/versions/a1b2c3d4e5f7_agent_mandate.py 0 → 100644
View
backend/app/models.py
View
backend/app/schemas.py
View
backend/app/services/recurrence.py
View
docs/TZ.md