docs(logbook): record cd 188 sync deploy [skip ci]

This commit is contained in:
Your Name
2026-05-07 09:56:17 +08:00
parent 6ae3a55aed
commit 1b7f46f02c

View File

@@ -1,3 +1,66 @@
## 2026-05-07 | CD 188 ops 腳本同步修復,移除 scp 不支援參數
**背景**:手動檢查 Gitea CD log 時發現 `Sync Ops Scripts to 188` 步驟雖然被標成非致命,但實際上 `scp` 收到 `ssh` 專用的 `-n` 參數後會報 `scp: unrecognized option: n`,導致 `docker-health-monitor.sh``pg-backup.sh` 無法同步到 188。這會讓 188 ops 腳本版本漂移,後續監控與備份治理難以信任。
**本次修補**
- `.gitea/workflows/cd.yaml` 將 188 連線參數拆成 `SSH_188_COMMON_OPTS``SSH_188_OPTS``SCP_188_OPTS`
- `ssh` 保留 `-n`,避免非互動式 job 卡 stdin。
- `scp` 改用不含 `-n``SCP_188_OPTS`
- 加上繁體中文註解,明確記錄 `scp` 不支援 `ssh -n` 的原因。
**驗證**
- `ruby -e 'require "yaml"; YAML.load_file(".gitea/workflows/cd.yaml")'``yaml ok`
- `git diff --check` → clean。
- Gitea Code Review `#1859` success。
- 因 workflow-only push 不會自動觸發 CD已用 `workflow_dispatch` 手動補跑 CD `#1860`
- CD `#1860` 三個 job 全部成功:
- `tests` → success。
- `build-and-deploy` → success。
- `post-deploy-checks` → success。
- 188 同步步驟實際輸出:
- `docker-health-monitor.sh 已同步`
- `pg-backup.sh 已同步`
- `權限設定完成`
- 未再出現 `scp: unrecognized option: n`
- CD deploy marker`6ae3a55a chore(cd): deploy 94e680a [skip ci]`
- K8s live image
- `awoooi-api``192.168.0.110:5000/awoooi/api:94e680add4125077bb3587a926ada2ab2398b4e4`
- `awoooi-web``192.168.0.110:5000/awoooi/web:94e680add4125077bb3587a926ada2ab2398b4e4`
- `awoooi-worker``192.168.0.110:5000/awoooi/api:94e680add4125077bb3587a926ada2ab2398b4e4`
- K8s rollout`awoooi-api` / `awoooi-web` / `awoooi-worker` 均 successfully rolled out。
- HTTP smoke`/api/v1/health` → 200`/zh-TW/awooop/runs` → 200。
判讀:這次是 CD 治理修補,不改 runtime 業務邏輯;但它會影響 188 ops 腳本是否能被穩定下發。修復後188 健康監控與備份腳本同步恢復可信。
## 2026-05-07 | AwoooP 審批詳情回接 Run Timeline避免決策後狀態斷裂
**背景**Run Detail / Action Panel 已能從 `waiting_approval` 導向審批頁,但審批頁仍依賴 `/approvals` 列表資料Approve / Reject 完成後也只回列表。值班者無法自然回到同一個 Run 的完整 timeline容易造成 Telegram、Approval Queue 與 AwoooP Run 狀態各看各的。
**本次修補**
- `/zh-TW/awooop/approvals/[run_id]` 改以 `GET /api/v1/platform/runs/{run_id}/detail` 作為 source of truth。
- 只有 `run.state === "waiting_approval"` 時才顯示 approve / reject 操作。
- 若 Run 已不在等待審批,頁面改顯示「目前不需要人工決策」,並提供回 Run Timeline 的入口。
- Approve / Reject 成功後導回 `/awooop/runs/{run_id}?project_id=...`,讓操作者立刻看到後續 step、outbound message 與 audit 脈絡。
- 視覺改成目前 AwoooP 白底邊框 operator-console 風格,不再延續舊版暗色卡片。
- 所有可見字串移到 `awooop.approvalDecision` i18n namespace補齊 `zh-TW``en`
**驗證**
- `node -e "JSON.parse(...zh-TW.json); JSON.parse(...en.json)"` → messages ok。
- `pnpm --filter @awoooi/web lint -- --file 'src/app/[locale]/awooop/approvals/[run_id]/page.tsx'` → No ESLint warnings or errors。
- `pnpm --filter @awoooi/web typecheck` → success。
- `NEXT_PUBLIC_API_URL='https://awoooi.wooo.work' pnpm --filter @awoooi/web build` → success`/[locale]/awooop/approvals/[run_id]` route 存在。
- `rg "192\\.168|10\\.42\\.|NEXT_PUBLIC_API_URL.*192" ...` → no match。
- Gitea Code Review `#1858` successCD `#1857` success。
- CD deploy marker`4810125e chore(cd): deploy 3df2311 [skip ci]`
- K8s `awoooi-api` / `awoooi-web` / `awoooi-worker` 已 rollout 到 image tag `3df23112ef8071147560f4fd5bbfdac41522d8de`
- Production smoke
- `/zh-TW/awooop/approvals/018f2d04-4c37-7a18-b764-df0df0cbe111` → 200。
- `/en/awooop/approvals/018f2d04-4c37-7a18-b764-df0df0cbe111` → 200。
- `/zh-TW/awooop/runs/018f2d04-4c37-7a18-b764-df0df0cbe111` → 200。
- Production log 短窗口未看到 `IntlError``MISSING_MESSAGE``run_detail``platform_operator` 或 Traceback。
判讀:審批決策頁已回到 Run Timeline 這條主線AwoooP 的人工閘門不再是孤立頁面。下一步應把審批決策結果與 Telegram 原告警卡狀態更新綁得更緊,讓群組只收摘要,完整操作脈絡留在 Console。
## 2026-05-07 | AwoooP Run Detail 新增下一步判斷 Action Panel
**背景**Run Detail 已可看到完整時間線但值班者仍需要在同一頁快速判斷「AI 還在做」、「等待人工審批」、「已完成可稽核」或「AI 無法閉環需人工接手」。若只呈現 timeline仍然會回到 Telegram 訊息洗版與人工判讀負擔。