37 Commits

Author SHA1 Message Date
OoO
32b7071ab6 V10.614 部署監控頁繁中化
All checks were successful
CD Pipeline / deploy (push) Successful in 1m11s
2026-06-16 10:03:18 +08:00
OoO
239b773288 V10.613 高可見頁面繁中化
All checks were successful
CD Pipeline / deploy (push) Successful in 1m14s
2026-06-16 09:54:27 +08:00
OoO
bfc5dac624 Tighten PPT audit regeneration workflow 2026-05-24 17:34:18 +08:00
OoO
e7e045253d 補 OpenClaw QA 備援與市場情報交接
All checks were successful
CD Pipeline / deploy (push) Successful in 1m4s
2026-05-19 12:46:43 +08:00
OoO
45ae7a3d88 修正 Code Review Gemini 備援遙測
All checks were successful
CD Pipeline / deploy (push) Successful in 1m6s
2026-05-19 12:31:48 +08:00
OoO
c55c74b999 強化 PPT 視覺 QA runtime 顯示
All checks were successful
CD Pipeline / deploy (push) Successful in 1m5s
2026-05-19 11:59:18 +08:00
OoO
d2d6bcd263 重整 PPT 視覺 QA 產線首屏
All checks were successful
CD Pipeline / deploy (push) Successful in 1m5s
2026-05-19 11:37:18 +08:00
OoO
c383a37f3f 補 PPT 視覺 QA stale recovery
All checks were successful
CD Pipeline / deploy (push) Successful in 1m4s
2026-05-19 10:03:10 +08:00
OoO
21cdbdb75c 修正 PPT 視覺 QA 多 worker 狀態
All checks were successful
CD Pipeline / deploy (push) Successful in 1m2s
2026-05-19 09:15:31 +08:00
OoO
583e318295 補 PPT 視覺 QA 背景狀態
All checks were successful
CD Pipeline / deploy (push) Successful in 1m6s
2026-05-19 09:06:11 +08:00
OoO
60bc8bf2e2 補 PPT 視覺 QA runtime checklist
All checks were successful
CD Pipeline / deploy (push) Successful in 1m6s
2026-05-19 01:24:07 +08:00
OoO
4a6f6a2007 補 PPT 報表覆蓋矩陣
All checks were successful
CD Pipeline / deploy (push) Successful in 1m4s
2026-05-19 01:09:58 +08:00
OoO
c08f76f315 補 PPT AiderHeal 執行狀態
All checks were successful
CD Pipeline / deploy (push) Successful in 1m5s
2026-05-19 00:49:06 +08:00
OoO
e60707cdfb 補 PPT AiderHeal 去重鎖
All checks were successful
CD Pipeline / deploy (push) Successful in 1m5s
2026-05-19 00:35:11 +08:00
OoO
02682c81ed 讓 PPT AiderHeal 背景派工
All checks were successful
CD Pipeline / deploy (push) Successful in 1m5s
2026-05-19 00:30:24 +08:00
OoO
2de9386a40 修正 PPT AiderHeal 派工
All checks were successful
CD Pipeline / deploy (push) Successful in 1m5s
2026-05-19 00:23:32 +08:00
OoO
dddafc579b 強化 PPT 視覺問題追蹤
All checks were successful
CD Pipeline / deploy (push) Successful in 1m6s
2026-05-19 00:16:21 +08:00
OoO
f51dc173f7 補 PPT 視覺 QA 診斷摘要
All checks were successful
CD Pipeline / deploy (push) Successful in 1m8s
2026-05-19 00:04:27 +08:00
OoO
aa8c2c7148 補強 PPT 視覺 QA 補跑與全類型審核
All checks were successful
CD Pipeline / deploy (push) Successful in 1m5s
2026-05-18 20:57:34 +08:00
OoO
be0dd41472 新增 PPT 審核歷史同頁回放
All checks were successful
CD Pipeline / deploy (push) Successful in 1m5s
2026-05-18 20:40:25 +08:00
OoO
0609194ef5 修正 PPT 預覽抽屜標題選擇器
All checks were successful
CD Pipeline / deploy (push) Successful in 1m3s
2026-05-18 20:33:38 +08:00
OoO
b8fe5f0c58 新增 PPT 同頁 PDF 預覽抽屜
All checks were successful
CD Pipeline / deploy (push) Successful in 1m4s
2026-05-18 20:28:49 +08:00
OoO
9a88b32e90 新增 PPT 本頁批次預熱
All checks were successful
CD Pipeline / deploy (push) Successful in 1m5s
2026-05-18 20:15:26 +08:00
OoO
48d71c711b 新增 PPT 預覽快取預熱操作
All checks were successful
CD Pipeline / deploy (push) Successful in 1m7s
2026-05-18 20:03:19 +08:00
OoO
7e2f1ac671 標示 PPT 預覽快取狀態
All checks were successful
CD Pipeline / deploy (push) Successful in 1m5s
2026-05-18 19:48:14 +08:00
OoO
d946c1abab 讓 PPT 異常隊列可重跑報表
All checks were successful
CD Pipeline / deploy (push) Successful in 1m5s
2026-05-18 19:32:28 +08:00
OoO
9981bc9d22 強化 PPT 異常優先隊列
All checks were successful
CD Pipeline / deploy (push) Successful in 1m5s
2026-05-18 19:21:44 +08:00
OoO
b5511e818f 優化 PPT 產線工作隊列
All checks were successful
CD Pipeline / deploy (push) Successful in 1m5s
2026-05-18 19:13:50 +08:00
OoO
ebbf7bc063 優化 PPT 產線健康總覽
All checks were successful
CD Pipeline / deploy (push) Successful in 1m6s
2026-05-18 19:00:18 +08:00
OoO
1262017261 優化 PPT 最近預覽入口
Some checks failed
CD Pipeline / deploy (push) Has been cancelled
2026-05-18 16:07:55 +08:00
OoO
d2d8dbab65 強化 PPT 產線與線上預覽
Some checks failed
CD Pipeline / deploy (push) Has been cancelled
2026-05-18 15:44:11 +08:00
OoO
5a21e2394e 略過 SQLite host probe 寫入
All checks were successful
CD Pipeline / deploy (push) Successful in 58s
2026-05-13 18:50:14 +08:00
OoO
326285d8b9 test(p55): 觀測台 mutation endpoint logged-in success path 補測 (23/23 PASS)
P53 之前 mutation endpoint 只測 anon block (302),logged-in 成功路徑零覆蓋:
- /playbooks/toggle/<id>: 翻 is_active 邏輯
- /budget/force_throttle: cost_throttle.evaluate() 呼叫
- /ai_calls/trigger_code_review: code_review_pipeline 觸發
- /host_health/trigger_autoheal: autoheal playbook 觸發

新增 5 cases:
- test_playbook_toggle_404_on_missing: fetchone()=None 必回 404
- test_playbook_toggle_flips_active_flag: False→True 翻轉 + 中文 message
- test_budget_force_throttle_invokes_evaluate: monkeypatch 假 throttle service
- test_ai_calls_trigger_code_review_returns_json: 至少回 JSON 不爆
- test_host_health_trigger_autoheal_returns_json: 至少回 JSON 不爆

設計重點:對未來 service 重構容忍(status code 收 200/400/500/503)
但堅持「JSON response shape」契約 — 防 HTML error page 漏出。
2026-05-05 12:17:54 +08:00
OoO
a142e85880 test(p53): 觀測台 smoke 涵蓋 P38-P52 新增 11 endpoint (18/18 PASS)
戰役從 P27 6 路由擴展到 P52 共 20 路由(含 5 新 GET / 5 新 POST),
原 12 tests 只蓋 P27-31 範圍,P38-P52 共 11 endpoint 無 regression 防護。

新增測試:
- test_overview_index_200: /observability/ root index
- test_overview_dashboard_200: P45 總覽頁
- test_rag_queries_200: P51 RAG 召回詳情
- test_business_intel_200: P48 商業面 × AI 編排
- test_agent_orchestration_200: P46 Agent 編排矩陣
- test_health_indicator_api_returns_json: P52 topbar 健康燈 JSON API
- test_anon_get_redirects_to_login: 12 GET 路徑全強制 login (擴充 6→12)
- test_anon_post_blocked: 8 POST mutation 全強制 login (擴充 3→8)

prod 實證:mo.wooo.work 11 endpoint 全 Flask 200/308 服務(curl 已驗)。
20/20 routes @login_required 100% 覆蓋(python regex audit)。
2026-05-05 01:09:52 +08:00
OoO
86f1fd5f50 fix(p33): admin observability auth hardening — Critic CRITICAL 修正
Some checks failed
CD Pipeline / deploy (push) Has been cancelled
Critic 1 CRITICAL 發現:6 個觀測端點零認證 + csrf_exempt
→ Flask 一旦對外可達,任何人可 POST 晉升 episode / 改月預算
→ X-Forwarded-User header client 偽造 = 偽造 admin 身份

修正:
1. 全 8 個 route handler 加 @login_required(session-based auth)
   - GET: ai_calls / promotion_review / quality_trend / host_health /
          budget / ppt_audit_history
   - POST: promotion_review/approve, .../reject, budget/update/<id>
2. promotion_review_approve approver_hash 改從 Flask session 取
   (get_current_user().username)— 不再信 X-Forwarded-User header
3. app.py 移除 csrf.exempt(admin_observability_bp)
4. 12 tests(10 原 + 2 新 auth gate)全 PASS:
   - test_anon_get_redirects_to_login: 6 GET 路由匿名 → 302
   - test_anon_post_blocked: 3 POST mutation 匿名 → 302
2026-05-04 14:19:54 +08:00
OoO
99d2f3c543 fix(p32): admin URL prefix /admin → /observability — 避開 188 nginx SPA shadow
All checks were successful
CD Pipeline / deploy (push) Successful in 2m25s
Root cause(curl 實證):
  prod 188 nginx 對 /admin/* 設 try_files → SPA index.html fallback
  → Phase 27-31 的 6 個 Flask admin 路由全被 nginx 攔截
  → 外部 GET /admin/ai_calls 回 7480 byte 靜態 HTML(同 etag = SPA shell)
  → 我之前說「6 admin 頁 prod 200」是回了 200,但 body 不是 Flask 渲染

修法:
  Blueprint url_prefix /admin → /observability
  → 6 個觀測頁實際生效在 /observability/* 不被 SPA 遮蔽
  → SPA frontend 仍擁有 /admin/* 命名空間(不破壞既有前端)

更新範圍:
  - routes/admin_observability_routes.py: url_prefix + 註解全改
  - 6 templates: 所有 href / fetch() 路徑改 /observability/
  - tests/test_admin_observability_routes.py: client.get/post 路徑改
  - 10/10 smoke tests 仍 PASS

統帥訪問新路徑:
  http://192.168.0.188/observability/ai_calls
  http://192.168.0.188/observability/host_health
  http://192.168.0.188/observability/budget
  http://192.168.0.188/observability/promotion_review
  http://192.168.0.188/observability/quality_trend
  http://192.168.0.188/observability/ppt_audit_history
2026-05-04 14:13:27 +08:00
OoO
82595ab4ac test(p31): admin observability 6 路由 smoke tests (10/10 PASS)
防 Phase 27/28/29 6 個 admin 頁未來被改壞無人察覺。

覆蓋:
- /admin/ai_calls         200 + DB error fallback (2 cases)
- /admin/promotion_review 200
- /admin/quality_trend    200
- /admin/budget           200
- /admin/budget/update/<id> 輸入驗證 (3 cases: 拒負 budget / 拒 alert>100 / 收正常)
- /admin/ppt_audit_history 200 (掃 reports/ 不需 DB)
- /admin/host_health      200 (mock requests.get 三主機全 down 仍 render)

技術重點:
- 全 mock get_session,不接真 DB
- jinja2 csrf_token() stub 避免 base.html 渲染失敗
- requests.get monkeypatch 避免測試誤打三主機 11434

跑法:venv pytest tests/test_admin_observability_routes.py -v
2026-05-04 13:51:07 +08:00