feat(api): track previous in_progress_at during task status transitions
This commit is contained in:
@@ -2137,8 +2137,10 @@ async def _apply_non_lead_agent_task_rules(
|
||||
raise _blocked_task_error(blocked_ids)
|
||||
if status_value == "inbox":
|
||||
update.task.assigned_agent_id = None
|
||||
update.task.previous_in_progress_at = update.task.in_progress_at
|
||||
update.task.in_progress_at = None
|
||||
elif status_value == "review":
|
||||
update.task.previous_in_progress_at = update.task.in_progress_at
|
||||
update.task.assigned_agent_id = None
|
||||
update.task.in_progress_at = None
|
||||
else:
|
||||
@@ -2199,8 +2201,12 @@ async def _apply_admin_task_rules(
|
||||
if "status" in update.updates:
|
||||
status_value = _required_status_value(update.updates["status"])
|
||||
if status_value == "inbox":
|
||||
update.task.previous_in_progress_at = update.task.in_progress_at
|
||||
update.task.assigned_agent_id = None
|
||||
update.task.in_progress_at = None
|
||||
elif status_value == "review":
|
||||
update.task.previous_in_progress_at = update.task.in_progress_at
|
||||
update.task.in_progress_at = None
|
||||
elif status_value == "in_progress":
|
||||
update.task.in_progress_at = utcnow()
|
||||
|
||||
@@ -2353,8 +2359,8 @@ async def _finalize_updated_task(
|
||||
comment_text = (update.comment or "").strip()
|
||||
review_comment_author = update.task.assigned_agent_id or update.previous_assigned
|
||||
review_comment_since = (
|
||||
update.task.in_progress_at
|
||||
if update.task.in_progress_at is not None
|
||||
update.task.previous_in_progress_at
|
||||
if update.task.previous_in_progress_at is not None
|
||||
else update.previous_in_progress_at
|
||||
)
|
||||
if not comment_text and not await has_valid_recent_comment(
|
||||
|
||||
@@ -27,6 +27,7 @@ class Task(TenantScoped, table=True):
|
||||
priority: str = Field(default="medium", index=True)
|
||||
due_at: datetime | None = None
|
||||
in_progress_at: datetime | None = None
|
||||
previous_in_progress_at: datetime | None = None
|
||||
|
||||
created_by_user_id: UUID | None = Field(
|
||||
default=None,
|
||||
|
||||
Reference in New Issue
Block a user