""" Pydantic schemas for Open API project endpoints. """ from enum import Enum from datetime import datetime from typing import Optional, List from pydantic import BaseModel, Field class ProjectType(str, Enum): IMAGE = "image" TEXT = "text" class OpenProjectItem(BaseModel): project_id: str = Field(..., description="项目ID") project_name: str = Field(..., description="项目名称") description: str = Field(default="", description="项目描述") project_type: ProjectType = Field(..., description="项目类型") task_type: str = Field(..., description="任务类型") status: str = Field(..., description="项目状态") created_by: str = Field(default="", description="创建人") created_at: datetime = Field(..., description="创建时间") updated_at: Optional[datetime] = Field(None, description="更新时间") task_count: int = Field(default=0, description="总任务数") completed_task_count: int = Field(default=0, description="已完成任务数") class OpenProjectDetailItem(OpenProjectItem): assigned_task_count: int = Field(default=0, description="已分配任务数") completion_percentage: float = Field(default=0.0, description="完成率") class OpenProjectListData(BaseModel): items: List[OpenProjectItem] total: int page: int page_size: int total_pages: int has_next: bool has_prev: bool class OpenProjectListResponse(BaseModel): code: int = Field(default=0) message: str = Field(default="success") data: OpenProjectListData class OpenProjectDetailResponse(BaseModel): code: int = Field(default=0) message: str = Field(default="success") data: OpenProjectDetailItem