"""演化候选 API schema(契约字典 §12;api-spec 演化候选审核)。""" from datetime import datetime from typing import Any from pydantic import Field from app.schemas.common import OrmModel class EvolutionCandidateResponse(OrmModel): """演化候选响应(delta/evidence_ids 已从 JSON 文本解析)。""" id: str = Field(description="演化候选 ID(evolution_ 前缀)") character_id: str cycle_id: str = Field(description="触发本次的大周天循环 ID") type: str = Field(description="候选类型,取值见契约字典 §12.1") source: str = Field(description="来源,本期 big_cycle") level: str = Field(description="影响层级 L0-L4") scope: str = Field(description="作用域,取值见契约字典 §12.3") title: str proposal: str delta: dict[str, Any] = Field(default_factory=dict, description="演化增量") evidence_ids: list[str] = Field(default_factory=list) confidence: float benefit_score: float risk_score: float drift_score: float auto_apply_allowed: bool status: str resulting_target_id: str | None = None error_message: str | None = None reviewed_at: datetime | None = None reviewed_by: str created_at: datetime