docs(logbook): record awooop timeline deploy [skip ci]
This commit is contained in:
@@ -1,3 +1,42 @@
|
||||
## 2026-05-07 | AwoooP Run Detail / Timeline 已上線,補齊 Telegram 狀態對照入口
|
||||
|
||||
**背景**:Telegram 戰情室訊息已經開始收斂為「主卡 + 更新 + 摘要」,但值班者仍需要一個可回查的 AwoooP Console 入口,把同一個 Run 的 inbound event、outbound message、MCP call、step journal 與 runtime state 放在同一條時間線,避免只靠 Telegram 純文字判斷。
|
||||
|
||||
**本次修補**:
|
||||
- `GET /api/v1/platform/runs/{run_id}/detail` 新增 Run detail API,回傳 run summary、step journal、inbound events、outbound messages、MCP gateway audit 與聚合 timeline。
|
||||
- `/zh-TW/awooop/runs` 的 run id 改成可點擊連到 detail page。
|
||||
- 新增 `/zh-TW/awooop/runs/[run_id]` 前端頁面,提供狀態、trace、trigger、cost、duration、error 與 timeline 檢視。
|
||||
- 補 router order regression test,確保 `/runs/{run_id}/detail` 不會被既有 `/runs/{run_id}` 動態路由吃掉。
|
||||
|
||||
**驗證**:
|
||||
- `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_platform_router_order.py`
|
||||
- `pytest apps/api/tests/test_platform_router_order.py apps/api/tests/test_awooop_operator_auth.py -q` → 7 passed。
|
||||
- `pnpm --filter @awoooi/web typecheck` 通過。
|
||||
- `NEXT_PUBLIC_API_URL='https://awoooi.wooo.work' pnpm --filter @awoooi/web build` 通過,route list 含 `/[locale]/awooop/runs/[run_id]`。
|
||||
- `ruff --select I apps/api/src/services/platform_operator_service.py apps/api/src/api/v1/platform/operator_runs.py apps/api/tests/test_platform_router_order.py` 通過。
|
||||
- Gitea Code Review `#1494` success,CD `#1493` success,CD 自動 deploy marker `cd637ef6 chore(cd): deploy 66e22e2 [skip ci]`。
|
||||
- K8s `awoooi-api` / `awoooi-web` / `awoooi-worker` 已 rollout 到 image tag `66e22e26...`。
|
||||
- Production smoke:`/api/v1/health` 200、`/zh-TW/awooop/runs` 200、`/zh-TW/awooop/runs/018f2d04-4c37-7a18-b764-df0df0cbe111` 200。
|
||||
- Detail API 對不存在 run 回傳預期 404 JSON,未出現 500。
|
||||
|
||||
## 2026-05-07 | AsyncSSH INFO log `%d format` 噪音止血,避免誤判主機診斷失敗
|
||||
|
||||
**背景**:Run Detail 上線後檢查 production log,仍看到 `TypeError: %d format: a real number is required, not str`。堆疊來自 `asyncssh/channel.py` 的 INFO log `Received exit status %d`,不是 AwoooP detail API,也不是新的 Telegram formatter。這類第三方 logging traceback 會污染 API log,並讓值班者誤以為 SSH 診斷或自動修復又失敗。
|
||||
|
||||
**本次修補**:
|
||||
- `SSHProvider` 在成功載入 `asyncssh` 後,將 `logging.getLogger("asyncssh")` 調整為 `WARNING`。
|
||||
- 保留 AWOOOI 自己的 structured MCP audit / provider log 作為觀測來源,不再依賴 AsyncSSH 第三方 INFO log。
|
||||
- 新增 regression test,鎖定 AsyncSSH logger 會被調整為 WARNING。
|
||||
|
||||
**驗證**:
|
||||
- `python -m py_compile apps/api/src/plugins/mcp/providers/ssh_provider.py apps/api/tests/test_ssh_provider_tools.py`
|
||||
- `pytest apps/api/tests/test_ssh_provider_tools.py apps/api/tests/test_platform_router_order.py apps/api/tests/test_awooop_operator_auth.py -q` → 15 passed。
|
||||
- `ruff --select I apps/api/src/plugins/mcp/providers/ssh_provider.py apps/api/tests/test_ssh_provider_tools.py apps/api/src/api/v1/platform/operator_runs.py apps/api/tests/test_platform_router_order.py` 通過。
|
||||
- Gitea Code Review `#1496` success,CD `#1495` success,CD 自動 deploy marker `c00c7be9 chore(cd): deploy 336fd76 [skip ci]`。
|
||||
- K8s `awoooi-api` / `awoooi-web` / `awoooi-worker` 已 rollout 到 image tag `336fd767745d415c7779a1ee27e5c881ad2fe6ae`。
|
||||
- Production smoke:`/api/v1/health` 200、`/zh-TW/awooop/runs` 200、`/zh-TW/awooop/runs/018f2d04-4c37-7a18-b764-df0df0cbe111` 200。
|
||||
- 新部署後短窗口 log grep:未再看到 `TypeError: %d format`、`Received exit status`、`Traceback`、`run_detail` 或 `platform_operator` 異常。
|
||||
|
||||
## 2026-05-06 | Telegram 將 SSH 診斷 lane 與自動修復 lane 分離
|
||||
|
||||
**背景**:戰情室截圖中 `ssh_diagnose` 這類只讀主機診斷失敗時,也會出現 `[AUTO] AI 自動修復失敗,已升級人工介入`。這會讓值班者誤以為系統已嘗試修復且修復失敗;實際上它只是「診斷工具失敗」或「診斷已完成但沒有安全修復動作」。
|
||||
|
||||
Reference in New Issue
Block a user