51 lines
2.5 KiB
Python
51 lines
2.5 KiB
Python
"""候选 API schema(api-spec §8)。"""
|
||
|
||
from pydantic import BaseModel, Field
|
||
|
||
|
||
class ProfileCandidateResponse(BaseModel):
|
||
id: str = Field(description="候选 ID,前缀 profile_candidate_。")
|
||
character_id: str = Field(description="所属人物 ID。")
|
||
import_job_id: str | None = Field(default=None, description="来源导入任务 ID。")
|
||
field: str = Field(description="档案字段名。")
|
||
value: str = Field(description="候选值。")
|
||
confidence: float = Field(description="置信度。")
|
||
evidence_ids: list[str] = Field(default_factory=list, description="证据 import_item ID。")
|
||
status: str = Field(description="审核状态,契约字典 §10.6。")
|
||
reason: str | None = Field(default=None)
|
||
reviewed_at: str | None = Field(default=None)
|
||
created_at: str = Field(description="创建时间,UTC ISO 8601 字符串。")
|
||
|
||
|
||
class MemoryCandidateResponse(BaseModel):
|
||
id: str = Field(description="候选 ID,前缀 memory_candidate_。")
|
||
character_id: str = Field(description="所属人物 ID。")
|
||
import_job_id: str | None = Field(default=None, description="来源导入任务 ID。")
|
||
cycle_id: str | None = Field(default=None, description="来源大周天循环 ID。")
|
||
type: str = Field(description="记忆类型。")
|
||
title: str = Field(description="记忆标题。")
|
||
content: str = Field(description="记忆内容。")
|
||
confidence: float = Field(description="置信度。")
|
||
importance: float = Field(description="重要度。")
|
||
sensitivity: str = Field(description="敏感等级。")
|
||
evidence_ids: list[str] = Field(default_factory=list, description="证据 import_item ID。")
|
||
status: str = Field(description="审核状态,契约字典 §10.6。")
|
||
reason: str | None = Field(default=None)
|
||
reviewed_at: str | None = Field(default=None)
|
||
created_at: str = Field(description="创建时间,UTC ISO 8601 字符串。")
|
||
|
||
|
||
class CandidateReviewDecision(BaseModel):
|
||
candidate_id: str = Field(description="候选 ID。")
|
||
decision: str = Field(description="审核决定:approve / reject。")
|
||
|
||
|
||
class BatchReviewRequest(BaseModel):
|
||
decisions: list[CandidateReviewDecision] = Field(min_length=1, description="批量审核决定。")
|
||
|
||
|
||
class BatchReviewResult(BaseModel):
|
||
applied: int = Field(description="已应用(approve)数量。")
|
||
rejected: int = Field(description="已驳回数量。")
|
||
skipped: int = Field(description="因状态非 pending 跳过的数量。")
|