Files
ai-worker-platform/backend/app/schemas/task.py
T

78 lines
2.1 KiB
Python

"""Task schemas."""
from pydantic import BaseModel, Field
from typing import Optional, Any
from datetime import datetime
class TaskCreate(BaseModel):
title: str = Field(..., min_length=1, max_length=500)
description: str = ""
priority: str = "medium"
task_type: str = "single_call"
input_data: str = "" # JSON string: {prompt, context, parameters}
requires_review: bool = True
assignee_id: Optional[int] = None
worker_id: Optional[int] = None
due_date: Optional[datetime] = None
depends_on: str = "[]"
class TaskUpdate(BaseModel):
title: Optional[str] = None
description: Optional[str] = None
status: Optional[str] = None
priority: Optional[str] = None
assignee_id: Optional[int] = None
worker_id: Optional[int] = None
input_data: Optional[str] = None
requires_review: Optional[bool] = None
due_date: Optional[datetime] = None
depends_on: Optional[str] = None
class TaskAssign(BaseModel):
assignee_id: Optional[int] = None
worker_id: Optional[int] = None
class TaskExecute(BaseModel):
"""Trigger task execution."""
override_input: Optional[str] = None # override task input_data
max_retries: int = 3
class TaskResponse(BaseModel):
id: int
project_id: int
title: str
description: str
status: str
priority: str
assignee_id: Optional[int] = None
worker_id: Optional[int] = None
task_type: str
input_data: str
output_data: Optional[str] = None
requires_review: bool
review_status: Optional[str] = None
due_date: Optional[datetime] = None
started_at: Optional[datetime] = None
completed_at: Optional[datetime] = None
tenant_id: int
created_at: datetime
updated_at: datetime
model_config = {"from_attributes": True}
class TaskExecutionResult(BaseModel):
"""Result of executing a task via AI Worker."""
task_id: int
status: str # success, error, needs_review
output: str = ""
token_usage: int = 0
cost_cents: int = 0
duration_ms: int = 0
error: Optional[str] = None
artifact_id: Optional[int] = None