"""任务相关的Pydantic模型""" from typing import List, Optional from pydantic import BaseModel, Field class EvaluationDimension(BaseModel): """评估维度模型""" name: str = Field(..., description="评估维度名称") description: Optional[str] = Field(None, description="评估维度描述") class TaskInfo(BaseModel): """任务信息模型""" dataset_id: int = Field(..., description="数据集ID") dataset_name: str = Field(..., description="数据集名称") task_description: Optional[str] = Field(None, description="任务描述") category: Optional[str] = Field( None, description="数据集分类(用于匹配用户物种标签)" ) target_annotation_count: int = Field(..., description="目标标注数量(计算得出)") project_id: Optional[int] = Field(None, description="项目ID") project_name: Optional[str] = Field(None, description="项目名称") evaluation_purpose: Optional[str] = Field( None, description="评估目的(从项目 metadata 获取)" ) deadline: Optional[str] = Field( None, description="要求完成时间(从项目 metadata 获取,ISO 8601 格式)" ) evaluation_dimensions: List[EvaluationDimension] = Field( default_factory=list, description="评估维度列表(从项目 annotation_configs 获取)", ) annotated_count: Optional[int] = Field(None, description="已标注数量") progress_rate: Optional[float] = Field(None, description="标注进度百分比(0-100)")