|
Мандат ИИ-агента: поле задачи, модель журнала, миграция (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. |
|---|
|
|
| backend/alembic/versions/a1b2c3d4e5f7_agent_mandate.py 0 → 100644 |
|---|
| backend/app/models.py |
|---|
| backend/app/schemas.py |
|---|
| backend/app/services/recurrence.py |
|---|
| docs/TZ.md |
|---|