feat(api): 收敛对话与记忆流程边界,引入 LLM 网关与专用服务

- MemoryService 异步路径委托 MemoryIngestService / MemoryRetrievalService;富化派发经 MemoryEnrichmentScheduler
- WebSocket pipeline 经 ChatTurnService 与显式 DTO 编排单轮对话;回忆录片段入队由 MemoirIngestScheduler 封装
- 新增 LlmGateway(LlmUseCase),各 agent、任务与适配器对齐 ports
- 补充 memory 提示适配、runtime 类型、memory-retrieval 文档、ai-touchpoints 说明与扫描脚本及配套测试

Made-with: Cursor
This commit is contained in:
Kevin
2026-04-30 09:17:01 +08:00
parent eddb2c3078
commit ac436b87a2
37 changed files with 1400 additions and 199 deletions

View File

@@ -10,7 +10,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
from app.core.db import utc_now
from app.features.conversation.models import Conversation, Segment
from app.features.conversation.ws.pipeline import background_runner
from app.features.conversation.ws.pipeline import memoir_ingest_scheduler
from app.features.evaluation.errors import (
EvaluationBadRequestError,
EvaluationNotFoundError,
@@ -126,8 +126,10 @@ class MemoirReadinessService:
elapsed_ms=None,
)
t0 = time.perf_counter()
task_id = await background_runner.flush_pending(
uid, extra_segment_ids=segment_ids
_, task_id = await memoir_ingest_scheduler.flush_pending(
uid,
extra_segment_ids=segment_ids,
trigger="manual_flush",
)
elapsed_ms = max(0, int((time.perf_counter() - t0) * 1000))
submitted_at = await record_phase1_job_submitted(