feat: AI Worker 平台 MVP v1.0.0 - 多租户/项目管理/AI Worker/任务编排/HITL审核/成本治理
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
"""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
|
||||
Reference in New Issue
Block a user