From b24fae313ee9514f22ff7524fe8ed8e1e64e8a43 Mon Sep 17 00:00:00 2001 From: OG T Date: Fri, 10 Apr 2026 11:06:50 +0800 Subject: [PATCH] =?UTF-8?q?fix(drift=5Fnarrator):=20=E8=A3=9C=E5=AF=AB=20n?= =?UTF-8?q?arrative=5Ftext=20=E5=88=B0=20DB=20+=20drift=5Frepository.updat?= =?UTF-8?q?e=5Fnarrative?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/api/src/repositories/drift_repository.py | 9 +++++++++ apps/api/src/services/drift_narrator_service.py | 7 +++++++ 2 files changed, 16 insertions(+) diff --git a/apps/api/src/repositories/drift_repository.py b/apps/api/src/repositories/drift_repository.py index 12550fdc..d365223e 100644 --- a/apps/api/src/repositories/drift_repository.py +++ b/apps/api/src/repositories/drift_repository.py @@ -154,6 +154,15 @@ class DriftReportRepository: ) + async def update_narrative(self, report_id: str, narrative: str) -> None: + """更新 AI 人話摘要 (Phase 30 ADR-067)""" + async with get_db_context() as db: + await db.execute( + text("UPDATE drift_reports SET narrative_text = :narrative WHERE report_id = :report_id"), + {"report_id": report_id, "narrative": narrative}, + ) + + _drift_repo: DriftReportRepository | None = None diff --git a/apps/api/src/services/drift_narrator_service.py b/apps/api/src/services/drift_narrator_service.py index 2763145f..4a75b1b7 100644 --- a/apps/api/src/services/drift_narrator_service.py +++ b/apps/api/src/services/drift_narrator_service.py @@ -112,6 +112,13 @@ class DriftNarratorService: narrative = await self._generate_narrative(report, interpretation) await self._send_telegram(report, narrative) + # 寫入 DB narrative_text (Phase 30 ADR-067) + try: + from src.repositories.drift_repository import get_drift_repository + await get_drift_repository().update_narrative(report.report_id, narrative) + except Exception as e: + logger.warning("drift_narrator_db_write_failed", error=str(e)) + # 寫入快取 await redis.set(cache_key, narrative[:500], ex=CACHE_TTL)