72 lines
1.6 KiB
Python
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",
|
|
]
|