"""导入导出相关的Pydantic模型""" from pydantic import BaseModel, Field from typing import Optional, List, Dict, Any from datetime import datetime class ExportOptions(BaseModel): """导出选项""" include_generation_history: bool = Field(False, description="是否包含生成历史") include_writing_styles: bool = Field(True, description="是否包含写作风格") class ChapterExportData(BaseModel): """章节导出数据""" title: str content: Optional[str] = None summary: Optional[str] = None chapter_number: int word_count: int = 0 status: str = "draft" created_at: Optional[str] = None class CharacterExportData(BaseModel): """角色导出数据""" name: str age: Optional[str] = None gender: Optional[str] = None is_organization: bool = False role_type: Optional[str] = None personality: Optional[str] = None background: Optional[str] = None appearance: Optional[str] = None traits: Optional[List[str]] = None organization_type: Optional[str] = None organization_purpose: Optional[str] = None created_at: Optional[str] = None class OutlineExportData(BaseModel): """大纲导出数据""" title: str content: Optional[str] = None structure: Optional[str] = None order_index: Optional[int] = None created_at: Optional[str] = None class RelationshipExportData(BaseModel): """关系导出数据""" source_name: str target_name: str relationship_name: Optional[str] = None intimacy_level: int = 50 status: str = "active" description: Optional[str] = None started_at: Optional[str] = None class OrganizationExportData(BaseModel): """组织详情导出数据""" character_name: str parent_org_name: Optional[str] = None power_level: int = 50 member_count: int = 0 location: Optional[str] = None motto: Optional[str] = None color: Optional[str] = None class OrganizationMemberExportData(BaseModel): """组织成员导出数据""" organization_name: str character_name: str position: str rank: int = 0 status: str = "active" joined_at: Optional[str] = None loyalty: int = 50 contribution: int = 0 notes: Optional[str] = None class WritingStyleExportData(BaseModel): """写作风格导出数据""" name: str style_type: str preset_id: Optional[str] = None description: Optional[str] = None prompt_content: str order_index: int = 0 class GenerationHistoryExportData(BaseModel): """生成历史导出数据""" chapter_title: Optional[str] = None prompt: Optional[str] = None generated_content: Optional[str] = None model: Optional[str] = None tokens_used: Optional[int] = None generation_time: Optional[float] = None created_at: Optional[str] = None class ProjectExportData(BaseModel): """项目完整导出数据""" version: str = "1.0.0" export_time: str project: Dict[str, Any] chapters: List[ChapterExportData] = [] characters: List[CharacterExportData] = [] outlines: List[OutlineExportData] = [] relationships: List[RelationshipExportData] = [] organizations: List[OrganizationExportData] = [] organization_members: List[OrganizationMemberExportData] = [] writing_styles: List[WritingStyleExportData] = [] generation_history: List[GenerationHistoryExportData] = [] class ImportValidationResult(BaseModel): """导入验证结果""" valid: bool version: str project_name: Optional[str] = None statistics: Dict[str, int] = {} errors: List[str] = [] warnings: List[str] = [] class ImportResult(BaseModel): """导入结果""" success: bool project_id: Optional[str] = None message: str statistics: Dict[str, int] = {} warnings: List[str] = []