From c52ebfc0423bea993fdc21dd205f78d2262a660e Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 7 May 2026 06:06:33 +0800 Subject: [PATCH] docs(logbook): record awooop run detail i18n deploy [skip ci] --- docs/LOGBOOK.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index 8a6dfbc4..a76bd585 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -1,3 +1,24 @@ +## 2026-05-07 | AwoooP Run Detail 頁面抽離 i18n,避免控制台硬編碼漂移 + +**背景**:AwoooP Run Detail / Timeline 已上線後,仍有新頁面本身的繁中文字串直接寫在 TSX 裡。依前端規範,AwoooP Operator Console 必須跟主站一致走 `next-intl`,避免後續英文頁、審批頁與 Run timeline 語義逐步漂移。 + +**本次修補**: +- `/zh-TW/awooop/runs/[run_id]` 的 UI label、錯誤訊息、狀態文字、時間線空狀態全部改走 `awooop.runDetail` i18n namespace。 +- 補 `apps/web/messages/zh-TW.json` 與 `apps/web/messages/en.json` 的 Run Detail 字典。 +- 時間格式改依目前 locale 顯示,避免英文頁仍固定用 `zh-TW` 格式。 +- Timeline 狀態 badge 從 raw status 改成可翻譯狀態字串;未知狀態保留原始值,避免後端新增狀態時前端直接崩潰。 + +**驗證**: +- `node -e "JSON.parse(...zh-TW.json); JSON.parse(...en.json)"` → messages ok。 +- `NEXT_PUBLIC_API_URL='https://awoooi.wooo.work' pnpm --filter @awoooi/web build` → success。 +- `pnpm --filter @awoooi/web typecheck` → success。 +- `pnpm --filter @awoooi/web lint -- --file 'src/app/[locale]/awooop/runs/[run_id]/page.tsx'` → No ESLint warnings or errors。 +- `rg "192\\.168|10\\.42\\.|NEXT_PUBLIC_API_URL.*192" ...` → no match。 +- Gitea Code Review `#1854` success,CD `#1853` success,CD 自動 deploy marker `8b9a974c chore(cd): deploy f960a4a [skip ci]`。 +- K8s `awoooi-api` / `awoooi-web` / `awoooi-worker` 已 rollout 到 image tag `f960a4a19b671f25a05ab2b589019a85d2f974f6`。 +- Production smoke:`/zh-TW/awooop/runs` 200、`/zh-TW/awooop/runs/{run_id}` 200、`/en/awooop/runs/{run_id}` 200。 +- Production log 短窗口未看到 `IntlError`、`MISSING_MESSAGE`、`run_detail`、`platform_operator` 或 Traceback。 + ## 2026-05-07 | AwoooP Run Detail / Timeline 已上線,補齊 Telegram 狀態對照入口 **背景**:Telegram 戰情室訊息已經開始收斂為「主卡 + 更新 + 摘要」,但值班者仍需要一個可回查的 AwoooP Console 入口,把同一個 Run 的 inbound event、outbound message、MCP call、step journal 與 runtime state 放在同一條時間線,避免只靠 Telegram 純文字判斷。