Merge remote-tracking branch 'gitea/main' into codex/security-supply-chain-contracts-20260512

# Conflicts:
#	docs/LOGBOOK.md
This commit is contained in:
Your Name
2026-05-17 21:48:40 +08:00
2 changed files with 42 additions and 2 deletions

View File

@@ -133,6 +133,46 @@
- `git diff --check` 通過。
- 敏感字串掃描確認本輪未保存 Kali SSH 密碼、常見 token pattern、private key material 或 `GITEA_READONLY_TOKEN` value也未出現 `token_value_collection_allowed``repo_write_allowed``refs_sync_allowed``github_primary_switch_authorized``action_buttons_allowed``runtime_execution_authorized` 被打開。
## 2026-05-17 | T33 AwoooP 列表新增 AI 補救證據篩選
**背景**T31 已讓 Run List / Approval List 顯示 `remediation_summary`T32 也讓 Telegram 主卡顯示 dry-run evidence。但前端仍只能「看見」AI 證據狀態,不能直接用「只讀試跑 / 有寫入旗標 / 受阻 / 缺證據」篩選。這會讓 AwoooP 比較像觀察頁,而不是 AI 自動化管理介面。
**修正**
- `GET /api/v1/platform/runs/list` 新增 `remediation_status` query
- 支援 `no_evidence / read_only_dry_run / write_observed / blocked / observed`
- filter 會先建立每個 Run 的 durable ADR-100 remediation summary再依 status 篩選並回傳正確 `total/page/per_page`
- `GET /api/v1/platform/approvals` 同步新增 `remediation_status` query讓待審佇列可用同一套 AI 證據狀態過濾。
- `/awooop/runs` 新增 AI 證據篩選器,和 project/state filter 並列;選擇後會呼叫 `remediation_status=...`
- `/awooop/approvals` 新增 AI 證據篩選器;新文案補進 `zh-TW` / `en` i18n。
- 修補 production 驗證抓到的漏抓問題:全域 `remediation_status` filter 不能沿用列表 sidecar context 的 500 筆上限。production 有 4176+ runs真正的 evidence rows 在較舊頁面;已改成依 candidate rows 動態放大 context window上限 20,000避免 filter 把舊頁 evidence 誤判成 `no_evidence`
**本地驗證**
- `python -m py_compile apps/api/src/services/platform_operator_service.py apps/api/src/api/v1/platform/operator_runs.py apps/api/tests/test_awooop_operator_timeline_labels.py`pass。
- `ruff check --select F,E9 src/services/platform_operator_service.py src/api/v1/platform/operator_runs.py tests/test_awooop_operator_timeline_labels.py`pass。
- `DATABASE_URL=postgresql+asyncpg://test:test@localhost:5432/test python -m pytest tests/test_awooop_operator_timeline_labels.py -q`12 passed。
- i18n JSON parsepass。
- `pnpm --filter @awoooi/web typecheck`pass。
- `pnpm --dir apps/web exec next lint --file 'src/app/[locale]/awooop/runs/page.tsx' --file 'src/app/[locale]/awooop/approvals/page.tsx'`exit 0仍有這兩個 legacy pages 原有 literal-string warnings新增 filter 文案走 i18n。
- `NEXT_PUBLIC_API_URL=https://awoooi.wooo.work pnpm --filter @awoooi/web build`pass僅既有 Sentry setup / webpack cache warnings。
**推版與 production 驗證**
- `665e72ba feat(awooop): filter runs by remediation evidence` 已推 Gitea mainCode Review run `2211` successCD run `2210` successdeploy marker `e6a62bb1 chore(cd): deploy 665e72b [skip ci]`
- 首次 production filter 驗證發現 `read_only_dry_run` 回 0根因是 4176 runs 下 context cap 500 漏掉較舊 evidence rows。
- `a3f2b010 fix(awooop): widen remediation filter context` 修正後推 Gitea mainCode Review run `2214` successCD run `2213` success最新 deploy marker `0d9cde51 chore(cd): deploy a3f2b01 [skip ci]`
- `https://awoooi.wooo.work/api/v1/health`200 healthyPostgreSQL / Redis / Ollama / OpenClaw / SigNoz all up。
- Production API `GET /api/v1/platform/runs/list?project_id=awoooi&remediation_status=read_only_dry_run&page=1&per_page=5``total=2`,兩列分別是 `44109526-8fea-508e-a0f9-af818514ab59``6d8feeaa-1035-570f-a03f-9287c1036746`,均為 `status=read_only_dry_run``latest_route=auto_repair_executor/ssh_diagnose/read``writes_incident_state=false``writes_auto_repair_result=false`
- Production API status sweep`no_evidence=4183``read_only_dry_run=2``observed=0``write_observed=0``blocked=0`
- Production API `GET /api/v1/platform/approvals?project_id=awoooi&remediation_status=read_only_dry_run``total=0`,目前無待審批列。
- Playwright production Run List check`/zh-TW/awooop/runs` AI 證據篩選選 `read_only_dry_run` 後,畫面顯示 2 筆與 `auto_repair_executor/ssh_diagnose/read`screenshot `/tmp/awoooi-t33-runs-evidence-filter.png`
- Playwright production Approval List check`/zh-TW/awooop/approvals` AI 證據篩選器可操作,選 `read_only_dry_run` 後佇列仍為空console/page errors = 0screenshot `/tmp/awoooi-t33-approvals-evidence-filter.png`
**目前整體進度**
- Alertmanager 低風險自動修復主線:約 98%。
- 完整 AI 自動化管理產品化:約 98%。
- 告警詳情/歷史/主卡可追溯:約 97%。
- Telegram 首屏流程可判讀:約 92%。
- 前端 AI 自動化管理介面同步:約 93%。
- T33 把 AI 證據狀態從展示推進到可操作篩選。下一段應把 Telegram 卡片的「詳情/歷史」再導向 AwoooP 對應 Run/Incident 視圖,並收斂成單一 operator entrypoint。
## 2026-05-17 | T32 Telegram 主告警卡顯示 AI 補救試跑證據
**背景**T29-T31 已把 ADR-100 remediation dry-run evidence 接到 Telegram 詳情/歷史、AwoooP Work Items、Run Detail、Approval Decision、Run List / Approval List。但 Telegram 主告警卡仍只顯示「ACTION REQUIRED / 流程進度 / AI 自動化鏈路」,值班者不按「詳情/歷史」時仍看不出 AI 是否已做只讀補救試跑、是否真的沒有寫入 incident / auto-repair 狀態、目前是否只是等人工審批。這正對應截圖中「無法知道跑到哪個流程、是否真的 AI 自動化處理」的體驗缺口。

View File

@@ -41,7 +41,7 @@ resources:
images:
- name: 192.168.0.110:5000/library/api:IMAGE_TAG_PLACEHOLDER
newName: 192.168.0.110:5000/awoooi/api
newTag: 665e72ba33228771acc3195d15bb5b80617e5417
newTag: a3f2b010f8415e83dcb9882361125363bf749f8d
- name: 192.168.0.110:5000/library/web:IMAGE_TAG_PLACEHOLDER
newName: 192.168.0.110:5000/awoooi/web
newTag: 665e72ba33228771acc3195d15bb5b80617e5417
newTag: a3f2b010f8415e83dcb9882361125363bf749f8d