feat/ eval

This commit is contained in:
Kevin
2026-04-06 23:19:20 +08:00
parent 2fded6fbd9
commit 29dec8fe32
13 changed files with 2266 additions and 683 deletions

View File

@@ -133,9 +133,100 @@ class UserExportFixtureListOut(BaseModel):
items: list[str]
class MemoirSectionBaselineOut(BaseModel):
title: str
body: str
class UserExportFixtureDetailOut(BaseModel):
filename: str
turns: list[UserExportFixtureTurnOut]
source_user_id: str | None = None
memoir_sections: list[MemoirSectionBaselineOut] = Field(default_factory=list)
class ReplayBootstrapBody(BaseModel):
user_id: str
class ReplayBootstrapOut(BaseModel):
conversation_id: str
class EvalSandboxOut(BaseModel):
"""内部评测专用:一次性临时账号 + 空白会话,不落真实手机号业务。"""
user_id: str
conversation_id: str
phone: str
nickname: str
class ReplayConversationBody(BaseModel):
conversation_id: str
fixture_filename: str | None = None
user_utterances: list[str] | None = None
flush_memoir_after: bool = True
skip_tts: bool = True
class ReplayConversationOut(BaseModel):
conversation_id: str
turns_replayed: int
utterances_echo: list[str] = Field(default_factory=list)
class ManualJudgeConversationBody(BaseModel):
conversation_id: str
"""与当前评测台选中的 MD 一致,供基准 transcript / 整体打分。"""
fixture_filename: str | None = None
class ManualJudgeConversationStreamBody(BaseModel):
conversation_id: str
fixture_filename: str | None = None
class ManualJudgeConversationOut(BaseModel):
conversation_id: str
fixture_filename: str | None = None
baseline_transcript: str = ""
replay_transcript: str
baseline_judge: dict[str, Any] | None = None
replay_judge: dict[str, Any] | None = None
errors: list[str] = Field(default_factory=list)
class ManualJudgeMemoirBody(BaseModel):
user_id: str
baseline_sections: list[MemoirSectionBaselineOut] | None = None
class ManualJudgeMemoirOut(BaseModel):
user_id: str
chapter_results: list[dict[str, Any]] = Field(default_factory=list)
story_results: list[dict[str, Any]] = Field(default_factory=list)
class MemoirChapterSnapOut(BaseModel):
id: str
title: str
category: str | None = None
order_index: int | None = None
canonical_markdown: str | None = None
class MemoirStorySnapOut(BaseModel):
id: str
title: str
stage: str | None = None
canonical_markdown: str | None = None
class UserMemoirSnapshotOut(BaseModel):
user_id: str
chapters: list[MemoirChapterSnapOut]
stories: list[MemoirStorySnapOut]
class SnapshotFromConversationBody(BaseModel):