Files
life-echo/api/tests/evaluation/test_eval_trace_service_dialogue_lineage.py
Kevin 309a051038 feat: 回忆录证据血缘与内部评测可追溯,顺带对齐本地评测台与 CI
数据库与模型:新增多版迁移(章节证据快照、对话血缘、记忆事实/时间线 lineage 等),把「成稿 ↔ 对话/记忆」的溯源信息落到表结构里。
业务链路:会话与 WS、回忆录/故事流水线、记忆写入与 enrichment 等跟着接上线索与快照;新增章节证据快照与评测侧 EvalTraceService 等模块,方便组评审用的证据包。
内部评测:自动化 run 与手工 memoir 评审共用可追溯证据;rubric/ judge 相关脚本与文档有配套调整。
app-eval-web:Memoir/实验详情里能展开看证据摘要与 evidence_trace(含对话轮次 id);Vite 代理与 development.sh 注入的 API 端口与当前默认内部评测端口一致,避免改端口后页面连错服务。
工程杂项:GitHub Actions / 仓库说明有更新;各适配器与支付/配额/plan 等多处为小改动或跟随主改动的收尾;新增/扩充了?
2026-04-08 15:37:09 +08:00

49 lines
1.5 KiB
Python

"""EvalTraceService 在 chapter 快照路径返回 dialogue_lineage。"""
from __future__ import annotations
from types import SimpleNamespace
from unittest.mock import MagicMock
import pytest
from sqlalchemy.ext.asyncio import AsyncSession
from app.features.evaluation.eval_trace_service import EvalTraceService
from app.features.memoir.chapter_evidence_snapshot import EVIDENCE_SNAPSHOT_SCHEMA_VERSION
@pytest.mark.asyncio
async def test_build_chapter_bundle_dialogue_lineage_from_snapshot() -> None:
msg_ln = {
"schema_version": 1,
"conversation_id": "cv1",
"turns": [
{"user_message_id": "um-99", "assistant_message_id": "as-99"},
],
}
snap = SimpleNamespace(
user_id="u1",
chapter_id="ch1",
schema_version=EVIDENCE_SNAPSHOT_SCHEMA_VERSION,
segment_ids=["s1"],
conversation_ids=["cv1"],
memory_chunk_ids=["mk1"],
memory_fact_ids=[],
timeline_event_ids=[],
summary_ids=[],
notes=[],
message_lineage_json=msg_ln,
)
chapter = SimpleNamespace(
id="ch1",
user_id="u1",
source_segments=["s1"],
current_evidence_snapshot=snap,
evidence_bundle_json=None,
)
db = MagicMock(spec=AsyncSession)
svc = EvalTraceService(db)
bundle = await svc.build_chapter_bundle("u1", chapter)
assert bundle.dialogue_lineage == msg_ln
assert bundle.dialogue_lineage["turns"][0]["user_message_id"] == "um-99"