PMFlow/backend/app/schemas/model_capability.py

94 lines
2.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""模型能力矩阵相关 Pydantic 模型"""
from typing import Literal, Optional
from pydantic import BaseModel, Field
class ValidateMatchRequest(BaseModel):
"""模型-需求匹配校验请求"""
truth_node_id: int = Field(..., description="宪章节点 ID")
model_version_id: int = Field(..., description="模型版本 ID")
project_id: Optional[int] = Field(default=None, description="项目 ID(用于交叉校验)")
class CostTrackingQuery(BaseModel):
"""成本跟踪查询参数"""
period: str = Field(default="weekly", description="周期: daily/weekly/monthly/project")
class CostOptimizationQuery(BaseModel):
"""成本优化查询参数"""
period: str = Field(default="weekly", description="周期: daily/weekly/monthly/project")
class LifecycleImpactRequest(BaseModel):
"""模型生命周期影响评估请求"""
old_model_version_id: int = Field(..., description="旧模型版本 ID")
new_model_version_id: int = Field(..., description="新模型版本 ID")
class GenerateMigrationTasksRequest(BaseModel):
"""生成迁移任务请求"""
max_tasks: int = Field(default=5, ge=1, le=20, description="最多生成任务数")
class ExperimentSyncRequest(BaseModel):
"""实验结果同步请求"""
experiment_id: int = Field(..., description="实验 ID")
truth_node_id: int = Field(..., description="目标宪章 ID")
project_id: Optional[int] = Field(default=None, description="项目 ID(用于交叉校验)")
sync_type: Literal["result_sync", "metric_update", "conclusion_sync"] = Field(
default="result_sync",
description="同步类型",
)
auto_apply_threshold: float = Field(
default=0.8, ge=0.0, le=1.0, description="自动应用阈值"
)
class ExperimentSyncReviewRequest(BaseModel):
"""实验同步审核请求"""
action: Literal["approve", "reject"] = Field(..., description="审核动作")
review_notes: Optional[str] = Field(default=None, description="审核备注")
class ExperimentSyncRollbackRequest(BaseModel):
"""实验同步回滚请求"""
rollback_notes: Optional[str] = Field(default=None, description="回滚备注")
class CostOptimizationAnalyzeRequest(BaseModel):
"""成本优化分析请求"""
truth_node_id: int = Field(..., description="宪章 ID")
project_id: Optional[int] = Field(default=None, description="项目 ID(用于交叉校验)")
period: str = Field(default="weekly", description="周期: daily/weekly/monthly/project")
class ProjectTruthNodeContextItem(BaseModel):
"""项目上下文中的宪章项"""
id: int
title: str
status: str
node_type: str
class ProjectExperimentContextItem(BaseModel):
"""项目上下文中的实验项"""
id: int
title: str
status: str
target_metric: Optional[str] = None