PMFlow/backend/app/services/domain_core/schemas.py

72 lines
1.6 KiB
Python

"""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",
]