OoO
250dd58172
統一觀測台新版工作台規範
CD Pipeline / deploy (push) Successful in 59s
2026-05-13 19:39:33 +08:00
OoO
bc47f79a77
重整觀測台總覽新版視覺
CD Pipeline / deploy (push) Successful in 58s
2026-05-13 19:19:59 +08:00
OoO
c5cbc12b13
守住觀測台點陣終端層
CD Pipeline / deploy (push) Successful in 58s
2026-05-13 19:07:44 +08:00
OoO
f947469a36
融合觀測台點陣視覺語彙
CD Pipeline / deploy (push) Successful in 57s
2026-05-13 18:51:46 +08:00
OoO
b6e65733a7
收斂觀測台手機字體與視覺契約
CD Pipeline / deploy (push) Successful in 59s
2026-05-13 18:47:14 +08:00
OoO
9af95927db
修正 AI 觀測台 V3 排版規範
CD Pipeline / deploy (push) Successful in 58s
2026-05-13 16:07:25 +08:00
OoO
b2ab03f0d0
入庫 responsive overflow guard 腳本
CD Pipeline / deploy (push) Successful in 56s
2026-05-13 12:13:09 +08:00
OoO
0380d4c435
接上 responsive overflow quick review
CD Pipeline / deploy (push) Has been cancelled
2026-05-13 12:10:08 +08:00
OoO
0c9f9278f1
啟用 Market Intel seed writer CLI gate
CD Pipeline / deploy (push) Successful in 57s
2026-05-13 12:06:02 +08:00
OoO
fccc80858d
修復 Wave 0 阻塞與 market intel 入庫
2026-05-12 22:49:56 +08:00
OoO
ef98eb507e
Align observability UI with V3 spec
CD Pipeline / deploy (push) Successful in 59s
2026-05-12 20:08:02 +08:00
OoO
605250619c
Frontend V3 responsive production update
CD Pipeline / deploy (push) Successful in 1m3s
2026-05-12 18:27:29 +08:00
OoO
57e4c575b1
Revert "調整暖色系為鮮明純色"
...
This reverts commit dc137e33ca .
2026-05-06 22:04:17 +08:00
OoO
dc137e33ca
調整暖色系為鮮明純色
CD Pipeline / deploy (push) Successful in 1m0s
2026-05-06 21:46:18 +08:00
OoO
308efdce25
chore(observability): clarify quick review completion copy
CD Pipeline / deploy (push) Successful in 1m4s
2026-05-06 19:49:28 +08:00
OoO
dc7fe371bd
test(observability): add deploy gate self-test
CD Pipeline / deploy (push) Successful in 1m0s
2026-05-06 13:44:20 +08:00
OoO
a6100a3d01
ci(observability): centralize deploy gate detection
CD Pipeline / deploy (push) Successful in 3m2s
2026-05-05 23:47:34 +08:00
OoO
215bd9b73c
ci(observability): verify CSS mirror instead of mutating runner
CD Pipeline / deploy (push) Has been cancelled
2026-05-05 23:40:45 +08:00
OoO
3db8f5c5b2
chore(observability): polish QA entrypoint docs
CD Pipeline / deploy (push) Has been cancelled
2026-05-05 23:37:00 +08:00
OoO
7225e81c08
chore(observability): pass QA target args through quick review
CD Pipeline / deploy (push) Successful in 2m7s
2026-05-05 23:32:13 +08:00
OoO
65eea5eb9a
chore(observability): add noninteractive QA quick review flags
CD Pipeline / deploy (push) Has been cancelled
2026-05-05 23:25:55 +08:00
OoO
be1d1aec03
test(observability): include health in smoke suite
CD Pipeline / deploy (push) Successful in 4m4s
2026-05-05 23:20:45 +08:00
OoO
cdcbcf1d80
chore(observability): centralize QA page contract
CD Pipeline / deploy (push) Successful in 1m33s
2026-05-05 22:19:25 +08:00
OoO
346e9672a6
chore(observability): add CSS mirror sync helper
CD Pipeline / deploy (push) Successful in 1m33s
2026-05-05 22:16:41 +08:00
OoO
15f7c8660d
fix(observability): serve CSS from Flask static path
CD Pipeline / deploy (push) Successful in 1m34s
2026-05-05 22:14:47 +08:00
OoO
6d015c5b6b
test(observability): assert design system markers
CD Pipeline / deploy (push) Successful in 2m24s
2026-05-05 22:08:44 +08:00
OoO
b21b40cae2
fix(observability): soften frontend error copy
CD Pipeline / deploy (push) Successful in 1m2s
2026-05-05 21:58:49 +08:00
OoO
d93ad659ba
fix(observability): polish topbar alert indicator
CD Pipeline / deploy (push) Successful in 1m33s
2026-05-05 21:52:45 +08:00
OoO
422137efa8
test(observability): validate sidebar route coverage
CD Pipeline / deploy (push) Successful in 1m41s
2026-05-05 21:46:28 +08:00
OoO
e7d567c6be
test(observability): assert page content markers
CD Pipeline / deploy (push) Failing after 4m55s
2026-05-05 15:53:39 +08:00
OoO
8643ed12ad
test(observability): validate nav active page contract
CD Pipeline / deploy (push) Has been cancelled
2026-05-05 15:48:39 +08:00
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
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
f2fbe5f929
feat(p30): admin nav 互聯 + deploy doctor v5.0 腳本
...
CD Pipeline / deploy (push) Successful in 2m33s
(1) 6 個 admin 頁底部導覽全互聯(之前缺 Phase 29 兩頁的反向連結)
- ai_calls / promotion_review / quality_trend / host_health
全部加 |Budget|PPT Audit| 連結
- 統帥從任一頁都可一鍵跳到其他 5 頁
(2) scripts/deploy_doctor_v5.py — 統帥手動待辦自助檢查
5 階段檢查:env vars / DB migrations / Ollama 三主機 /
LibreOffice / MCP servers
- 14 個 v5.0 env vars(含 criticality 分級 FAIL/WARN/INFO)
- 5 張 v5.0 必備 table(ai_calls/mcp_calls/ai_call_budgets/
rag_query_log/learning_episodes)
- ai_call_budgets seed ≥8 筆檢查
- 三主機 /api/tags HTTP probe + healthy 數判定
- 退出碼:0=全綠 1=WARN 2=FAIL(可進 CI)
- SSH 188 / 本機都能跑:python3 scripts/deploy_doctor_v5.py
統帥之後想知道「v5.0 還有啥沒部署」直接跑 doctor 看清單,
不用再口頭追問哪些 env vars / 哪幾張 migration。
2026-05-04 13:48:06 +08:00
OoO
838267c293
feat(p1+p3): logger 接 13 caller + Q&A/Nemotron/日報 feature flag 灰度
...
Phase 1 A4 — 13 個呼叫點接 ai_call_logger(覆蓋率 11.8% → 預估 50%+)
- TOP-1 nemoton_dispatcher: nemotron_dispatch caller (NIM 配額追蹤)
- TOP-2 openclaw_strategist: 4 reports (daily/weekly/monthly/meta) + qa caller
- TOP-3 hermes_analyst: hermes_analyst + hermes_intent (順修 commit 00591c5 殘留 bug)
- TOP-4 code_review_pipeline: code_review_hermes/openclaw/elephant 三鏈 (request_id 串)
- TOP-5 openclaw_bot_routes: openclaw_bot_main/gemini/nim 三層 fallback
Phase 3 A7 — OpenClaw Q&A → qwen3:14b(feature flag OFF)
- OPENCLAW_QA_OLLAMA_FIRST 灰度開關
- 繁中強制 system prompt + Gemini fallback chain
- _is_low_quality_response 品質守門(簡體字檢測 + 拒答訊號 + 結構分數)
- 黃金集 A/B 對照測試框架(10 樣本去 PII)
Phase 3 A8 — OpenClaw 日報 → Hermes 模板(feature flag OFF)
- OPENCLAW_DAILY_HERMES_TEMPLATE 灰度開關
- _compute_daily_kpi 純 SQL + Hermes 規則引擎
- _compute_gemini_insight 精簡 200 字洞察 prompt
- templates/daily_report_v2.j2 + _SafeUndefined 缺欄位優雅降級
- scripts/compare_daily_report_versions.py 雙版本盲測
Phase 3 A9 — Nemotron NIM → qwen3:14b(feature flag OFF)
- NEMOTRON_OLLAMA_FIRST 灰度開關(A2 紅燈:deepseek-r1 假支援,改 qwen3)
- _call_qwen3_dispatch + 既有 NIM tool_calls 解析共用
- 保留 ADR-004「🟡 [降級模式]」Hermes 規則引擎兜底
H6 PII fix — chat_id 進 ai_calls.meta 改 SHA1[:8](4 處 Bot Q&A)
Code Review pipeline — N3 動態 provider tag(gcp/secondary/111)+ A4 logger 三鏈
37 unit tests 全綠(routing 15 + golden 5 + qwen3 8 + daily template 8 + nemotron 1)
Operation Ollama-First v5.0 / Phase 1 A4 + Phase 3 A7+A8+A9
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-03 23:05:38 +08:00
OoO
3b0b4b3d42
fix(ppt): address critic findings on commit 38967ce (HIGH-1, HIGH-2, Medium-4)
...
CD Pipeline / deploy (push) Successful in 2m27s
Critic 審查 38967ce 找出 2 HIGH + 4 medium,本 commit 修最緊急三項:
HIGH-2: cleanup_expired_ppt_cache 預設 dry_run=False 危險
- 函式 default 改 dry_run=True(呼叫方需明確傳 False 才實刪)
- launchd 排程腳本改用 DRY_RUN 環境變數,預設 false→實刪,
但測試時可 DRY_RUN=true 安全跑
- /cache cleanup Telegram 指令預設乾跑,需加 confirm 才實刪
- /cache cleanup days<1 強制乾跑(防呆)
HIGH-1: matplotlib 三個 helper 缺 try/finally → 渲染失敗洩漏 figure
- _mpl_horiz_bar_png / _mpl_line_chart_png / _mpl_pareto_chart_png
全部用 try/except/finally 包住,例外時 plt.close() 仍執行
- 同時讓渲染失敗回 None(呼叫端自然 fallback 到原生 chart)
Medium-4: scripts/ppt_cleanup.sh PROJECT_DIR 寫死
- 改用相對路徑解析(cd $SCRIPT_DIR/..),手動執行不再需要設環境變數
- VENV_PY 找不到時 fallback 到系統 python3(容器友善)
- 新增 DRY_RUN 環境變數開關(預設 false)
煙霧測試:
- syntax OK (services/ppt_generator.py + routes/openclaw_bot_routes.py)
- monthly v3.1 重生 10 頁 290KB
- cleanup_expired_ppt_cache dry_run default = True ✓
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-02 17:23:02 +08:00
OoO
38967ceea3
feat(ppt): redesign all 6 reports to professional standard + cache versioning
...
CD Pipeline / deploy (push) Successful in 13m18s
PPT 模板全面升版至市場專業標準(McKinsey / BCG 月報級別):
Monthly v3.1(10 頁)
- 暖紙感封面(去黑底)+ elevator pitch(亮點/警訊/動能徽章)
- KPI 卡含 △% vs 上月 + 紅綠燈、YoY 同期對比帶
- matplotlib 業績趨勢折線(本月+上月+日均線+高低點)
- 品類分析雙視圖:橫條 + 帕雷托累計(80% 主力線)
- TOP 50 商品(自動分頁)+ vs 上月 △ 排名變化 / 🆕 新進榜
- MCP 情報 4 卡片結構化、AI 行動結構化分區、附錄頁
Daily / Weekly / Strategy / Promo / Competitor v3.0
- 統一暖紙封面、AI 頁去黑底改暖紙 + 焦糖橘色條
- 日週改 matplotlib 折線(含日均線、高低點)
- 全部加附錄頁(資料來源 / 計算口徑 / 模板版本)
Cache 版本控制
- TEMPLATE_VERSIONS 字典自動注入 cache key (tpl_ver)
- 模板升版舊快取自動 miss → 重生
- 新增 _invalidate_ppt_cache() 與 cleanup_expired_ppt_cache() helper
- 新增 /cache status / flush / cleanup Telegram 指令
字型系統
- _set_run_fonts() 用 lxml 直寫 a:latin/a:ea,中英分軌
- 中文走 Microsoft JhengHei,數字/英文走 Consolas(點陣等寬)
- Dockerfile 加 fonts-noto-cjk + fonts-noto-cjk-extra
部署排程
- scripts/install_ppt_cleanup.sh 一鍵安裝 launchd(每日 03:15)
- scripts/ppt_cleanup.sh 清 7 天前過期 PPT 檔 + DB row
資料層
- routes monthly: query_monthly_summary LIMIT 10 → 50,補 orders 欄位
- routes monthly: 拉 prev_month / prev_year 比較資料供 KPI △ 與商品 △ 計算
煙霧測試 6/6 全綠:
- 日報 v3.0 (5 頁) / 週報 v3.0 (6 頁) / 月報 v3.1 (10 頁)
- 策略 v3.0 (6 頁) / 促銷 v3.0 (6 頁) / 競品 v3.0 (5 頁)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-02 16:26:27 +08:00
OoO
1a886d962b
fix(telegram): dedupe webhook+polling updates via shared DB guard
...
CD Pipeline / deploy (push) Successful in 8m50s
Webhook (Flask) and polling (momo-telegram-bot) consumed the same
Telegram update_id, causing /menu callbacks to fire twice. Add a
shared dedup module backed by telegram_update_dedup table (300s TTL,
60s cleanup) with in-memory fallback, wired into both paths.
Polling launcher now skips startup when webhook is configured to
prevent dual-consumption at the source.
38 tests across webhook, menu keyboards, telegram_api, dedup guard,
and trend bot service.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-02 12:01:04 +08:00
OoO
75de76ac12
fix(momo): block EC404 auto-open with end-to-end URL guard
...
CD Pipeline / deploy (push) Has been cancelled
- normalize URLs at write time (scheduler crawlers, routes) to drop
javascript:/EC404/placeholder i_code (momo_/manual_/pchome_)
- add global click+auxclick guard in base.html and ewoooc_base.html
that intercepts blocked MOMO URLs and redirects to safe i_code URL
- per-page dashboards reuse the same isLikelyMomoIcode validation
- /api/track_momo_link records blocked events for diagnosis
- ship sanitize_momo_urls.py to clean existing polluted DB rows
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-02 12:00:34 +08:00
OoO
d88dcc8f75
fix(devops): 清理舊端口與危險 compose 操作
CD Pipeline / deploy (push) Successful in 1m45s
2026-04-30 14:24:53 +08:00
OoO
db21e7e8e8
fix(devops): 移除 startup 腳本危險 compose 操作
CD Pipeline / deploy (push) Has been cancelled
2026-04-30 14:05:41 +08:00
ogt
a96306fba2
Fix Telegram bot natural language communication issue
...
- Install python-telegram-bot dependency
- Start Telegram bot service successfully
- Confirm correct group ID (MOMO PRO - small shrimp group)
- Bot now running with all commands and button interface functional
- Natural language processing restored with keyword matching
Fixes issue where Telegram group could not communicate using natural language.
2026-04-22 14:27:50 +08:00
ogt
03c345d46d
fix: drift-scanner pods cleanup script and guide
...
CD Pipeline / deploy (push) Failing after 50s
- add cleanup script for failed drift-scanner pods
- add comprehensive fix guide with prevention strategies
- resolve pod resource issues in K8s cluster
2026-04-22 11:14:48 +08:00
ogt
4cdf0793a4
fix(review): 修復 /review 機制的 7 個審查問題
...
必修:
- 路由表新增 .sh → critic、.yaml/.yml → tool-expert 兩條規則
- refactor-specialist 改為並行(不取代 critic),確保 vuln-verifier 觸發條件正確
- Phase B 觸發條件從 'critic 含 🔴 ' 改為 '任一主審 Agent 含 🔴 '
選修:
- Stage 0 新增 >2000 行 diff 保護(降級為 --stat 摘要)
- Stage 2.5 移除 '立即' 矛盾描述,改為 'Phase A 全回報後逐一發送'
- tg_notify.sh: 新增 CHAT_IDS 解析後空值守衛
- tg_notify.sh: 改用 printf | --data-urlencode 'text@-' 支援多行訊息
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-22 01:39:39 +08:00
ogt
a45b61f326
feat(review): 新增 /review pre-commit code review slash command
...
- .claude/commands/review.md: 整合 12 Agent 的 pre-commit review 指令
+ 依 diff 類型路由:critic / db-expert / migration-engineer / tool-expert
+ Phase B 條件觸發 vuln-verifier(critic 發現 🔴 時)
+ ≥10 Python 檔案改派 refactor-specialist 主審
+ 最終判決:BLOCKED / CAUTION / APPROVED
- scripts/tg_notify.sh: Telegram 告警工具
+ 7 個流程節點全部發送告警(啟動/每個 Agent 完成/最終判決)
+ 支援 info/warn/error 三級別 + jq/bash 雙備案解析
+ token 未設定時 exit 0,不阻斷 review 流程
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-22 01:23:57 +08:00
ogt
0099543c05
fix(security): 全域健檢 — 40 項安全/Bug/品質修復
...
CD Pipeline / deploy (push) Failing after 5m18s
🔴 Critical
- auto_heal_service: 補 import re + sqlalchemy.text + 修正 orchestrator 變數名
+ autoheal_playbook→playbooks 表名 + _alert_and_store cooldown 修復
- aider_heal_executor: shell injection 改 shell=False + list 參數
- docker-compose: DISABLE_LOGIN 改 env var + 移除密碼 fallback + POSTGRES_HOST 修正
- app.py: /api/backup /api/run_task 等 6 個管理 API 加 @login_required
- config.py + pg_sync + e2e_test: 移除 wooo_pg_2026 hardcoded 密碼 fallback
- pg_backup.sh: 移除 TELEGRAM_TOKEN= 中間變數,直接用 $TELEGRAM_BOT_TOKEN
- migration 014: trigger_pattern→match_pattern + 補 error_type NOT NULL 欄位
🟡 High
- telegram_bot_service: str(e) 改通用訊息 + session try/finally + 移除 pa:/pr: 舊 callback
- run_scheduler: ElephantAlpha thread 死亡監控 + 自動重啟 + Telegram 告警
+ agent_context 03:30 TTL 定時清理任務
- openclaw_learning_service: build_rag_context 兩路徑加 .limit(200)
- hooks: commit-quality + momo-prod-guard 空 catch 改 stderr+exit(1)
- scripts/code_review: auto_yes 預設改 false
- db_backup_service: PGPASSWORD 透過 env dict 傳遞
📦 Migrations
- 013_autoheal: 修正建表順序 playbooks→incidents(外鍵前向引用)
- 018_add_missing_indexes: heal_logs/incidents 外鍵索引 + cleanup_expired_agent_context()
🟢 Infrastructure
- requirements.txt: 加版本下界 Flask>=2.3 SQLAlchemy>=1.4 等
- cd.yaml: 新增 run_scheduler.py + run_telegram_bot.py 監聽路徑
- .gitignore: insert_playbook_local.py 加入忽略
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-22 01:12:23 +08:00