初始化提交

This commit is contained in:
chenxin committed 2026-08-21 16:00:13 +08:00
commit 887c1f449e
963 files changed
+166869

No files matched your search

+50
View File
@@ -0,0 +1,50 @@
"""候选 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 跳过的数量。")