From 46a5c69b65af8fa88ed2406f313ad4ff11e1fd3e Mon Sep 17 00:00:00 2001 From: huangzhuang_3rd Date: Thu, 13 Aug 2026 00:46:34 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20V1=20-=20DAG=E7=BC=96=E6=8E=92/?= =?UTF-8?q?=E5=91=8A=E8=AD=A6=E7=B3=BB=E7=BB=9F/Agent=E5=BE=AA=E7=8E=AF/?= =?UTF-8?q?=E7=9F=A5=E8=AF=86=E5=BA=93RAG/Webhook=20+=20=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=AF=8C=E4=B8=8A=E4=B8=8B=E6=96=87=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/schemas/review.py | 43 +++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/backend/app/schemas/review.py b/backend/app/schemas/review.py index c4fca68..c1fb015 100644 --- a/backend/app/schemas/review.py +++ b/backend/app/schemas/review.py @@ -35,3 +35,46 @@ class ReviewResponse(BaseModel): created_at: datetime model_config = {"from_attributes": True} + + +class ReviewDetailResponse(BaseModel): + """Review with full context: task, project, worker, cost info joined.""" + # --- Review fields --- + id: int + task_id: int + project_id: int + review_type: str + status: str + reviewer_id: Optional[int] = None + reviewer_role: Optional[str] = None + review_content: str = "" + reviewer_comment: str = "" + auto_check_result: str = "{}" + submitted_at: datetime + reviewed_at: Optional[datetime] = None + created_at: datetime + + # --- Task context --- + task_title: str = "" + task_description: str = "" + task_input_data: str = "" + task_output_data: str = "" + task_priority: str = "medium" + task_type: str = "single_call" + task_status: str = "" + + # --- Project context --- + project_name: str = "" + project_description: str = "" + + # --- Worker context --- + worker_id: Optional[int] = None + worker_name: Optional[str] = None + worker_model_name: Optional[str] = None + worker_provider: Optional[str] = None + worker_system_prompt: Optional[str] = None + + # --- Cost / usage --- + cost_cents: int = 0 + token_usage: int = 0 + duration_ms: int = 0