feat(api)!: memory single chain — async MemoryService, strict eval closure
Route all memory ingest/retrieve/enrichment/compaction through async MemoryService. Remove legacy sync memory implementations (ingest/retrieve/compaction); Celery and memoir Phase2 call asyncio.run into MemoryService-backed helpers. Memoir Phase1 batch ingest uses MemoryService.ingest_transcripts_batch; drop chapters. evidence_bundle_json mirror (Alembic 0015). Evaluation uses snapshot/link-only bundles; raise EvidenceClosureMissing instead of partial/fallback lineage tiers. Split memoir state into NarrativeCoverageState and InterviewControlState; delete the _interview_meta_store adapter layer. Remove rolling-query and recent-fact fallback settings from config and evidence assembly. Update judges, docs, tests, and PlaygroundPage alignment. Made-with: Cursor
This commit is contained in:
@@ -1,13 +1,9 @@
|
||||
"""可追溯评测:Chapter/Story 证据闭包模型(strict / partial / fallback)。"""
|
||||
"""可追溯评测:Chapter/Story 严格证据闭包模型。"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Literal
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
LineageTier = Literal["strict", "partial", "fallback"]
|
||||
|
||||
|
||||
class EvidenceFormatMeta(BaseModel):
|
||||
"""Prompt 裁剪与可审计元数据(formatter 产出)。"""
|
||||
@@ -20,7 +16,7 @@ class EvidenceFormatMeta(BaseModel):
|
||||
|
||||
|
||||
class ChapterEvidenceBundle(BaseModel):
|
||||
"""章节评测证据闭包(Phase A:source_segments 为主链,标记 partial)。"""
|
||||
"""章节评测严格证据闭包。"""
|
||||
|
||||
user_id: str
|
||||
chapter_id: str
|
||||
@@ -30,7 +26,6 @@ class ChapterEvidenceBundle(BaseModel):
|
||||
memory_fact_ids: list[str] = Field(default_factory=list)
|
||||
timeline_event_ids: list[str] = Field(default_factory=list)
|
||||
summary_ids: list[str] = Field(default_factory=list)
|
||||
lineage_tier: LineageTier
|
||||
notes: list[str] = Field(default_factory=list)
|
||||
augmented_with_chapter_context: bool = False
|
||||
# DialogueLineage.model_dump() — user/assistant message ids (multi-turn)
|
||||
@@ -38,7 +33,7 @@ class ChapterEvidenceBundle(BaseModel):
|
||||
|
||||
|
||||
class StoryEvidenceBundle(BaseModel):
|
||||
"""故事评测证据闭包:StoryEvidenceLink 优先,缺失则回退 chapter source_segments。"""
|
||||
"""故事评测严格证据闭包:StoryEvidenceLink 与绑定 transcript 都必须存在。"""
|
||||
|
||||
user_id: str
|
||||
story_id: str
|
||||
@@ -48,11 +43,9 @@ class StoryEvidenceBundle(BaseModel):
|
||||
memory_fact_ids: list[str] = Field(default_factory=list)
|
||||
timeline_event_ids: list[str] = Field(default_factory=list)
|
||||
summary_ids: list[str] = Field(default_factory=list)
|
||||
lineage_tier: LineageTier
|
||||
notes: list[str] = Field(default_factory=list)
|
||||
augmented_with_chapter_context: bool = False
|
||||
story_link_evidence_count: int = 0
|
||||
fallback_chapter_ids: list[str] = Field(default_factory=list)
|
||||
dialogue_lineage: dict | None = None
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user