"""Pydantic models for project domain service.""" from __future__ import annotations from .shared import Any, BaseModel, Dict, Field, List, Optional, datetime class DomainConfig(BaseModel): """项目域配置。""" signal_sources: List[str] = Field(default_factory=lambda: ["hackernews"]) ai_config: Dict[str, Any] = Field(default_factory=dict) audit_threshold: float = 98.0 auto_merge_enabled: bool = False webhook_urls: Dict[str, str] = Field(default_factory=dict) class ProjectDomainCreate(BaseModel): """创建项目域请求。""" name: str slug: str description: Optional[str] = None config: Optional[DomainConfig] = None is_default: bool = False class ProjectDomainUpdate(BaseModel): """更新项目域请求。""" name: Optional[str] = None description: Optional[str] = None config: Optional[DomainConfig] = None is_active: Optional[bool] = None is_default: Optional[bool] = None class ProjectDomainResponse(BaseModel): """项目域响应。""" id: str name: str slug: str description: Optional[str] config: DomainConfig is_active: bool is_default: bool signal_count: int context_node_count: int experiment_count: int created_at: datetime updated_at: datetime last_synced_at: Optional[datetime] class DomainSyncProgress(BaseModel): """域同步进度。""" domain_id: str phase: str progress: float message: str __all__ = [ "DomainConfig", "ProjectDomainCreate", "ProjectDomainUpdate", "ProjectDomainResponse", "DomainSyncProgress", ]