OoO
|
3fca720fa1
|
test(observability): guard sidebar navigation design
CD Pipeline / deploy (push) Failing after 2m11s
|
2026-05-05 15:41:39 +08:00 |
|
OoO
|
6a0d5c138d
|
test(observability): add one-shot QA suite
CD Pipeline / deploy (push) Has been cancelled
|
2026-05-05 15:39:55 +08:00 |
|
OoO
|
b963dcf209
|
test(observability): add production page smoke check
CD Pipeline / deploy (push) Has been cancelled
|
2026-05-05 15:35:47 +08:00 |
|
OoO
|
62276f8b0c
|
chore(observability): wire UI guard into quick review
CD Pipeline / deploy (push) Failing after 1m57s
|
2026-05-05 15:31:04 +08:00 |
|
OoO
|
07c9e200d0
|
test(observability): add UI regression guard
CD Pipeline / deploy (push) Failing after 1m39s
|
2026-05-05 15:04:21 +08:00 |
|
OoO
|
fa3e0884ad
|
docs(observability): 補齊 UI 治理規範
CD Pipeline / deploy (push) Failing after 1m38s
|
2026-05-05 14:59:45 +08:00 |
|
OG T
|
ddcfd9603b
|
fix(ops): cap momo runtime startup load
CD Pipeline / deploy (push) Has been cancelled
|
2026-05-05 14:58:11 +08:00 |
|
OoO
|
ccd26415f3
|
fix(observability): 導入標題尺度 token 與 modal 樣式
CD Pipeline / deploy (push) Has been cancelled
|
2026-05-05 14:54:17 +08:00 |
|
OoO
|
668d98cd3c
|
fix(observability): 清理硬編碼樣式與圖表容器
CD Pipeline / deploy (push) Failing after 9m49s
|
2026-05-05 14:41:00 +08:00 |
|
OoO
|
2c11a3dc81
|
fix(observability): 強化跨頁 responsive 與可及性
CD Pipeline / deploy (push) Failing after 4m5s
|
2026-05-05 14:31:56 +08:00 |
|
OoO
|
4a745c27b4
|
fix(observability): 精修資料密集頁面視覺層級
CD Pipeline / deploy (push) Has been cancelled
|
2026-05-05 14:27:43 +08:00 |
|
OoO
|
3b9a74773c
|
fix(observability): 補齊精修樣式提交
CD Pipeline / deploy (push) Has started running
|
2026-05-05 14:20:49 +08:00 |
|
OoO
|
be986b8b97
|
fix(observability): 缺表時改為安全空狀態
CD Pipeline / deploy (push) Has been cancelled
|
2026-05-05 14:19:09 +08:00 |
|
OoO
|
e28f604ec6
|
fix(observability): 收斂標題尺度與商業卡片排版
CD Pipeline / deploy (push) Has been cancelled
|
2026-05-05 14:14:24 +08:00 |
|
OoO
|
4afcf3376b
|
fix(observability): 統一標題字型並卡片化商業建議
CD Pipeline / deploy (push) Has been cancelled
|
2026-05-05 14:09:41 +08:00 |
|
OG T
|
c7242971e3
|
fix(aiops): align incidents schema with autoheal model
CD Pipeline / deploy (push) Has been cancelled
|
2026-05-05 14:08:19 +08:00 |
|
OoO
|
67b93a8b50
|
fix(observability): 統一觀測台 UI 設計系統
CD Pipeline / deploy (push) Has been cancelled
|
2026-05-05 14:05:45 +08:00 |
|
OoO
|
c38f22e67a
|
fix(observability): 修復戰情頁安全降級與樣式掛載
CD Pipeline / deploy (push) Has been cancelled
|
2026-05-05 14:02:29 +08:00 |
|
OoO
|
505cbe20c7
|
fix(ui): 恢復側欄暖色導覽規範
CD Pipeline / deploy (push) Has been cancelled
|
2026-05-05 13:57:41 +08:00 |
|
OoO
|
6f8fdc14ba
|
fix(observability): 提升側欄子選單可讀性
CD Pipeline / deploy (push) Has been cancelled
|
2026-05-05 13:56:26 +08:00 |
|
OoO
|
9b908ca426
|
fix(observability): 套用商業戰情頁觀測台樣式
CD Pipeline / deploy (push) Has been cancelled
|
2026-05-05 13:53:40 +08:00 |
|
OG T
|
f6a2a05e3f
|
fix(aiops): treat openclaw strategy actions as advisory
CD Pipeline / deploy (push) Has been cancelled
|
2026-05-05 13:49:36 +08:00 |
|
OoO
|
c57b8f40ee
|
feat(observability): 收尾 Agent 與商業戰情頁
CD Pipeline / deploy (push) Successful in 7m39s
|
2026-05-05 13:36:31 +08:00 |
|
OoO
|
054685826a
|
feat(observability): 重塑 AI 觀測台戰情室 UI
CD Pipeline / deploy (push) Has been cancelled
|
2026-05-05 13:17:42 +08:00 |
|
OoO
|
2bb2e16442
|
feat(p56): deploy_doctor 擴充 — Observability + CD Pipeline 兩階段檢查
5 階段 → 7 階段:
[3/7] Ollama 主機(從 3 → 5 機)
+ 192.168.0.110:11435 (P53 K8s Nginx Proxy GCP-A)
+ 192.168.0.110:11436 (P53 K8s Nginx Proxy GCP-B)
[6/7] Observability 11 endpoint (新)
全 prod smoke:mo.wooo.work/observability/* + api/health_indicator
SPA shell fingerprint 偵測(size=7480 / etag e167a58a... = FAIL)
302/308/401/403 (auth redirect) 視為 OK = login_required 正常工作
PROD_BASE_URL env 可覆寫測 staging
[7/7] CD Pipeline (新)
Gitea API 撈最近 3 個 run,狀態映射 OK/WARN/FAIL
110 不可達 → 自動 WARN(不阻 deploy doctor exit code)
DB migrations 表清單 + 029 ollama_host_history / 030 ppt_audit_history_db。
本機跑實證:11 endpoint 全綠,Gitea 110 down 正確 WARN。
|
2026-05-05 12:27:51 +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
|
df2311d4f0
|
feat(p55): 3 個圓餅圖補齊 — promotion_review/ppt_audit/budget
CD Pipeline / deploy (push) Successful in 7m39s
S-1: promotion_review 蒸餾池 30d doughnut
- 取代原 col-md-2 卡片網格
- 8 種狀態各自分色:
pending(灰) / awaiting_review(黃) / approved(綠) /
rejected_quality(紅) / rejected_hallucination(深紅) /
rejected_duplicate(橘) / rejected_human(暗紅) / expired(灰)
- 左圓餅 + 右表格雙視角
S-2: ppt_audit 30d 結果 doughnut
- 取代部分 col-md-2 卡片佈局
- 通過(綠)/失敗(黃)/錯誤(紅)/跳過(灰) 圓餅
- 6 個 KPI 卡併入右側 col-6 grid(總筆數/通過率/通過/issue/失敗/錯誤)
- 統一視覺語言:「圖+表」雙視角
S-3: budget 當月各 provider 成本 doughnut
- 新加 query:ai_calls.cost_usd GROUP BY provider 月初至今
- 8 個 provider 分色(本地 Ollama 綠系 vs 付費 LLM 橘紫系)
- 左圓餅 + 右表格(供應商/成本/佔比)+ 總計列
chart.js 視覺化從 7 個 → 10 個:
- hourly trend line
- 30d cost stacked bar
- 三主機 sparkline × 3
- RAG feedback doughnut
- KPI sparkline × 3 (calls/cost/errors)
- verdict doughnut
- heal 7d trend
- **promotion_review status doughnut(新)**
- **ppt_audit pass/fail doughnut(新)**
- **provider cost doughnut(新)**
Phase 38→55 累計 20 commits / 10 觀測頁 / 10 chart.js / DB 100%。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-05 01:15:58 +08:00 |
|
OoO
|
90e8366a8d
|
feat(p54): chart.js 視覺微調 — KPI sparkline + verdict 圓餅 + heal 趨勢
CD Pipeline / deploy (push) Has been cancelled
R-1: ai_calls KPI 卡片加 24h sparkline
- 呼叫次數卡片下加 24px 高 mini line chart(藍)
- 成本卡片下加 sparkline(黃)
- 錯誤次數卡片下加 sparkline(紅)
- Token / 平均耗時 / RAG 命中卡片改顯示「平均 tk/call」「cache 命中數」「RAG 命中率%」
- 整排 KPI 從乾巴巴數字 → 含 24h 趨勢視覺
- 共用 chart.js dataset,無新 query
R-2: business_intel verdict 改 doughnut + 表格雙視角
- 取代原 col-md-3 卡片網格
- 左圓餅:effective(綠)/backfired(紅)/neutral(灰) 視覺比例
- 右表格:4 欄(verdict/筆數/佔比/平均 Δ)含正負色
- 與 quality_trend RAG pie chart 視覺風格統一
R-3: host_health AIOps card 加 7d 自癒成功率 sparkline
- routes/admin_observability_routes.py 新加 heal_daily query
date_trunc('day') GROUP BY 7 天每日 success rate
- AIOps 7d card 底部加 80px 高 line chart
- Y 軸 0-100% / X 軸 7 天日期
- tooltip 顯示「ok/total 成功 (rate%)」
chart.js 視覺化從 4 個 → 7 個:
hourly trend / 30d stacked / 三主機 sparkline / RAG doughnut /
KPI sparkline × 3 / verdict doughnut / heal trend
Phase 38→54 累計 19 commits / 10 觀測頁 + topbar indicator / 7 chart.js。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-05 01:13:31 +08:00 |
|
OoO
|
118f10701b
|
test(p54): get_host_label / get_provider_tag 補測 (20/20 PASS)
P53 commit 7a10d27 加了 K8s Nginx Proxy 路由判斷
(192.168.0.110:11435/11436 → GCP-A/B),但無單測。
未來改 IP / 加 provider 容易破而不自知。
覆蓋:
- TestGetHostLabel × 9 cases:
empty / GCP-A 直連 / GCP-B 直連 / Nginx 11435 / Nginx 11436 /
111 備援 / 188 本地 / localhost / unknown fallback
- TestGetProviderTag × 5 cases + parametrize × 6 row:
empty / GCP×2 路徑 / Secondary×2 路徑 / 111 / unknown
+ 6 row 對齊 migration 024 ai_calls.provider CHECK 白名單
特別防 regression:K8s 環境 192.168.0.110:11435 不再 fallback "未知"
(這正是 P53 commit 修的問題)。
|
2026-05-05 01:12:35 +08:00 |
|
OoO
|
7a10d27d61
|
feat(p53): K8s Nginx Proxy 支援 — host_label/provider_tag 補完
CD Pipeline / deploy (push) Has been cancelled
問題:
K8s 內網無法直連 GCP 公網 11434,所以 110 跳板架了 Nginx Proxy
轉發 11435/11436 到 GCP-A/GCP-B。但 services/ollama_service.py 的
get_host_label() 只看 IP substring(34.143.170.20 / 34.21.145.224),
K8s 環境會 fallback 到「未知」造成觀測台主機標籤錯亂。
修補:
- services/ollama_service.py::get_host_label
新增:
192.168.0.110:11435 → "GCP-SSD(via Nginx 110)"
192.168.0.110:11436 → "GCP-SSD-2(via Nginx 110)"
保留:直連 GCP / 111 / 188 / localhost 既有判斷
- services/ollama_service.py::get_provider_tag(新函式)
統一 provider 標籤判斷(之前散落 code_review_pipeline 等多處重寫):
GCP 直連 + Nginx 11435 → 'gcp_ollama'
GCP-B 直連 + Nginx 11436 → 'ollama_secondary'
111 → 'ollama_111'
其他 → 'ollama_other'
跨環境統一:ai_calls.provider 在 docker-compose / K8s 都記同一 tag,
跨環境統計不分裂。
- services/code_review_pipeline_service.py:233
改用統一 get_provider_tag(),移除原本 hardcode 的 if/else IP 判斷。
- k8s/02-configmap.yaml(user 已改)
OLLAMA_HOST_PRIMARY = http://192.168.0.110:11435 (Nginx → GCP-A)
OLLAMA_HOST_SECONDARY = http://192.168.0.110:11436 (Nginx → GCP-B)
OLLAMA_HOST_FALLBACK = http://192.168.0.111:11434 (內網)
driver test:
http://34.143.170.20:11434 → GCP-SSD / gcp_ollama
http://192.168.0.110:11435 → GCP-SSD(via Nginx 110)/ gcp_ollama
http://192.168.0.111:11434 → 111 備援 / ollama_111
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-05 01:09:56 +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
|
2a3ea6f581
|
feat(p52): topbar 觀測台健康指示燈 + RAG 反饋圓餅圖
CD Pipeline / deploy (push) Successful in 2m30s
P-1: topbar AI 觀測台 indicator(全頁可見)
- ewoooc_base.html topbar 加「🛰 AI 觀測台」icon button
- 紅色 badge 顯示告警數量(4 維度任一觸發即計數):
• 三主機任一掛掉
• 待審 episode > 0
• 過去 1h 錯誤率 ≥ 30%
• 預算任一 ≥ 90%
- 新 GET /observability/api/health_indicator
輕量 JSON API(4 query 跨 host_health_probes/learning_episodes/
ai_calls/ai_call_budgets)
- topbar polling 每 60s 自動刷新 + tooltip 顯示具體告警內容
- 全部頁面(包括 / 商品看板、所有觀測頁)topbar 都看得到健康狀態
P-2: quality_trend RAG 反饋圓餅圖(doughnut)
- 取代原本卡片網格佈局
- 1-5 星依綠→紅漸層著色(5=綠、3=黃、1=紅)
- 圓餅 + 右側表格雙視角(chart 配對 raw 數字)
- chart.js doughnut + tooltip 顯示筆數+佔比
效益:
- 統帥從任何頁面(不限觀測台)都能瞄一眼右上角看當前 AI 健康
- 快樂路徑:「正常」綠色 icon · 異常路徑:「紅色 badge + 數字」立即吸睛
- 圓餅圖比原網格更直觀「分布」感
Phase 38→52 累計 17 commits / 10 觀測頁 / DB 100% / 4 chart.js / 全頁 indicator。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-04 20:20:34 +08:00 |
|
OoO
|
e0a8d87c2c
|
feat(p51): RAG 召回詳情新頁 + overview 三主機 24h sparkline
CD Pipeline / deploy (push) Successful in 2m35s
新頁 /observability/rag_queries:補完 RAG 觀測深度
之前只看 caller 級命中率,現在能看每筆查詢的真實內容。
O-1: route + template
- 篩選:時段(1/6/24/72/168h)/ caller / saved_only flag
- 整體 KPI 4 卡:總查詢 / 命中率 / saved_call 率 / 反饋平均分
- by caller 表:每個 caller 的查詢/命中/saved/反饋細節
- 最近 50 筆查詢詳情表
- 「查 hits」按鈕 → 彈 modal 載入 ai_insights JOIN 內容預覽
(新 endpoint /observability/rag_queries/<id>/hits 回傳 JSON)
O-2: 入口
- sidebar AI 觀測 group 加「RAG 召回詳情」(11b)
- /observability/overview 入口卡升級為 9 項
O-3: overview 三主機 24h sparkline
- 每張主機卡片下方加 60px 高 chart.js sparkline
- 折線:每小時 uptime % bucket(0-100% Y 軸隱藏,純視覺)
- routes/admin_observability_routes.py::observability_overview
新加 host_sparkline 查詢(GROUP BY host_label, hour)
- 三主機卡片視覺化升級:原本只有「100%」字,現在加趨勢線
Phase 38→51 累計 16 commits / 10 觀測頁。
觀測台戰役從「raw stats」到「視覺方格 UI 完整體」。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-04 20:09:28 +08:00 |
|
OoO
|
87d460e243
|
feat(p50): chart.js 折線圖視覺化 + Playbook 一鍵啟用/停用
CD Pipeline / deploy (push) Successful in 2m40s
統帥要求「視覺方格 UI/UX」:raw 表格不夠,加 chart.js 雙圖 + L2 管理。
N-1: ai_calls hourly trend chart.js(雙軸混合)
- 取代原 progress bar 表格
- 折線:呼叫數(藍)+ 錯誤次數(紅)→ 共用左軸
- 柱狀:成本 USD(黃)→ 右軸
- interaction mode index:滑鼠 hover 同時顯示三個指標
- chart.js 4.4.1 CDN 加在 {% block extra_js %}
N-2: budget 30d cost trend stacked bar chart
- 取代原 30d cost trend 表格(max-height 滾動 → 一目瞭然圖)
- 8 個 provider 各自分色
本地 Ollama(綠系)vs 付費(橘/紫/青系)
- stacked bar:每日總成本一柱,依 provider 堆疊
- tooltip 顯示每個 provider $X.XXXX
N-3: Playbook 一鍵啟用/停用(L2 補強第 7 個)
- 新 POST /observability/playbooks/toggle/<id>
翻轉 is_active + UPDATE updated_at
- host_health.html playbook 排行表加「切換」欄
- 動態按鈕:啟用顯示「停用」、停用顯示「啟用」
- 對應觀測台直接管理 AutoHeal 庫,不需 SSH 改 DB
L2 一鍵自動化從 6 個 → 7 個入口:
- AutoHeal / AiderHeal / Code Review / Force Throttle(既有)
- Telegram Heal / Throttle(既有)
- Playbook Toggle(Phase 50 新增)
Phase 38→50 累計 15 commits。
觀測台從 raw stats → AI 自動化專業舞台 → 視覺方格 UI 終局。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-04 20:04:13 +08:00 |
|
OoO
|
822789c810
|
feat(p49): Telegram 補完 9 頁對應 + daily summary 加商業面未跟進警示
CD Pipeline / deploy (push) Successful in 2m58s
M-B: Telegram 對應從 6/9 → 9/9
新增 3 個 cmd handler,對應 Phase 45-48 的 3 個新觀測頁:
- cmd:obs_overview — 一頁式總覽(三主機 24h + AI 呼叫 + 月成本 + 待審 episode)
- cmd:obs_orchestration — Agent 編排矩陣(4 Agent × Models 24h 數字)
本地 Ollama % / RAG 命中 % / 錯誤率 + cost
- cmd:obs_business — 商業面 × AI(價格決策 7d by strategy
+ 未跟進機會 + Outcomes verdict 30d)
services/openclaw_bot/menu_keyboards.py::_submenu_observability 升級為 9 項
M-C: daily summary(每日 09:30)加商業面警示
- 從 ai_price_recommendations × action_plans 跨表 JOIN
偵測 high-confidence (≥0.7) 卻無對應 action_plan 的「機會流失」
- 7d 內若有未跟進,daily summary 自動標 ⚠️ 警示
- 對應 Phase 48 business_intel 頁同個邏輯,閉環推送
inline keyboard 升級:日報附 6 個入口(總覽/編排/商業面/主機/AI/預算),
不再只有 4 個
Phase 38→49 累計 14 commits。觀測台戰役完整收官:
- 9 頁全部對應 Telegram cmd
- DB 22/22 = 100% 全覆蓋
- 6 個 L2 一鍵 + 3 種主動推送(即時/異常/日常)
- 日報含商業面警示
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-04 20:00:15 +08:00 |
|
OoO
|
95db06ad9d
|
feat(p48): 商業面 × AI 編排新頁 — AI 在做什麼生意?實際生效嗎?
CD Pipeline / deploy (push) Successful in 2m38s
新頁 /observability/business_intel:把 AI 觀測台從「技術面」延伸到「商業面」。
回答統帥兩大問:
1. 我們的 AI 在做什麼生意?
2. AI 動作真的有用嗎?(閉環追蹤)
新接 5 張未善用的商業面表(DB 利用率 17/22 → 22/22,100%):
- ai_price_recommendations(AI 價格建議完整明細)
- competitor_prices(競品價格快照)
- competitor_price_history(24h 抓取歷史)
- competitor_match_attempts(競品比對失敗追蹤)
- 善用 action_plans × action_outcomes JOIN(閉環)
頁面 widget(7 張卡片):
1. unfollowed alert:high-confidence 但未轉化為 action_plan 的數量
2. AI 決策 by strategy(promote/watch/hold 含平均信心 + gap% + 銷量變化)
3. 最近 20 筆 AI 建議詳細(SKU/商品/MOMO 價/PChome 價/Gap/原因)
4. **閉環學習表**:plan → outcome 全鏈追蹤
含 verdict/before/after/變化 % — ADR-012 核心 KPI
5. Verdict 分布(effective/neutral/backfired 計數)
6. 競品比對嘗試統計(success/fail/avg_score)
7. 24h 競品價格抓取列表(SKU/商品/MOMO vs PChome gap)
入口:
- sidebar AI 觀測 group 加「商業面 × AI」(07c)
- /observability/overview 入口卡升級為 8 項
DB 全表覆蓋達成:22/22 = 100%
- Phase 47 17 表 → Phase 48 22 表
- 新接:ai_price_recommendations / competitor_prices /
competitor_price_history / competitor_match_attempts
- 已用:ai_calls / ai_call_budgets / ai_insights / learning_episodes /
rag_query_log / mcp_calls / incidents / heal_logs / playbooks /
backup_log / embedding_retry_queue / agent_context /
agent_strategy_weights / action_plans / action_outcomes /
host_health_probes / ppt_audit_results
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-04 19:54:07 +08:00 |
|
OoO
|
2e124db602
|
feat(p47): 6 頁深挖資料庫 — 從 5 表 → 17 表,每頁加 3-5 個 widget
CD Pipeline / deploy (push) Successful in 2m36s
統帥質疑:「6 頁內容太空洞,要更貼近資料庫裡所有數據」
盤點:DB 有 22 表,6 頁原本只用 5 表(22.7% 利用率)。
本 commit 新接 12 張既有但未用的表。
K-1 host_health(接 +5 表 → 8 表)
- 加 incidents 最近 10 筆詳細(task_name/error_type/嚴重度/狀態/重試/錯誤訊息)
- 加 heal_logs 最近 10 筆(action_type/result/耗時/incident 關聯)
- 加 playbooks 庫排行 TOP 12(success_count/fail_count/成功率/啟用狀態)
- 加 backup_log 7 日歷史(type/status/size/duration/error)
- 加 embedding_retry_queue pending/failed 警示
K-2 ai_calls(接 +3 表)
- 加 24h 每小時呼叫趨勢 bucket(含成本+錯誤+流量分布條)
- 加 by model 細分(不只 provider,到 model 版本級別)TOP 15
- 加 agent_context 最近 10 筆(OpenClaw/Hermes 對話 session preview)
K-3 budget(接 +3 表)
- 加當月 Top 5 燒錢呼叫端(caller × cost ranking)
- 加過去 30 日每日成本 by provider 趨勢表
- 加 ai_price_recommendations 7 日統計(strategy 分布 + 平均信心度)
K-4 promotion_review(接 +2 表)
- 加蒸餾池 30 日 status 分布(不只 awaiting,看 8 種完整流動)
- 加 ai_insights 最近 10 筆已晉升內容預覽
- 加 agent_strategy_weights TOP 12(OpenClaw 學習權重 + 成功率)
K-5 quality_trend(接 +3 表)
- 加 RAG 整體 feedback 1-5 分分布(過去 N 日,星等視覺)
- 加 action_plans status 分布(pending/approved/executed/rejected)
- 加 action_outcomes verdict 分布(effective/neutral/backfired
— ADR-012 閉環學習核心 KPI)
K-6 ppt_audit_history(接 +0 表,但 deeper SQL)
- 加 30 日統計卡(total/passed/failed/error/通過率/總 issue 數/平均信心度)
- 加 Top 10 反覆失敗檔案(30d 失敗次數 + total issues)
- 加 empty state 說明(PPT_VISION_ENABLED=false 時顯示啟用步驟)
DB 利用率對應:
- Phase 38 起點:5 表(22.7%)
- Phase 39-46 累計:12 表(54.5%)
- Phase 47 收官:17 表(77.3%)
新接:playbooks / backup_log / embedding_retry_queue / agent_context /
ai_price_recommendations / agent_strategy_weights / action_plans /
action_outcomes(之前已接:incidents/heal_logs/ai_insights/learning_episodes/
rag_query_log/mcp_calls/ai_calls/host_health_probes/ppt_audit_results)
每頁 widget 數對應:
- host_health: 5 卡 → 11 卡
- ai_calls: 5 卡 → 8 卡
- budget: 4 卡 → 7 卡
- promotion_review: 2 卡 → 5 卡
- quality_trend: 4 卡 → 7 卡
- ppt_audit: 3 卡 → 6 卡
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-04 19:49:52 +08:00 |
|
OoO
|
347efb8ea1
|
feat(p46): Agent 編排矩陣新頁 — OpenClaw/Hermes/NemoTron/EA × Ollama × Gemini × MCP × RAG
CD Pipeline / deploy (push) Successful in 2m30s
統帥要求:「好好把 OpenClaw/Hermes/NemoTron/ElephantAlpha + Ollama 多模型
+ 外部付費 Gemini + 內外 MCP + RAG 組合發揮出 AI 自動化新境界」
新頁面 /observability/agent_orchestration 一頁式呈現 4 Agent × 5 維度全景:
J-1: caller 自動分組
- OpenClaw: openclaw_qa/daily/meta/monthly/weekly/bot_main/bot_gemini/bot_nim
+ sales_copy + code_review_openclaw
- Hermes: hermes_analyst + hermes_intent + code_review_hermes
- NemoTron: nemotron_dispatch
- ElephantAlpha: ea_engine + code_review_elephant
J-2/3: 跨表 SQL JOIN(ai_calls × mcp_calls × rag_query_log)
每個 agent 顯示:
- 24h 呼叫 + Token + 成本
- 本地 Ollama 比例(細分 GCP-A/GCP-B/111)
- 付費 LLM 比例(細分 Gemini / 其他)
- MCP 編排率(透過 request_id 跨表 JOIN mcp_calls)
- RAG 命中率
- 錯誤率 + 平均耗時
- MCP server × caller 工作量明細
自動編排建議(5 條 rule-based):
1. 付費比例 > 50% 且 ollama < 20% → 改 Hermes-first 短路
2. 錯誤率 > 10% → 觸發 Code Review Pipeline
3. MCP 編排率 < 5% 但 calls > 50 → 擴大 MCP omnisearch/firecrawl
4. RAG 命中率 ≥ 40% → 推 Telegram 收 feedback 強化 promotion gate
5. 111 fallback 比例 > 20% → GCP 兩台異常,查 host_health AIOps
J-4: 入口
- sidebar AI 觀測 group 加「Agent 編排矩陣」(07b)
- /observability/overview 入口卡升級為 7 項,Agent 編排矩陣放第一
整體 KPI 卡片:
- 總呼叫 / 本地 Ollama 比例 / 付費 LLM 成本 / RAG 命中率
- 「組合發揮」一目瞭然
8 表跨 JOIN:ai_calls × mcp_calls × rag_query_log × ai_insights ×
learning_episodes × incidents × heal_logs × host_health_probes
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-04 19:38:10 +08:00 |
|
OoO
|
849e189b60
|
feat(p45): UI/UX 升級 ewoooc_base.html + sidebar AI 觀測 7 項 + 新增總覽頁
CD Pipeline / deploy (push) Successful in 2m37s
統帥質疑:「那六頁的視覺方格 UI/UX 搞好了嗎?還有新增頁面嗎?」
回答:沒有,從 Phase 38 開始一直推遲。本 commit 補做。
I-1: 6 頁 base.html → ewoooc_base.html
- host_health / ai_calls_dashboard / budget / promotion_review /
quality_trend / ppt_audit_history 全改
- {% extends "base.html" %} → {% extends "ewoooc_base.html" %}
- {% block content %} → {% block ewooo_content %}
- 自動繼承:sidebar 240px / topbar 64px / fonts (Inter+JetBrains+Noto Sans TC)
/ ewoooc-tokens.css / ewoooc-shell.css / search box / 米色背景
I-2: _ewoooc_shell.html 加「AI 觀測」nav group
- 7 個項目:觀測台總覽 / 主機健康 / AI 呼叫 / 預算控管 /
RAG 晉升審核 / 反饋趨勢 / PPT 視覺審核
- 對應 active_page='obs_*',正確高亮
- 編號 07-13(系統管理改 14)
I-3: 新增頁面 /observability/ + /observability/overview
- routes/admin_observability_routes.py::observability_overview
- 單頁聚合 8 表跨 JOIN 的 KPI:
• 三主機 24h 在線率(host_health_probes,per host card)
• AI 呼叫 24h(ai_calls:total/tokens/cost/error rate/RAG hit/cache hit)
• 當月成本累計
• 預算告警(ratio ≥ alert_pct 自動列表)
• AIOps 7d(incidents + heal_logs:自癒成功率)
• MCP 24h(mcp_calls:tool 呼叫 + cache 率 + cost)
• RAG 學習 30d(learning_episodes:待審 + 晉升率)
• PPT 視覺審核 7d(ppt_audit_results:通過率)
• 6 大子頁入口卡(含一行說明)
- 對應 Phase 44 daily Telegram summary 的 web 版本
- 全部失敗安全(個別 query 失敗只跳過該卡,不擋整頁)
升級對應:
- UI 框架:base.html → ewoooc_base.html ✅(sidebar + topbar + token css 已生效)
- 設計憲法:8 卡片 + 8 表跨 JOIN 全景 + 一頁式總覽
- 入口:sidebar 7 項 + 觀測台首頁
- 資料表覆蓋:4 表(Phase 38)→ 8 表(Phase 45)
注意:完整 design token 重塑(Bootstrap class → --momo-* token / 焦糖橘)
留待後續 phase;本 commit 重點是「框架升級 + 新總覽頁」。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-04 19:34:18 +08:00 |
|
OoO
|
72cbcb298f
|
feat(p44): AI 呼叫錯誤率突增告警 + 觀測台每日 09:30 健康摘要
CD Pipeline / deploy (push) Successful in 2m40s
完整 Telegram 主動推送閉環的兩大缺口:
H-1: AI 呼叫錯誤率突增偵測(每 30 min)
- run_scheduler.py::run_ai_calls_error_spike_check
- 條件:過去 1h ai_calls 總呼叫 ≥ 20 且錯誤率 ≥ 30%
- 抓 Top 3 problematic caller(errs ≥ 3)
- 推 Telegram 告警 + inline 按鈕「🔬 觸發 Code Review」/「📊 查 24h AI 呼叫」
- routes/openclaw_bot_routes.py::cmd:obs_trigger_review (新 handler)
- Telegram 內直接觸發 CodeReviewPipeline.run() in daemon thread
- 對齊 Web /observability/ai_calls/trigger_code_review 邏輯
- 註冊:schedule.every(30).minutes
H-2: 觀測台每日 09:30 健康摘要(早晨報)
- run_scheduler.py::run_observability_daily_summary
一頁式涵蓋:
• 三主機 24h 在線率(host_health_probes 聚合)
• AI 呼叫量 / Token / 24h 成本 / 當月累計
• 24h 錯誤率 / RAG 命中率
• 待審 episodes 數量
• PPT 視覺審核 7d 通過率
inline 4 個按鈕:主機健康 / AI 呼叫 / 預算 / 反饋趨勢
- 註冊:schedule.every().day.at("09:30")
完整推送閉環達成:
1. 主機 transition (Phase 43):state 變化即時告警 + 一鍵 AutoHeal
2. AI 錯誤突增 (Phase 44):30 min 內錯誤飆升即告警 + 一鍵 Code Review
3. 每日早晨報 (Phase 44):09:30 主動推全景摘要
統帥手機端不需主動開觀測台,所有重大事件主動推送。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-04 19:29:28 +08:00 |
|
OoO
|
f10999ed1c
|
feat(p43): Ollama 主機 state transition 自動告警 + inline AutoHeal 閉環
CD Pipeline / deploy (push) Has started running
問題:
Phase 42 加 scheduler 每 15min probe 寫入 host_health_probes,但只是
silent 累積 — 主機真的掛掉時統帥仍然要主動開觀測台才知道。
修補:
- run_scheduler.py::run_host_health_probe
寫入 DB 之前先查同 host 的最近一筆 probe 比對
state transition 偵測:
healthy → unhealthy:推 P1 告警 + inline AutoHeal 按鈕
unhealthy → healthy:推 P3 「已恢復」訊息
- run_scheduler.py::_push_host_transition_alert(新 helper)
使用 services.telegram_templates::send_telegram_with_result
inline keyboard 含「🩹 立即 AutoHeal {GCP-A|GCP-B|111}」按鈕
+ 「📊 查 24h 健康統計」次按鈕
按鈕 callback_data 對齊既有 Phase 41 cmd:obs_heal handler
- Dedup:1 小時內同 host 同方向 transition 只推一次(防 flapping 洗版)
用 host_health_probes 自身查歷史對比,無需新 dedup 表
完整閉環:
scheduler 每 15min probe → 偵測 state transition → 推 Telegram 告警
→ 統帥點 inline button → cmd:obs_heal:{label} → AutoHeal 跑 ADR-013
playbook → 寫入 incidents + heal_logs → 下一次 probe 偵測 unhealthy→
healthy → 推「已恢復」訊息
至此觀測台從「raw stats dashboard」進化為:
- 持續累積歷史(Phase 42)
- 主動告警 + 一鍵修復(Phase 43)
- 完整閉環自動化(從監控到復原全自動,僅關鍵節點需人工確認)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-04 19:26:54 +08:00 |
|
OoO
|
d5a4e27344
|
feat(p42): scheduler 每 15 分鐘自動 probe 三主機(不靠人開頁累積歷史)
CD Pipeline / deploy (push) Has been cancelled
問題:
Phase 38 加了 host_health_probes 表 + 開觀測台頁面時寫一筆,但
無人開頁時沒人寫 → Telegram cmd:obs_health 顯示「24h uptime」永遠空。
修補:
- run_scheduler.py::run_host_health_probe
- 每 15 min HTTP probe GCP-A/GCP-B/111 三主機 /api/tags
- 寫入 host_health_probes(label/url/healthy/unhealthy_mark/
models_count/response_ms/error_msg)
- 失敗安全:HTTP/DB 失敗只 log warning
- run_scheduler.py::run_host_health_probe_cleanup
- 每日 03:00 DELETE 30d 前舊資料(防表膨脹)
- 註冊到 schedule.every(15).minutes 與 schedule.every().day.at("03:00")
效果:
- Web /observability/host_health 24h 趨勢卡永遠有資料(即使無人開頁)
- Telegram cmd:obs_health 三主機在線率永遠有資料
- 三主機歷史完整保留 30 天,超出自動清理
Phase 38+39+40+41+42 觀測台戰役完整收官(7 commits)。
部署驗證:
- mo.wooo.work/observability/host_health → HTTP 200 / 42716 byte
(Phase 38 為 39124 byte,多 3.5KB 證明 24h 趨勢/MCP/AIOps card 已上線)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-04 19:24:07 +08:00 |
|
OoO
|
4020b734a5
|
feat(p41): 觀測台戰役完整收官 — K8s 三主機化 + ppt RAG + TG inline action
CD Pipeline / deploy (push) Successful in 2m34s
E-1: K8s configmap 對齊三主機級聯(清舊配置遺留)
- k8s/02-configmap.yaml:
- 移除寫死的 OLLAMA_HOST=192.168.0.188:11434(早已過時)
- 改注入 OLLAMA_HOST_PRIMARY/SECONDARY/FALLBACK 三個變數
- llama3:70b → qwen3:8b(與目前 prod 一致)
- k8s/gcp/02-configmap.yaml:
- 移除「OLLAMA_HOST=空 + AI_PROVIDER=gemini」自相矛盾
- 改三主機級聯 + AI_PROVIDER=ollama(與 docker-compose.yml 一致)
E-2: ppt_audit 加 RAG「相似失敗修法」
- 對最近 3 筆 audit_status='failed'/'error' 跑 rag_service.query
- 從 ai_insights 召回相似案例(cosine ≥ 0.6, top 2)
- template 加「RAG 自動修法建議」card
E-3: Telegram obs_health/obs_budget 加 inline action button (L2)
- cmd:obs_health:任一主機標記異常時,inline 顯示「🩹 修 GCP-A/GCP-B/111」按鈕
- cmd:obs_heal:{label}:新 handler,在 Telegram 內直接觸發 AutoHeal
(白名單 GCP-A/GCP-B/111,非 unhealthy 拒絕)
- cmd:obs_budget:warn 時 inline 顯示「⚡ 立即重算節流狀態」按鈕
- cmd:obs_force_throttle:新 handler,Telegram 內直接觸發 evaluate_throttle_status
最終升級對應:
- RAG 整合 4/6 → 5/6(補 ppt_audit)
- AI 自動化:Web L2×4 + Telegram L2×2 = 6 個一鍵自動化入口
- K8s 配置一致性:三套 (docker-compose / k8s/* / k8s/gcp/*) 統一
指向 GCP-A → GCP-B → 111 三主機鏈
Phase 38+39+40+41 累計 7 commits 觀測台戰役完整收官。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-04 19:18:23 +08:00 |
|
OoO
|
65f236da2d
|
feat(p40): 觀測台收官 — 4 頁升 L2 + RAG 根因 + 蒸餾池監控
CD Pipeline / deploy (push) Successful in 2m36s
接續 Phase 39 (commit 79cf08c),本 commit 完成 Phase D 最後 4 項:
D-6: quality_trend 蒸餾池 + RAG 根因
- 新「蒸餾池狀態」card:learning_episodes 各 promotion_status 分布
(pending / awaiting_review / approved / rejected_quality /
rejected_hallucination / rejected_duplicate / rejected_human / expired)
- 對最差 3 名 caller (avg_score < 3 且反饋 ≥ 3) 自動 RAG 根因建議
- RAG 從 ai_insights 召回相似低品質案例
D-7: ai_calls 一鍵 Code Review (L2)
- 新 POST /observability/ai_calls/trigger_code_review
讀 git rev-parse HEAD + diff-tree 取最新變更檔案
在 daemon thread 跑 CodeReviewPipeline.run() (5 step Hermes→
OpenClaw→EA→NemoTron)
- 頁面新增「觸發 Code Review Pipeline」按鈕
D-8: ppt_audit 失敗 row 一鍵 AiderHeal (L2)
- 新 POST /observability/ppt_audit/trigger_aider_heal
接收 pptx_filename + error_msg,呼叫 services/aider_heal_executor::
execute_code_fix 自動修 services/ppt_generator.py
AiderHeal 修完會 git push 觸發 CD
- audit_records 表中 status='failed'/'error' 的 row 自動顯示按鈕
D-9: host_health 一鍵 AutoHeal (L2)
- 新 POST /observability/host_health/trigger_autoheal
接收 host_label,白名單對應 OLLAMA_HOST_PRIMARY/SECONDARY/FALLBACK
防 SSRF。已標記 unhealthy 的 host 才允許觸發
呼叫 auto_heal_service.handle_exception(error_type='ollama_unhealthy')
跑 ADR-013 playbook(DOCKER_RESTART / SSH_CMD / ALERT_ONLY)
- 三主機 row 中 unhealthy / down 的 host 自動顯示按鈕
升級對應:
- AI 自動化:L2 從 1 個 → 4 個(budget force_throttle / Code Review /
AiderHeal / AutoHeal)
- DB 利用率 ~60%:新增 learning_episodes 分布查詢
- RAG 整合 4/6(promotion_review + budget + quality_trend + 待 ppt_audit)
Phase 38+39+40 累計:6 commits 完成觀測台從 raw dashboard
升級到 AI 自動化專業舞台。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-04 19:13:39 +08:00 |
|
OoO
|
79cf08c58c
|
feat(p39): 觀測台升級 — DB + MCP + RAG + AI 自動化深度整合
CD Pipeline / deploy (push) Successful in 2m30s
統帥質疑:6 頁觀測台只是 raw stats dashboard,沒展現 AI 自動化專業。
深度盤點 4 軸結果:
- DB 利用率 22.7%(22 表只用 5 張)
- MCP 整合 1/6(mcp_calls 表完全沒被讀)
- RAG 整合 0/6(沒 import rag_service)
- AI 自動化 L0 × 5 + L1 × 1(純讀 dashboard,無一鍵觸發)
本 commit 5 個增強:
D-1: promotion_review 加 RAG「Top 3 相似已晉升」
- 對每筆 awaiting_review episode 跑 rag_service.query 找 ai_insights 中
cosine ≥ 0.7 的相似已晉升內容
- 輔助人工判斷:是否冗餘?是否新領域?
- header 顯示 ai_insights 知識庫 size
- fail-safe: 單筆 RAG 失敗不影響其餘
D-2: host_health 加 MCP 24h 工作量 widget
- 從 mcp_calls 統計各 server 24h 呼叫次數 / 成功率 / cache 率 /
使用 tool 數 / 平均耗時 / cost
- 展現「AI×MCP 編排規模」而非只「server 健康與否」
D-3: ai_calls × rag_query_log × mcp_calls 三表 JOIN
- 新增「呼叫端 × RAG × MCP 編排矩陣」card
- 每個 caller:總呼叫 / RAG 命中率 / MCP 編排率(透過 request_id 串接)
/ RAG 反饋分數 / 反饋筆數
- 展現「AI 自動化專業」核心指標
D-4: budget 加 RAG 自動策略建議 + 一鍵 force-throttle (L2)
- ratio ≥ 0.8 時自動 RAG 召回 ai_insights 中的 budget_strategy 知識
- POST /budget/force_throttle endpoint:立即重算 cost_throttle 狀態
(不等下次每小時 cron)— 升級到 L2 自動化
- 對應頁面加「立即重算節流狀態」按鈕
D-5: host_health 加 incidents + heal_logs 7d 摘要
- 顯示 ADR-013 AutoHeal 閉環核心 KPI:
總事件 / 未解決 / 已解決 / P0+P1 / 自癒成功率 / 平均自癒耗時
- 展現「AIOps 自癒系統」運作實況
對應升級:
- DB 利用率 22.7% → ~50%(新接 mcp_calls + rag_query_log JOIN
+ ai_insights + incidents + heal_logs)
- MCP 整合 1/6 → 3/6(host_health + ai_calls + budget 都接 mcp_calls)
- RAG 整合 0/6 → 3/6(promotion_review + budget + 待 quality_trend)
- AI 自動化 L1 → L2 一鍵 force-throttle 一個(其餘按鈕待 D-6)
全部 fail-safe:DB 表/RAG/MCP 失敗都不擋頁面渲染。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-04 19:08:41 +08:00 |
|
OoO
|
5935a6512c
|
feat(p38): Telegram 補 4 個 AI 觀測台命令(B-3 完成)
CD Pipeline / deploy (push) Successful in 2m31s
統帥盤點要求:6 個觀測頁是否都有 Telegram 對應?
盤點結果:promotion_review 已有 (pg_ok/pg_no inline button),剩 4 個缺。
新增 4 個 cmd handler 對應 4 個觀測頁面:
1. cmd:obs_ai_calls — AI 呼叫總覽(24h)
- 總呼叫 / Token / cost / errors / RAG 命中 / cache 命中
- Top 5 provider 分組
2. cmd:obs_health — 主機健康監控
- 三主機 GCP-A / GCP-B / 111 即時 HTTP probe
- 過去 24h uptime % + 平均 response_ms(讀 host_health_probes)
3. cmd:obs_budget — 預算控管
- 當月 spent vs budget 各 provider
- 超 alert_pct 自動標記 ⚠️ / 超 100% 標記 🚨
4. cmd:obs_quality — Caller 反饋趨勢
- 過去 30 日 avg_score 最低 8 名
- 含 thumbs_up/down + trend 圖示
- 含 智能建議(feedback_quality_tracker)
UI/UX:
- main_menu_keyboard 加「🛰 AI 觀測台」入口
- 新 _submenu_observability() 在 menu_keyboards.py
- _SUBMENUS 註冊 'observability' key
- titles 映射加 observability 標題
- 4 個命令 cross-link(彼此互通 + 返回主選單)
Telegram 6/6 對應達成:
- promotion_review: pg_ok/pg_no inline button (既有)
- ai_calls: cmd:obs_ai_calls (新增)
- host_health: cmd:obs_health (新增)
- budget: cmd:obs_budget (新增)
- quality_trend: cmd:obs_quality (新增)
- ppt_audit: 既有「有 issues 才推 Telegram」推送行為(不需查詢命令)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-04 18:58:30 +08:00 |
|
OoO
|
0b13055466
|
feat(p38): host_health + ppt_audit DB 持久化(B-1 + B-2)
統帥要求:
1. 所有 6 個觀測頁的功能和數據都要完整寫入資料庫儲存
2. Ollama 切 GCP 順序 GCP-A → GCP-B → 111
盤點結果:
- 4/6 頁面已有 DB 表(ai_calls / learning_episodes / rag_query_log / ai_call_budgets)
- 2/6 頁面是即時查詢無歷史:host_health(HTTP probe)、ppt_audit(os.listdir)
- Ollama 99% 已合規,僅 1 處過時註解
修補(B-1):
- services/code_review_pipeline_service.py:207 註解更新
「直呼內網 Ollama (192.168.0.188)」→ 「走 resolve_ollama_host 三主機級聯 ADR-027」
新增(B-2):
- migrations/029_create_host_health_probes.sql
- 三主機健康歷史表(label/url/healthy/response_ms/error_msg)
- 索引:probed_at / (host_label, probed_at)
- 30 天保留(cron 清理)
- migrations/030_create_ppt_audit_results.sql
- PPT 視覺審核結果表(status/issues_count/issues_found JSONB/confidence)
- 索引:audited_at / pptx_filename / failed-only partial
- routes/admin_observability_routes.py:host_health_dashboard
- 每次 probe 寫入 host_health_probes(失敗安全)
- 新增 24h 健康趨勢卡片(uptime % / 平均 ms)
- routes/admin_observability_routes.py:ppt_audit_history
- 從 ppt_audit_results 讀過去 7 日 audit 紀錄
- 顯示審核時間/檔名/結果/問題數/信心度/耗時
- services/ppt_vision_service.py:check_ppt_file
- 新增 _persist_audit_result() 跑完寫入 DB(status/issues/confidence/duration)
- 失敗安全:DB 寫入失敗只 log warning,不擋主流程
- templates/admin/host_health.html + ppt_audit_history.html
- 新增「24h 健康趨勢」card(host_health)
- 新增「視覺審核歷史紀錄」card(ppt_audit)
DoD:
- 程式碼語法 ✓
- Jinja 平衡 ✓
- 失敗安全(DB 寫入或讀取失敗都不擋頁面渲染)✓
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-04 18:55:39 +08:00 |
|
OoO
|
19f1340f5c
|
feat(p38): admin 觀測台 6 頁完整繁中化 + 加入導航選單
CD Pipeline / deploy (push) Successful in 2m42s
問題:
1. 6 個 /observability/* 頁面標題與欄位英文殘留(違反設計憲法繁中要求)
2. 6 頁完全沒掛 navbar,使用者進不去(只能彼此 footer link 互連)
3. emoji 取代 Font Awesome,違反設計規範
修補:
- _navbar.html 新增「AI 觀測台」dropdown(位於 AI 助手 與 雲端匯入 之間)
- AI 監控組:AI 呼叫總覽 / 主機健康監控 / 預算控管
- AI 學習組:RAG 學習晉升審核 / Caller 反饋趨勢 / PPT 視覺審核歷史
- 6 個 admin/observability template 全面繁中化:
- 標題、表格欄位、按鈕、badge 文字、JS alert 文案
- emoji → Font Awesome icon(fa-heartbeat / fa-chart-bar / fa-wallet / fa-brain / fa-comments / fa-search 等)
- 移除 5 處 footer 手寫 link 條(已由 navbar 取代,避免雙寫)
- routes/admin_observability_routes.py 6 個 render_template 加 active_page='obs_*'
讓 navbar dropdown 正確高亮
完整覆蓋:host_health / ai_calls_dashboard / budget / promotion_review / quality_trend / ppt_audit_history
設計規範對齊:仍待 Phase 後續工作(ewoooc_base.html 框架升級 + --momo-* design token)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-04 18:49:44 +08:00 |
|
OoO
|
9bc6664dc0
|
fix(p37): cd.yaml SPA shadow grep pipefail bug — 真正修好 CD failure
CD Pipeline / deploy (push) Successful in 2m29s
P34/P36 都沒打到的 root cause:
ETAG=$(echo "$HDR" | grep -i '^etag:' | ...)
當 grep 找不到匹配 (mo.wooo.work /health 不帶 etag header),
grep exit 1 → bash pipefail → 變數賦值整行 exit 1 →
set -e 殺掉整個 script → run 280/281 同樣位置死。
修:每個 grep pipeline 結尾補 `|| true` 兜底,empty result 不殺 script。
本機 bash -eo pipefail 模擬實 prod /health response:
ETAG=[] CLEN=[64] XPT=[]
FLASK_OK=1 (CLEN=64 != 7480 觸發 PASS)
✅ 預期下個 CD run 該 step 綠
|
2026-05-04 14:34:05 +08:00 |
|
OoO
|
64fe4fb651
|
fix(p36): cd.yaml SPA shadow 偵測 bash -e exit bug 修復
CD Pipeline / deploy (push) Failing after 2m27s
run 280 failure 根因:P34 寫 `[ -n "$XPT" ] && [ "$X" != "0" ] && FLASK_OK=1`
三條 && 串連在 Gitea Actions 的 bash -e 模式下,第一條 -n 判斷 false
就 exit 1(empty XPT 是常態,因 mo.wooo.work /health 不帶 x-process-time)。
改 if/then/fi block — 純條件分支不影響 exit code。
驗證真 prod 已通:
- mo.wooo.work/observability/ai_calls 回 35700 byte Flask login 重導頁
(session cookie 正常 set,35700 != 7480 SPA shell)
- mo.wooo.work/admin/ai_calls 回 404(P32 改名後正確不存在)
我 27-35 phase 全部活在 prod 上,只是 192.168.0.188 LAN 是別 project 干擾。
|
2026-05-04 14:30:18 +08:00 |
|