docs(awooop): record t62 recurrence dry run [skip ci]

This commit is contained in:
Your Name
2026-05-18 21:51:48 +08:00
parent 5c934de83d
commit 0028993851
2 changed files with 51 additions and 0 deletions

View File

@@ -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` successCD `1802` successdeploy 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。

View File

@@ -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 verified2026-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 mainCode Review run `1803` successCD run `1802` successdeploy marker `5c934de8 chore(cd): deploy d1ebcda [skip ci]`
- Production evidencepreview `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 evidencePlaywright 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