diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index d314fc37..0272f5e4 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -1,3 +1,44 @@ +## 2026-05-18 | T58 Source Dossier Coverage on AwoooP Runs + +**背景**:統帥指出 Telegram 告警截圖仍無法一眼判斷是否重複、是否完整入庫、是否連到 Sentry / SignOz 等相關工作日誌,以及是否已進入 AI 自動處理流程。T15c 已有單筆 Source Event Dossier,T57 已補 TG Callback Evidence;本輪補列表層 coverage,讓 Operator 在 Run 監控第一屏就能看到近期來源事件 truth-chain 覆蓋狀態。 + +**修正**: +- 新增 read-only `GET /api/v1/platform/events/dossier/coverage`。 +- 從 `awooop_conversation_event.source_envelope` 統計最近 N 筆來源事件的 `source_envelope`、`source_refs`、dedupe、redaction、Alertmanager / Sentry / SignOz refs 覆蓋率。 +- 支援 `project_id`、`provider`、`limit` filter;provider filter 使用 typed param,避免重演 asyncpg 參數型別推斷問題。 +- Runs 頁新增「來源事件覆蓋率」面板,顯示來源事件、關聯索引、缺關聯、重複事件、Sentry refs、SignOz refs,以及 provider breakdown。 +- 補齊 zh-TW / en i18n 與 coverage helper / service tests。 + +**local verification**: +- `python3 -m py_compile apps/api/src/services/channel_event_dossier_service.py apps/api/src/api/v1/platform/events.py apps/api/tests/test_channel_event_dossier_service.py`:pass。 +- `DATABASE_URL='sqlite+aiosqlite:///:memory:' pytest apps/api/tests/test_channel_event_dossier_service.py -q`:5 passed。 +- `DATABASE_URL='sqlite+aiosqlite:///:memory:' pytest apps/api/tests/test_platform_router_order.py apps/api/tests/test_channel_event_dossier_service.py -q`:9 passed。 +- `ruff check --select F,E9` changed API/test files:pass。 +- `jq empty apps/web/messages/zh-TW.json apps/web/messages/en.json`:pass。 +- `pnpm --filter @awoooi/web typecheck`:pass。 +- `pnpm --dir apps/web exec next lint --file src/app/[locale]/awooop/runs/page.tsx`:pass with existing literal-string warnings in this legacy page;新增文案已走 i18n。 +- `NEXT_PUBLIC_API_URL=https://awoooi.wooo.work pnpm --filter @awoooi/web build`:pass with existing Sentry setup warnings。 +- `git diff --check`:pass。 + +**production verification**: +- `213523c7 feat(awooop): surface source dossier coverage` pushed to Gitea main。 +- Gitea `2323` Code Review success;Gitea `2322` CD tests / build-and-deploy / post-deploy-checks success。 +- Deploy marker:`ba1e7997 chore(cd): deploy 213523c [skip ci]`。 +- Health:`https://awoooi.wooo.work/api/v1/health` → `status=healthy`、`mock_mode=false`。 +- Coverage API:`/api/v1/platform/events/dossier/coverage?project_id=awoooi&limit=10` → `200`,`source_count=10`、`source_envelope_total=10`、`missing_source_envelope_total=0`、`with_source_refs_total=10`、`missing_source_refs_total=0`、`duplicate_total=5`、`redacted_total=10`、provider=`alertmanager`。 +- Sentry provider filter:`provider=sentry&limit=5` → `200`,`source_count=2`、`sentry_ref_total=4`、`missing_source_refs_total=0`。 +- SignOz provider filter:`provider=signoz&limit=5` → `200`,`source_count=2`、`signoz_ref_total=4`、`missing_source_refs_total=0`。 +- Frontend smoke:`/zh-TW/awooop/runs?project_id=awoooi` 顯示 Run 監控、導航、來源事件覆蓋率、Sentry refs、SignOz refs;未出現 Application error。 +- 110 SSH image/log 驗證未完成:目前本機對 `ollama@192.168.0.110` 回 `Permission denied (publickey,password)`;本輪 production confidence 來自 Gitea CD success、public health/API、frontend smoke。 + +**目前整體進度**: +- AwoooP observability / truth-chain 可回看:約 96%。 +- 來源告警入庫與 Sentry / SignOz 關聯可見性:約 94%。 +- Telegram callback detail/history 可追溯:約 96%。 +- AI 自動修復閉環:約 95%。 +- 前端 AI 自動化管理介面產品化:約 93%。 +- 完整 AI 自動化管理產品化:約 88%。 + ## 2026-05-18 | T57 AwoooP Callback Reply Evidence Search + Run List Panel **背景**:統帥指出 Telegram「詳情 / 歷史」按鈕與告警卡片仍無法清楚判斷是否重複、是否已被 AI 自動處理、跑到哪個流程、是否需要人工介入。T53-T56 已把 callback reply evidence 寫入 outbound mirror、Run Detail timeline 與 Run List filter;本輪補上可搜尋、可回看的 read-only evidence list,避免 Operator 只能靠 Telegram 截圖猜。