"""爬取结果相关的Pydantic模型""" from datetime import datetime from typing import Optional, List, Dict, Any from pydantic import BaseModel class FacultyData(BaseModel): """导师数据""" name: str url: str title: Optional[str] = None email: Optional[str] = None department: Optional[str] = None class ProgramData(BaseModel): """项目数据""" name: str url: str degree_type: Optional[str] = None description: Optional[str] = None faculty_page_url: Optional[str] = None faculty_count: int = 0 faculty: List[FacultyData] = [] class SchoolData(BaseModel): """学院数据""" name: str url: str description: Optional[str] = None program_count: int = 0 programs: List[ProgramData] = [] class ResultResponse(BaseModel): """完整结果响应""" id: int university_id: int job_id: Optional[int] = None # 统计 schools_count: int programs_count: int faculty_count: int # 完整数据 result_data: Dict[str, Any] created_at: datetime class Config: from_attributes = True class ResultSummary(BaseModel): """结果摘要""" id: int university_id: int schools_count: int programs_count: int faculty_count: int created_at: datetime class Config: from_attributes = True