64 lines
1.7 KiB
Python
64 lines
1.7 KiB
Python
|
|
"""ingest_transcript_sync 将 lineage_json 传入 create_source。"""
|
||
|
|
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from types import SimpleNamespace
|
||
|
|
|
||
|
|
from app.features.memory.service import ingest_transcript_sync
|
||
|
|
|
||
|
|
|
||
|
|
def test_ingest_transcript_sync_passes_lineage(monkeypatch) -> None:
|
||
|
|
captured: dict = {}
|
||
|
|
|
||
|
|
class FakeSession:
|
||
|
|
commit_calls = 0
|
||
|
|
|
||
|
|
def commit(self) -> None:
|
||
|
|
self.commit_calls += 1
|
||
|
|
|
||
|
|
def flush(self) -> None:
|
||
|
|
pass
|
||
|
|
|
||
|
|
def begin_nested(self):
|
||
|
|
from contextlib import nullcontext
|
||
|
|
|
||
|
|
return nullcontext()
|
||
|
|
|
||
|
|
def fake_create_source(session, **kwargs):
|
||
|
|
captured.update(kwargs)
|
||
|
|
return SimpleNamespace(id="src-1")
|
||
|
|
|
||
|
|
monkeypatch.setattr(
|
||
|
|
"app.core.dependencies.get_embedding_provider", lambda: None
|
||
|
|
)
|
||
|
|
monkeypatch.setattr(
|
||
|
|
"app.features.memory.repo.create_source_sync",
|
||
|
|
fake_create_source,
|
||
|
|
)
|
||
|
|
monkeypatch.setattr(
|
||
|
|
"app.features.memory.repo.create_chunk_sync",
|
||
|
|
lambda *a, **k: SimpleNamespace(id=f"ch-{k.get('chunk_index')}"),
|
||
|
|
)
|
||
|
|
monkeypatch.setattr("app.core.config.settings.memory_enrichment_enabled", False)
|
||
|
|
|
||
|
|
lineage = {
|
||
|
|
"schema_version": 1,
|
||
|
|
"conversation_id": "c9",
|
||
|
|
"turns": [
|
||
|
|
{"user_message_id": "um-1", "assistant_message_id": "as-1"},
|
||
|
|
],
|
||
|
|
"primary_user_message_id": "um-1",
|
||
|
|
}
|
||
|
|
|
||
|
|
fake_session = FakeSession()
|
||
|
|
sid = ingest_transcript_sync(
|
||
|
|
fake_session,
|
||
|
|
"u1",
|
||
|
|
"c9",
|
||
|
|
"hello there",
|
||
|
|
lineage_json=lineage,
|
||
|
|
)
|
||
|
|
assert sid == "src-1"
|
||
|
|
assert captured.get("lineage_json") == lineage
|
||
|
|
assert captured.get("primary_user_message_id") == "um-1"
|