diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index 4198f8cd..b8baa4c3 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -1,3 +1,44 @@ +## 2026-05-18 | T62 Recurrence Work Item Safe Preview / Dry-run + +**背景**:T61 已把 `run_completed_no_repair` 轉成 open recurrence work item,但 Operator 仍只能看到「要建立修復 Ticket」,不能在前端確認下一步會怎麼做、會不會寫 incident / auto-repair / ticket、dry-run 是否有留下 history。這會讓 Telegram / AwoooP 仍像黑盒,無法清楚回答「現在跑到哪個流程階段」。 + +**修正**: +- 新增 read-only `GET /api/v1/platform/events/dossier/recurrence/work-item/preview`。 +- 新增 safe `POST /api/v1/platform/events/dossier/recurrence/work-item/dry-run`: + - 依 recurrence read model 選擇 `mode=ticket / reverify / approval_review / observe`。 + - 對 `automation_gap` 產生 Ticket preview,但 `would_create=false`。 + - 明確回傳 `writes_incident_state=false`、`writes_auto_repair_result=false`、`writes_ticket=false`。 + - dry-run 寫入 pre-flight history;本輪 production smoke 至少寫入 timeline event。 +- Work Items 頁的「重複告警工作項」新增「預覽 / 乾跑」按鈕與結果卡,顯示安全閘門、模式、寫入旗標、試跑入庫與 Ticket 預覽。 +- 補 zh-TW / en i18n。 + +**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=postgresql+asyncpg://awoooi:awoooi@localhost:5432/awoooi PYTHONPATH=apps/api pytest apps/api/tests/test_channel_event_dossier_service.py -q`:12 passed。 +- `DATABASE_URL=... PYTHONPATH=apps/api ruff check --select F,E9,I ...`:pass。 +- `node -e "JSON.parse(...zh-TW.json); JSON.parse(...en.json)"`:pass。 +- `pnpm --dir apps/web run typecheck`:pass。 +- `pnpm --dir apps/web exec next lint --file src/app/[locale]/awooop/work-items/page.tsx`:pass。 +- `NEXT_PUBLIC_API_URL=https://awoooi.wooo.work pnpm --dir apps/web run build`:pass with existing Sentry setup warnings。 +- `git diff --check`:pass。 + +**production verification**: +- `d1ebcdac feat(awooop): preview recurrence repair work items` pushed to Gitea main。 +- Gitea Code Review `1803` success;CD `1802` success;deploy marker `5c934de8 chore(cd): deploy d1ebcda [skip ci]`。 +- Health:`https://awoooi.wooo.work/api/v1/health` → `status=healthy`、`mock_mode=false`。 +- Preview API:`work_item_id=incident:INC-20260517-F25B4A` → `schema_version=awooop_recurrence_work_item_preview_v1`、`mode=ticket`、`allowed=true`、`safety_level=read_only`、`writes_incident_state=false`、`writes_auto_repair_result=false`、`writes_ticket=false`、plan step=`prepare_repair_ticket_preview`。 +- Dry-run API:同一 work item → `schema_version=awooop_recurrence_work_item_dry_run_v1`、`mode=ticket`、`verification_result_preview=ticket_preview_ready`、`executed=true`、`next_step=create_repair_ticket`、Ticket preview title=`[AwoooP] DockerContainerUnhealthy recurrence work item: INC-20260517-F25B4A`、`would_create=false`、history `recorded=true`、`timeline_event_id=9972ffbe-705a-4660-ab55-ccdb271a83ca`。 +- Recurrence API:`open_work_item_group_total=2`、`automation_gap_group_total=2`;top work item `incident:INC-20260517-F25B4A` 仍是 `automation_gap` / `create_repair_ticket` / `completed_run_without_auto_repair`。 +- Frontend Playwright smoke:`/zh-TW/awooop/work-items?project_id=awoooi&work_item_id=incident%3AINC-20260517-F25B4A&incident_id=INC-20260517-F25B4A` 顯示導航、工作鏈路、重複告警工作項、focused work item、預覽/乾跑按鈕;點「預覽」後顯示「安全閘門通過」、`incident=false / autoRepair=false / ticket=false` 與 Ticket 預覽;`Application error=false`,console errors=`0`。 + +**目前整體進度**: +- AwoooP observability / truth-chain 可回看:約 98%。 +- 來源告警入庫、重複發生、Sentry / SignOz 與修復結果可見性:約 98%。 +- Telegram callback detail/history 可追溯:約 96%。 +- AI 自動修復閉環:約 96.8%;T62 只完成 safe preview / dry-run / history,不宣稱 `DockerContainerUnhealthy` 已真正自動修復。 +- 前端 AI 自動化管理介面產品化:約 97%。 +- 完整 AI 自動化管理產品化:約 92%。 + ## 2026-05-18 | T61 Recurrence Repair Work Items **背景**:T60 已讓 recurrence group 顯示 `repair_summary` 與 `work_item`,但 production live group `DockerContainerUnhealthy / bitan-pharmacy-bitan-1` 仍呈現 `run_completed_no_repair` 且 `work_item.status=none`。這會讓 Operator 知道「沒有自動修復紀錄」,卻無法在 AwoooP 工作台接手、追蹤或轉 Ticket。 diff --git a/docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md b/docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md index b8506b9e..d312d7f4 100644 --- a/docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md +++ b/docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md @@ -2201,6 +2201,16 @@ Phase 6 完成後 - 邊界:T61 仍不宣稱該 DockerContainerUnhealthy 已真正 AI 自動修復;它把「Run 完成但無 auto-repair execution」從不可操作證據轉成 open work item / Ticket 入口。下一段應定義安全的 Ticket / reverify / replay dry-run 執行入口。 - 目前進度更新:AwoooP truth-chain 可回看約 97.5%;AI 自動修復閉環約 96%;完整 AI 自動化管理產品化約 91%。 +**T62 Recurrence work item safe preview / dry-run production verified(2026-05-18 台北)**: +- 觸發:T61 已產生 open recurrence work item,但 Operator 仍無法在前端確認下一步會怎麼處理、是否會寫 incident / auto-repair / ticket、dry-run 是否有留下可回看的 history。 +- 修正:新增 `GET /api/v1/platform/events/dossier/recurrence/work-item/preview` 與 `POST /api/v1/platform/events/dossier/recurrence/work-item/dry-run`。兩者都從 recurrence read model 取證;dry-run 只寫 pre-flight history,不改 incident state、不寫 auto-repair result、不建立 ticket。 +- UI:`/awooop/work-items` 的「重複告警工作項」新增「預覽 / 乾跑」按鈕與結果卡,顯示安全閘門、模式、寫入旗標、試跑入庫與 Ticket preview。所有新文案走 zh-TW / en i18n。 +- Production deploy:`d1ebcdac feat(awooop): preview recurrence repair work items` 已推 Gitea main;Code Review run `1803` success;CD run `1802` success;deploy marker `5c934de8 chore(cd): deploy d1ebcda [skip ci]`。 +- Production evidence:preview `incident:INC-20260517-F25B4A` 回 `mode=ticket`、`allowed=true`、`safety_level=read_only`、`writes_incident_state=false`、`writes_auto_repair_result=false`、`writes_ticket=false`、plan step=`prepare_repair_ticket_preview`。dry-run 回 `verification_result_preview=ticket_preview_ready`、`executed=true`、Ticket preview `would_create=false`,history `recorded=true` 且 `timeline_event_id=9972ffbe-705a-4660-ab55-ccdb271a83ca`。 +- Frontend evidence:Playwright production smoke 確認 Work Items 頁導航仍可見、focused work item 可見、預覽/乾跑按鈕可見;點「預覽」後顯示「安全閘門通過」、`incident=false / autoRepair=false / ticket=false` 與 Ticket 預覽,console errors=0。 +- 邊界:T62 仍不宣稱 `DockerContainerUnhealthy` 已真正 AI 自動修復;它完成的是「可操作前的安全預覽 / 乾跑 / history」。下一段才可設計受控 ticket apply、reverify、replay 或人工接手流程。 +- 目前進度更新:AwoooP truth-chain 可回看約 98%;AI 自動修復閉環約 96.8%;完整 AI 自動化管理產品化約 92%。 + --- ### 2026-04-20 晚 (台北) — C1-C4 全流程串接 — Playbook 鏈路保護(commit de2d34d)