Files
ewoooc/docs/memory/observability_ui_qa_guardrails_20260505.md
2026-05-13 18:47:36 +08:00

4.0 KiB
Raw Permalink Blame History

AI 觀測台 UI QA Guardrails2026-05-05

背景

Claude Code Phase 38→55 完成 AI 觀測台 10 頁,但前端曾出現以下問題:

  • 側欄第二/三層字色太暗,看不清楚。
  • 側欄背景回退成近純黑,偏離暖咖啡設計規範。
  • 觀測台頁面 typography / spacing / button / table / chart 容器不一致。
  • observability-system.css 在 template 有 link但 production /static/css/observability-system.css 曾 404。
  • 前端互動曾外露 Error: ...unknown、SQL/Jinja raw error 類文案。

現行治理入口

  • UI 規範 guidedocs/guides/observability_ui_governance.md
  • 部署 SOPdocs/guides/deployment_sop.md
  • 頁面契約 SOTscripts/observability_contract.py
  • 靜態 UI guardscripts/check_observability_ui.py
  • Production smokescripts/check_observability_pages.py
  • 一鍵 QAscripts/check_observability_suite.sh
  • CSS mirror syncscripts/sync_observability_css.py
  • 渲染後視覺契約:scripts/check_observability_visual_contract.sh

必跑指令

修改觀測台 template、route、shell、topbar、CSS 後:

./scripts/quick_review.sh --sync-observability-css
./scripts/quick_review.sh --check-observability-css
./scripts/quick_review.sh --observability-qa

指定環境、渲染後視覺契約或只跑靜態 guard

./scripts/quick_review.sh --observability-smoke --base-url https://mo.wooo.work --timeout 12
./scripts/quick_review.sh --observability-qa --base-url https://mo.wooo.work
./scripts/quick_review.sh --observability-qa --skip-production
./scripts/quick_review.sh --observability-visual --base-url http://127.0.0.1:5016 --timeout 20
./scripts/quick_review.sh --observability-help

等效直接指令:

python3 scripts/sync_observability_css.py
python3 scripts/sync_observability_css.py --check
bash scripts/check_observability_suite.sh
bash scripts/check_observability_visual_contract.sh --base-url http://127.0.0.1:5016 --timeout 20

重要陷阱

  • static/css/observability-system.css 是 canonical CSS。
  • web/static/css/observability-system.css 是 Flask production static route 實際服務用 mirror。
  • 兩者必須 byte-identicalguard 會檢查,不一致時跑 sync_observability_css.py
  • Production smoke 必須看到 觀測台 CSS: HTTP 200, markers=ok
  • 觀測台頁面清單、URL、active_page、內容 marker 不要分散維護,先改 scripts/observability_contract.py
  • quick_review.sh --observability-qa 預設打 production https://mo.wooo.work;測 staging/localhost 時要明確帶 --base-url
  • quick_review.sh --observability-visual 也預設打 production驗證尚未部署的本機變更時必須先啟 Flask local server 並明確帶 --base-url http://127.0.0.1:<port>。若打 production 失敗,先確認正式端是否已部署該版,不要把舊版正式站結果誤判成本機 diff 失敗。
  • Gitea CD 會偵測觀測台 template/CSS/route/QA script/guide 變更deploy 前跑 CSS mirror check + static QAdeploy 後跑 production smoke。QA script 範圍包含 quick_review.shcheck_observability_*observability_contract.pysync_observability_css.py。CD 不會偷偷修 mirror若 check fail先本地跑 sync 後提交。
  • CD 觸發判斷集中在 scripts/check_observability_deploy_gate.py;不要在 .gitea/workflows/cd.yaml 另維護一份長 regex。
  • check_observability_suite.sh 會跑 deploy gate self-test確認觀測台相關檔案會觸發 QA、一般 backend/docs 檔案不會誤觸發。

已鎖住的回歸

  • Times / Georgia / serif 標題字型。
  • 超大 hard-coded clamp title。
  • 圖表 inline style="height:..."
  • 靜態 inline width。
  • 純白 hover/card surface。
  • raw SQL/Jinja exception 外露。
  • raw alert('Error: ...') / unknown 前端文案。
  • 側欄純黑背景。
  • 側欄第二/三層低對比文字。
  • 觀測台 URL 有側欄連結但 Flask route 不存在。
  • 觀測台頁面 200 但內容 marker 缺失。
  • CSS link 存在但 production static asset 404。