Files
yangxiaoyu-crypto 426cf4d2cd Add university scraper system with backend, frontend, and configs
- Add src/university_scraper module with scraper, analyzer, and CLI
- Add backend FastAPI service with API endpoints and database models
- Add frontend React app with university management pages
- Add configs for Harvard, Manchester, and UCL universities
- Add artifacts with various scraper implementations
- Add Docker compose configuration for deployment
- Update .gitignore to exclude generated files

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 15:25:08 +08:00

68 lines
1.3 KiB
Python

"""爬取结果相关的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