diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index 1421dd65..e6ae0175 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -1,3 +1,38 @@ +## 2026-06-04|AwoooP Callback Reply Observed Filter Repair + +**背景**:Phase 2 告警資料鏈路盤點時,production callback replies API 出現可驗真紅燈:`/api/v1/platform/runs/callback-replies?project_id=awoooi&callback_reply_status=observed` 回 `total=0`,但同一 API summary 顯示 `callback_total=4`、`callback_sent_total=4`、`callback_failed_total=0`。這代表 `observed` 篩選器把已送達的 Telegram callback reply 排除掉,造成前端 / operator 查「已觀測」時看不到既有 history callback replies。 + +**本輪完成**: +- `apps/api/src/services/platform_operator_service.py`:修正 `list_callback_replies()` 的 `callback_reply_status=observed` SQL 條件,讓 `observed` 代表「有 callback reply 證據」,不再排除 `callback_reply_sent` / fallback sent / rescue sent / failed。 +- `apps/api/src/services/platform_operator_service.py`:同步修正 `_callback_reply_summary_matches_status()`,讓 `observed` 對 sent / fallback sent / failed 皆成立,只有 `no_callback` 不成立。 +- `apps/api/tests/test_awooop_operator_timeline_labels.py`:補 status helper 測試與 source guard 測試,避免 `observed` filter 再把 delivered callback replies 隱藏。 + +**完成度更新**: +- Phase 2 告警資料鏈路:`12% → 18%`。 +- Callback reply observed filter live issue:`100%`。 +- Source Link Canary live issue:維持 `100%`。 +- Phase 2 目標仍為 `90%`;Telegram DB 完整寫入、dedupe / recurrence、詳情 / 歷史 400、postmortem 重複通知與 Config Drift 重複告警仍待續。 + +**驗證**: +- `python3 -m py_compile apps/api/src/services/platform_operator_service.py apps/api/tests/test_awooop_operator_timeline_labels.py`:通過。 +- `ruff check apps/api/src/services/platform_operator_service.py apps/api/tests/test_awooop_operator_timeline_labels.py`:通過。 +- `DATABASE_URL= PYTHONPATH=apps/api pytest apps/api/tests/test_awooop_operator_timeline_labels.py -q`:`60 passed`。 +- `git diff --check`:通過。 +- Gitea code-review run `2552`:success。 +- Gitea CD run `2551`:tests / build-and-deploy / post-deploy-checks success。 +- Deploy marker:`658f46dd chore(cd): deploy ca0b3ae [skip ci]`。 +- Production health:`/api/v1/health` 回 `status=healthy`、`environment=prod`、`mock_mode=false`。 +- Production callback API:`/api/v1/platform/runs/callback-replies?project_id=awoooi&callback_reply_status=observed&per_page=5&refresh=true` 回 `total=4`,summary `callback_total=4`、`callback_sent_total=4`、`snapshot_status=partial`,第一筆 `callback_reply_status=sent`、`callback_reply_action=history`。 +- Production callback API baseline:`/api/v1/platform/runs/callback-replies?project_id=awoooi&per_page=1&refresh=true` 回 `total=4`,與 `observed` filter 對齊。 +- Production Browser desktop `/zh-TW/awooop/runs?project_id=awoooi&_v=658f46dd-callback-observed`:表格 50 列、`Run 監控` / `AwoooP` / `MCP` / `Ansible` / `KM` 可見,`horizontalOverflow=0`,無 in-page fetch failure;截圖 `/tmp/awoooi-runs-callback-observed-desktop-658f46dd.png`。 +- Production Browser mobile 390x844 `/zh-TW/awooop/runs?project_id=awoooi&_v=658f46dd-callback-observed-mobile`:表格 50 列、可上下滾動、`horizontalOverflow=0`,無 in-page fetch failure;截圖 `/tmp/awoooi-runs-callback-observed-mobile-658f46dd.png`。 + +**目前邊界**: +- 本段只修 callback reply 查詢與 operator summary 判讀,不發 Telegram 訊息、不讀取 token、不改 webhook secret、不修改告警來源權限。 +- 本段沒有建立 incident、沒有啟動 auto repair、沒有建立 ticket、沒有批准 runtime gate。 +- `observed total=4` 代表已可查到既有 callback reply 證據;`snapshot_status=partial` 仍表示舊 inbound callback 點擊證據不可完全回補,下一個真 Telegram button press 仍是 inbound mirror 的驗證觸發點。 +- IwoooS / Source Control / Kali / VibeWork 相關 gate 全部維持既有 `0 / false` 邊界。 + ## 2026-06-04|IwoooS P1-9 VibeWork Onboarding Handoff **背景**:P1-8 已補 111 / 168 開發主機 scope handoff;本段接續 P1-9,將 VibeWork 納入 IwoooS 的 repo、product、surface、owner、evidence refs、資料分級、部署邊界與獨立產品邊界整理成 owner / reviewer 可審的只讀 handoff。這不是產品合併、不是部署批准、不是 repo / refs 同步、不是 workflow / secret 修改,也不是掃描或修復授權。 diff --git a/docs/workplans/2026-06-04-navigation-and-ai-flywheel-workplan.md b/docs/workplans/2026-06-04-navigation-and-ai-flywheel-workplan.md index 1c06ef34..85a42277 100644 --- a/docs/workplans/2026-06-04-navigation-and-ai-flywheel-workplan.md +++ b/docs/workplans/2026-06-04-navigation-and-ai-flywheel-workplan.md @@ -8,10 +8,10 @@ | --- | --- | | Repo/worktree | `/private/tmp/awoooi-iwooos-next-gate-20260604` | | 推版規則 | 只推 Gitea:`git push gitea HEAD:main`;GitHub 只讀備份 | -| 最新 Gitea main | `920c9a2d docs(security): 補開發主機 scope handoff [skip ci]` | -| 最新完成 code commit | `29a67ec7 fix(ci): tolerate empty source link canary response` | -| 最新 deployment marker | `65bdfd1d chore(cd): deploy 29a67ec [skip ci]` | -| 正式站驗證 | `https://awoooi.wooo.work/zh-TW/awooop/runs?project_id=awoooi&_v=c046b9c8-runs-status-fallback` | +| 最新 Gitea main | `658f46dd chore(cd): deploy ca0b3ae [skip ci]` | +| 最新完成 code commit | `ca0b3aec fix(api): include delivered callback replies in observed filter` | +| 最新 deployment marker | `658f46dd chore(cd): deploy ca0b3ae [skip ci]` | +| 正式站驗證 | `https://awoooi.wooo.work/zh-TW/awooop/runs?project_id=awoooi&_v=658f46dd-callback-observed` | | 首頁產品化入口 | 88% | | AI provider readability | 88% | | Runs visibility | 92% | @@ -141,8 +141,8 @@ Live evidence: | 欄位 | 內容 | | --- | --- | | 優先級 | P0 | -| 狀態 | 已修復第一個 live issue:`29a67ec7` 讓 Source Link Canary 先判 HTTP status、2xx 空 body 交給 source-correlation readback 驗證;`2549` CD / post-deploy checks 已通過。其餘 Telegram / DB / dedupe / history 紅燈待續。 | -| 本階段完成度 | 12% | +| 狀態 | 已修復兩個 live issue:`29a67ec7` 讓 Source Link Canary 先判 HTTP status、2xx 空 body 交給 source-correlation readback 驗證;`ca0b3aec` 讓 `callback_reply_status=observed` 不再隱藏已送達 Telegram callback replies。其餘 Telegram / DB / dedupe / history 紅燈待續。 | +| 本階段完成度 | 18% | | 目標完成度 | 告警資料鏈路可判讀性 → 90% | 細項: @@ -151,6 +151,7 @@ Live evidence: - [ ] 建立告警 dedupe / fingerprint / recurrence 統計,降低重複轟炸。 - [ ] 修「詳情 / 歷史」HTTP 400 或查不到事件。 - [x] 修 `Source Link Canary`:Gitea CD post-deploy run `2547` 顯示 `sentry source-link canary failed: Expecting value: line 1 column 1 (char 0)`;`29a67ec7` 已修 smoke script status-first parsing 與 2xx empty response handoff,run `2549` 已成功。 +- [x] 修 Telegram callback replies `observed` 篩選:production API 原本 `callback_reply_status=observed` 回 `total=0`,但 summary `callback_total=4`;`ca0b3aec` 已讓 observed 代表「有 callback reply 證據」,不再排除 sent / fallback sent / rescue sent / failed。 - [ ] 修 postmortem 瞬間大量重複通知。 - [ ] 修 Config Drift 重複告警,確認 PR 已建立後的採納 / 關閉 / baseline / TTL 狀態。 @@ -166,6 +167,14 @@ Live evidence: - Post-deploy log:`Source Link Canary` 回 `recorded sentry source-link canary event for INC-20260505-25E744`,Alert Chain smoke `PASSED — 8/9 checks passed`。 - Source correlation apply smoke:`status=passed`、`verification_status=applied_link_verified`、`source_event_provider_event_id=sentry:source_correlation_linked:awoooi-source-link-canary-gitea-cd-3668-1`,write flags `writes_incident_state=false`、`writes_auto_repair_result=false`、`writes_ticket=false`。 - Production recurrence API:`awoooi-source-link-canary-gitea-cd-3668-1` 顯示 `latest_stage=source_correlation_linked`、`latest_incident_id=INC-20260505-25E744`、`stage_counts={"source_correlation_linked": 1, "upstream_canary": 1}`。 +- Gitea code-review run `2552`:success。 +- Gitea CD run `2551`:tests / build-and-deploy / post-deploy-checks success。 +- Deploy marker:`658f46dd chore(cd): deploy ca0b3ae [skip ci]`。 +- Production health:`/api/v1/health` 回 `status=healthy`、`environment=prod`、`mock_mode=false`。 +- Production callback API:`/api/v1/platform/runs/callback-replies?project_id=awoooi&callback_reply_status=observed&per_page=5&refresh=true` 回 `total=4`,summary `callback_total=4`、`callback_sent_total=4`、`snapshot_status=partial`,第一筆 `callback_reply_status=sent`、`callback_reply_action=history`。 +- Production callback API baseline:`/api/v1/platform/runs/callback-replies?project_id=awoooi&per_page=1&refresh=true` 回 `total=4`,與 `observed` filter 對齊。 +- Production Browser desktop `/zh-TW/awooop/runs?project_id=awoooi&_v=658f46dd-callback-observed`:表格 50 列、`Run 監控` / `AwoooP` / `MCP` / `Ansible` / `KM` 可見,`horizontalOverflow=0`,無 in-page fetch failure;截圖 `/tmp/awoooi-runs-callback-observed-desktop-658f46dd.png`。 +- Production Browser mobile 390x844 `/zh-TW/awooop/runs?project_id=awoooi&_v=658f46dd-callback-observed-mobile`:表格 50 列、可上下滾動、`horizontalOverflow=0`,無 in-page fetch failure;截圖 `/tmp/awoooi-runs-callback-observed-mobile-658f46dd.png`。 ## Phase 3 - P0 AI Provider / Agent 主責 @@ -288,3 +297,5 @@ Live evidence: | 2026-06-04 | Phase 0 | 100% | 正式站已顯示新 Sidebar / AwoooP subnav,`horizontalOverflow=0` | | 2026-06-04 | Phase 1 | 38% | SLO 回綠;定位 pending approval timeline 留痕、manual-required 狀態浮現與 Runs/Work Items 可視性缺口 | | 2026-06-04 | Phase 5 | 64% | WOOO Open Design D1 已上線;AwoooP Runs / Approvals 控制項吃 `rounded-button`,正式站桌機 / 手機 `horizontalOverflow=0` | +| 2026-06-04 | Phase 2 | 12% | `29a67ec7` 已修 Source Link Canary response parsing;`65bdfd1d` deploy 後 CD / post-deploy checks 通過 | +| 2026-06-04 | Phase 2 | 18% | `ca0b3aec` 已修 callback reply `observed` filter;`658f46dd` deploy 後 production API `observed total=4` 對齊 summary `callback_total=4` |