OG T
60e9538889
feat(api): ADR-030 Phase 2 診斷資料收集強化
...
實作智能自動修復系統的資料收集層:
1. k8s_diagnostics.py - K8s 診斷服務
- Pod Events/Logs/ResourceUsage 收集
- CrashLoopBackOff/OOM/ImagePull 偵測
- 非同步並行收集 + 錯誤容忍
2. diagnosis_aggregator.py - 診斷聚合器
- 整合 K8s + SignOz + Expert Rules
- DiagnosisContext 提供結構化 LLM Prompt
- DiagnosisSignal 信號分析
3. decision_manager.py - 決策引擎整合
- Step 2.5 加入診斷收集
- 傳遞 diagnosis_context 給 LLM
4. openclaw.py - LLM Prompt 增強
- 整合 K8s/SignOz 深度診斷上下文
- 支援 diagnosis_signals 摘要
ADR-030 架構: 診斷先行,根因分析,非盲目重啟
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 21:55:50 +08:00
OG T
bb6151cf44
revert: 移除 Telegram Redis dedup 邏輯
...
原因: dedup 邏輯導致 Telegram 完全無法發送
保留: INC- 前綴修復 (approval_id = incident.incident_id)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 21:53:39 +08:00
OG T
d3a0ed4253
docs(adr): ADR-030 智能自動修復系統完整設計
...
五階段實施計畫:
- Phase 1: 智能診斷基礎 ✅ 已完成
- Phase 2: 資料收集強化 (K8s Events + SignOz 深度整合)
- Phase 3: Playbook RAG (向量化 + 語意搜尋)
- Phase 4: 自動執行機制 (信任度 + 風險評估)
- Phase 5: 持續學習迴圈 (反饋 + 信任度調整)
架構相容性分析:
- 介面擴展點定義
- 資料庫 Schema 變更
- 風險評估與回滾計畫
預計時程: 10-15 週
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 21:48:41 +08:00
OG T
99809f4a33
fix(cd): 注入 Telegram Token 到 K8s Secret
...
問題: AWOOOI API 的 OPENCLAW_TG_BOT_TOKEN 為空,Telegram 無法發送
修復: CD 部署時從 GitHub Secrets 注入 Token
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 21:41:31 +08:00
OG T
d148756b67
feat(api): LLM 整合 Expert System 診斷上下文
...
長期方案實作: Expert 診斷 + LLM 智能分析
變更:
1. decision_manager._dual_engine_analyze():
- 測試資源跳過 LLM (省錢)
- 傳遞 Expert 診斷上下文給 LLM
- LLM 失敗時根據診斷調整回應
2. openclaw.generate_incident_proposal():
- 新增 expert_context 參數
- Prompt 包含 Expert 診斷結果
- 引導 LLM 基於診斷做決策
流程:
Playbook → Expert診斷 → LLM(with context) → 智能建議
這是「先診斷根因,再決定行動」的正確實作
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 21:41:26 +08:00
OG T
2ef7daccde
feat(api): Expert System 智能診斷重構 - 根因優先
...
問題: 原本的 Expert System 只會建議「重啟」,不診斷根因
重構:
1. 分層診斷:
- 層 1: 測試資源過濾 (test/demo/tmp 自動忽略)
- 層 2: 規則匹配 (更精確的 pattern)
- 層 3: 診斷指令 (提供 kubectl 診斷命令)
2. 根因優先:
- OOM → 檢查記憶體用量,非重啟
- CrashLoop → 查看崩潰日誌,非重啟
- ImagePull → 檢查映像配置,非重啟
- Default → 人工診斷,非盲目重啟
3. 人工標記:
- 未知問題標記 human_review_required
- 降低 confidence (0.5)
這才是正確的自動化修復:先診斷根因,再決定行動
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 21:35:20 +08:00
OG T
309a019cc3
docs: 記錄 Telegram 告警轟炸事故修復
...
更新:
- ADR-027: 新增緊急事故修復章節
- LOGBOOK: 記錄 2026-03-26 事故時間線
- Skill 02 v1.6: 新增 Telegram 去重機制章節
根因: Phase 6.5 修改 + INC- 前綴重複
修復: Redis 去重 (10 分鐘) + 前綴檢查
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 20:13:07 +08:00
OG T
801b08a4b7
fix(api): AI_FALLBACK_ORDER 無法正確解析 JSON 格式
...
根因: ConfigMap 用 JSON '["gemini","ollama","claude"]'
但 validator 用 split(",") 解析,導致無法匹配任何 provider
結果永遠用 default ["ollama","gemini","claude"]
影響: /api/v1/incidents 超時 (Ollama CPU 推理慢)
修復: 新增 JSON 格式支援,優先嘗試 json.loads()
這是根因修復,不是重啟!
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 20:10:56 +08:00
OG T
190cfda65c
revert(k8s): 恢復 commonLabels (Deployment selector immutable)
...
還原到 commonLabels,因為:
1. Deployment selector 是 immutable,不能移除 environment/system labels
2. commonLabels 只影響 spec.podSelector,不影響 egress[].to[].podSelector
3. DNS 規則 (k8s-app=kube-dns) 不會被 commonLabels 破壞
DNS 問題的根因是之前的錯誤配置,NetworkPolicy YAML 已修復
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 19:56:41 +08:00
OG T
6421af05f9
fix(cd): 處理 K8s selector immutability 問題
...
問題: kustomize labels 配置變更導致 selector 不匹配
修復: 偵測到 "field is immutable" 錯誤時自動刪除重建 Deployment
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 19:53:51 +08:00
OG T
fb03430469
feat(api): ADR-027 Phase 2 - 簽核/拒絕後自動同步 Incident 狀態
...
Router 整合點:
- POST /approvals/{id}/sign → on_approval_status_change("approved")
- POST /approvals/{id}/reject → on_approval_status_change("rejected")
- POST /approvals/bulk-approve → 批次同步
變更:
- 移除舊的 resolve_incident_after_approval() 調用
- 改用 IncidentApprovalService.on_approval_status_change()
- 同步失敗不阻斷主流程 (容錯設計)
ADR-027 進度: Phase 1-2 ✅ 完成
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 19:44:59 +08:00
OG T
42bf6a8729
fix(k8s): 修復 NetworkPolicy DNS 被 kustomize commonLabels 破壞問題
...
根因: commonLabels 會自動加到 NetworkPolicy 的所有 selector,
導致 DNS egress 規則要求 CoreDNS 有 system/environment labels (它沒有)
修復: 改用 labels + includeSelectors=false,只加 metadata labels
不會影響 NetworkPolicy 的 podSelector/namespaceSelector
- 2026-03-27 (台北時間) DNS 解析失敗 RCA
- Telegram Bot 無法連線是因為這個問題
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 19:44:22 +08:00
OG T
0e6c381b67
fix(web): 修復 ApprovalCard disabled → readOnly
...
TypeScript 錯誤: disabled prop 不存在,改用 readOnly
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 19:42:37 +08:00
OG T
139ddc3f7b
fix(telegram): 修復 INC-INC- 重複前綴 (telegram_gateway.py)
...
問題: approval_id 已有 INC- 前綴時,又加了一次
修復: 檢查是否已有前綴再決定是否添加
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 19:42:18 +08:00
OG T
5f2e5c9763
fix(api): Langfuse v4.x API 相容性修復
...
Langfuse SDK v4.0.1 API 變更:
- 移除 client.trace() 方法
- 改用 create_trace_id() + OTEL 整合
修復:
- __enter__: 檢查 trace() 方法存在再使用,否則用 create_trace_id()
- generation/span/score: 加入 hasattr 檢查,v4 改用 debug log
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 19:34:37 +08:00
OG T
df04254b57
fix(lint): 修復 import 排序與未使用 import
...
- __init__.py: 按字母順序排列 imports
- incident_approval_service.py: 移除未使用 UUID, ApprovalRequest, Incident, IncidentStatus
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 19:25:52 +08:00
OG T
35aa690bf1
fix(decision_manager): 修復 Telegram 重複發送問題
...
問題:
- Phase 6.5 (765ee39 ) 修改導致每次 poll 都建立新 decision
- 觸發 Telegram 轟炸 (INC-INC-INC- prefix bug)
修復:
- 移除 INC- 重複前綴 (line 83)
- 加入 Redis 去重機制 (10 分鐘 TTL)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 19:21:36 +08:00
OG T
d071019cf6
fix(api): 新增 langfuse 依賴 (Phase 15.1 LLMOps)
...
修復 'No module named langfuse' 錯誤
依賴: langfuse>=2.0.0
位置: 192.168.0.110:3100 (Self-Hosted)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 19:13:03 +08:00
OG T
dd42e6b75b
chore: services export + meetings 文檔格式化
...
- services/__init__.py: 導出 IncidentApprovalService (ADR-027)
- meetings docs: 格式化更新
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 19:10:48 +08:00
OG T
00e2c94a8e
ci: API 分層檢查 + LLM 測試移至 Nightly
...
CI 強化:
- 新增 API Layer Check (#96 ): services/repositories/models 分層規則
- LLM 測試移至 nightly-llm.yaml (CPU 推理 ~300s/測試)
分層規則:
- services 禁止引用 api/routers
- repositories 禁止引用 services
- models 禁止引用業務層
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 19:10:30 +08:00
OG T
a9f8ad56c1
chore: 未提交變更整理 (API core + docs + scripts)
...
API 核心:
- constants.py: 系統常量定義
- unit_of_work.py: Unit of Work 模式
- incident_approval_service.py: Incident-Approval 同步服務
文檔更新:
- LOGBOOK.md: 進度更新
- AWOOOI_AGENTIC_WORKSPACE_ROADMAP.md: 路線圖
- 2026-03-26_llm_testing_evaluation.md: LLM 測試評估
- phase5_telemetry_architecture.md: 遙測架構
- SECRETS_REFERENCE.md: 密鑰參考
配置/腳本:
- Skill 02 v1.x: leWOOOgo 後端更新
- .dependency-cruiser.cjs: 依賴規則
- demo-multisig-flow.sh: 演示腳本
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 19:10:12 +08:00
OG T
5172c4c925
feat(web): Error Dashboard + GenUI + OmniTerminal 組件
...
新增功能:
- errors/: Sentry 錯誤儀表板 (overview-card, trend-chart, issues-list)
- genui/ApprovalCard: GenUI 風格簽核卡片
- terminal/OmniTerminal: AI 終端機組件
- useErrors.ts: 錯誤數據 hooks
- terminal.store.ts: 終端機狀態管理
更新:
- conversational-view.tsx: 改進對話式 UI
- providers.tsx: 新增 provider
- sidebar.tsx: 新增 Errors 導航
- api-client.ts: 錯誤 API 整合
- i18n messages: 新增錯誤相關翻譯
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 19:09:36 +08:00
OG T
2f5986df5c
docs: ADR 整理與新增 (021-029)
...
ADR 編號修正:
- ADR-023 failure-auto-repair → ADR-028
- ADR-025 cicd-ai-integration → ADR-029
新增 ADR:
- ADR-021: Playbook 更新驗證
- ADR-022: Sentry 整合架構
- ADR-027: Incident-Approval 同步
- ADR-028: 失敗自動修復閉環
- ADR-029: CI/CD AI 整合 (原 ADR-025)
更新:
- ADR-018: LLM 測試策略狀態更新
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 19:09:08 +08:00
OG T
c7be68f800
docs: LOGBOOK 更新 Phase 13.2 #84 完成狀態
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 18:56:24 +08:00
OG T
a3a50fa807
fix(api): 活躍事件 500 錯誤修復 (timezone 比較)
...
根因: incidents.sort() 比較 timezone-aware 與 naive datetime
錯誤: can't compare offset-naive and offset-aware datetimes
修復: safe_created_at() 統一轉換為 timestamp
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 18:48:34 +08:00
OG T
f1117a3e79
chore: trigger CD build for RAGProvider
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 18:44:30 +08:00
OG T
0a9d94d82b
feat(k8s): CoreDNS GitOps 架構 (ADR-026)
...
問題: DNS 配置沒有版本控制,手動修改易遺失
架構:
- k8s/k3s-system/coredns-custom.yaml: HelmChartConfig
- CD workflow: k3s-system 路徑偵測 + 自動 apply
- ADR-026: CoreDNS GitOps 管控架構
DNS 上游:
- 使用 8.8.8.8 + 1.1.1.1
- 禁止 /etc/resolv.conf (systemd-resolved)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 18:43:28 +08:00
OG T
7847e00b1b
fix(web): 簽核後保留內容顯示 5 秒 (2026-03-26)
...
問題: 簽核後卡片立即消失,用戶無法確認已批准內容
修復:
- approval.store.ts: 簽核/拒絕後延遲 5 秒才移除
- live-approval-panel.tsx: 已解決項目顯示狀態橫幅
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 18:40:19 +08:00
OG T
539f14bcd5
feat(api): Phase 13.2 #84 RAG Provider + Gemini 優先切換
...
1. 新增 RAGProvider MCP Tool Provider
- search_runbook: 語義搜尋維運手冊
- index_documents: 索引文檔
- get_index_stats: 取得索引統計
2. 更新 AI_FALLBACK_ORDER 為 Gemini 優先
- 臨時措施:Ollama CPU 推論緩慢導致 mock_fallback
- 預計 2026-03-27 切回 Ollama
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 18:21:24 +08:00
OG T
6e3a7fca20
docs: ADR-006 v1.2 Rate Limiter + LOGBOOK 更新
...
- ADR-006: 新增 Rate Limiter 實作章節 (v1.2)
- LOGBOOK: 記錄 Gemini 切換 + Rate Limiter 上線
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 18:16:45 +08:00
OG T
34bfa994c2
fix(k8s): NetworkPolicy DNS 規則修復
...
- 使用 namespaceSelector 明確指定 kube-system
- ADR-011 Appendix B: CoreDNS 只有 k8s-app=kube-dns 標籤
- 修復 Telegram 告警鏈 DNS 解析失敗問題
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 17:41:11 +08:00
OG T
30153496d1
fix(api): 修復全部 lint 錯誤 (ruff --fix)
...
- Import sorting (I001)
- Unused imports (F401)
- f-string without placeholders (F541)
- Loop variable unused (B007)
- zip() strict parameter (B905)
- Exception chaining (B904)
- collections.abc imports (UP035)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 16:06:20 +08:00
OG T
e26ea526b1
fix(api): lint errors in Rate Limiter + RAG services
...
- Remove unused imports (settings, uuid)
- Add 'from e' to exception raises (B904)
- Add strict=True to zip() (B905)
- Remove unused variable
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 16:03:16 +08:00
OG T
bf32c4b1f2
feat(api): Phase 13.2 AI Rate Limiter + RAG 基礎設施 ( #84 )
...
Rate Limiter (防止 Gemini 用量暴衝):
- ai_rate_limiter.py: RPM/Daily/Token 三層閥值
- openclaw.py: 整合 rate limit 檢查,超限自動降級
- health.py: /health/ai-usage 監控端點
RAG Tool 基礎 (#84 進行中):
- embedding_service.py: Ollama embedding 封裝
- rag_service.py: Redis vector search 服務
閥值設定:
- Gemini: 10 RPM, 500/day, 100K tokens/day
- Claude: 5 RPM, 200/day, 50K tokens/day
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 15:52:57 +08:00
OG T
30145c7d7e
docs: ADR-025 CI/CD AI 整合架構 + Skill 07 更新
...
- ADR-025: 文檔化 Phase 13.1 CI/CD AI 整合架構決策
- GitHub Webhook 事件驅動流程
- 風險分級執行決策 (AUTO/TELEGRAM/APPROVAL/BLOCKED)
- SignOz Log 整合
- Skill 07 v1.3: 新增 Grafana MCP + SignOz query_logs
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 15:41:26 +08:00
OG T
e58da5c534
feat(api): Phase 13.2 #83 Grafana MCP Tool
...
New MCP provider for Grafana dashboard integration:
- list_dashboards: List available dashboards with filtering
- get_dashboard: Get dashboard details by UID
- get_panel_data: Query panel data via Grafana Query API
- generate_dashboard_url: Generate shareable dashboard URLs
Security:
- API key authentication (Bearer token)
- Dashboard UID validation (alphanumeric + dash/underscore)
- Read-only operations only
- 30s request timeout
Config:
- GRAFANA_URL (default: http://192.168.0.188:3000 )
- GRAFANA_API_KEY
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 15:36:17 +08:00
OG T
14c81f728f
docs: 新增 ADR-025 告警鏈路 E2E 驗證 + 更新 Skills
...
新增:
- ADR-025: 告警鏈路 E2E 驗證架構 (2026-03-26 事故教訓)
更新:
- ADR-011: 新增 DNS 規則最佳實踐 (附錄 B)
- Skill 04: 新增 NetworkPolicy DNS 規則 + CoreDNS 設定
- Skill 05: 新增告警鏈路 Smoke Test 要求
- CLAUDE.md: 新增告警鏈路驗證到任務前必讀
事故根因:
1. URL 路徑錯誤 (webhook vs webhooks)
2. NetworkPolicy DNS 規則標籤不匹配
3. CoreDNS 上游 DNS 依賴 systemd-resolved
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 15:34:12 +08:00
OG T
579da38b8b
feat(api): Phase 13 智能路由 + CI/CD 整合 (#74-88)
...
Phase 13.1 CI/CD Integration:
- #76 workflow_run handler for CI failure diagnosis
- #77 SignOz log query (query_logs, error_logs_summary MCP)
- #78 CIAutoRepairService with risk-based execution decisions
Phase 13.3 Smart Routing:
- #85 Intent Classifier v2.0 (rule engine + LLM fallback)
- #86 Complexity Scorer (9-dimension scoring)
- #87 AI Router v3.0 (routing decision matrix)
- #88 Token Counter (OTEL + Langfuse integration)
New files:
- services/ci_auto_repair.py (risk stratification)
- services/model_registry.py (centralized model config)
- services/token_counter.py (677 lines)
- Skill 08: Model Router Expert
- Skill 09: Strangler Pattern Expert
- ADR-023: Smart Routing Architecture
- ADR-024: API Layer Architecture
Tests:
- phase11-conversational.spec.ts (E2E tests)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 15:32:52 +08:00
OG T
b79e5f1a1a
fix: Telegram HTML 解析錯誤 + 簽核後內容保留
...
修復:
1. telegram_gateway.py - HTML 轉義 (html.escape) 防止 "Can't parse entities"
2. openclaw-state-machine.tsx - 簽核後顯示結果 2 秒再導航
問題根因:
- URL 和用戶輸入內容可能包含 <, >, & 破壞 HTML
- 簽核後立即刷新列表,已簽核項目消失
Memory: feedback_approval_preserve_content.md
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 15:32:23 +08:00
OG T
505ceab895
fix(web): 審核完成後正確導航到下一張卡片
...
問題: handleApprove 是異步的,但 setSelectedIndex 不等它完成就執行
修復:
1. fetchPendingApprovals 返回新的審核數量
2. handleApprove 返回 newCount
3. onApprove 使用 await 等待完成後,根據 newCount 決定導航
4. newCount > 0 且 index 有效: 保持 Modal 開啟顯示下一筆
5. newCount = 0: 關閉 Modal
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 14:02:41 +08:00
OG T
875238321e
fix(web): 審核 Modal 真正全屏 - Portal 渲染到 body
...
修復:
1. 使用 createPortal 渲染到 document.body
2. z-index 提升到 9999 確保最上層
3. ApprovalCard 新增 fullHeight prop 移除高度限制
4. 移除巢狀 div 避免滾動衝突
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 13:43:11 +08:00
OG T
540602fd63
fix(web): Phase 17 審核卡片 UI/UX 修復 - SlidePanel → ApprovalModal
...
問題:
- SlidePanel 側邊滑入與右側 OpenClaw 固定面板衝突
- 480px 寬度不足,內容被擠壓截斷
- 標題「審核詳情」只顯示「情」
解決方案:
- 新建 ApprovalModal 全屏 Modal 組件
- 居中對話框 (max-width: 672px)
- 深色遮罩 (60%) 強制用戶聚焦
- 符合 Nothing.tech「一次專注一件事」設計哲學
設計參考: GitHub PR Review, AWS IAM Console
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 13:26:05 +08:00
OG T
a470a514e6
refactor(api): Phase 17 P0 Router 層違規全部修復
...
消除 Router 層直接存取 Redis/DB 的違規:
incidents.py (6 處):
- 改用 IncidentService.get_active_incidents()
- 改用 IncidentService.get_from_working_memory()
- 改用 IncidentService.update_outcome()
- 改用 IncidentService.resolve_incident()
- 改用 IncidentService.find_by_proposal_id()
stats.py (8 處):
- 新增 StatsService 封裝快取邏輯
- 移除直接 Redis 存取
audit_logs.py (7 處):
- 新增 AuditLogRepository 封裝 DB 操作
- Router 改用 Repository 層
webhooks.py (2 處):
- 新增 SignalProducerService 封裝 Redis Stream
- 改用 IncidentService.save_to_working_memory()
符合 leWOOOgo 積木化規範:
Router → Service → Repository → DB/Redis
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 13:06:47 +08:00
OG T
d1f0bbfbcd
refactor(api): Phase 17 P1 Tier 3 紅區服務 Protocol 定義
...
新增 5 個紅區核心服務的 Protocol 介面:
- IDecisionManager: 決策狀態機
- ITrustScoreManager: 信任評分引擎
- IIncidentEngine: 事件處理引擎
- IMultiSigRedisService: 分散式鎖服務
- ITelegramSecurityInterceptor: 安全攔截器
符合 leWOOOgo 積木化規範:
- 支援依賴注入 (DI)
- 便於測試時 Mock
- 型別約束確保實作一致性
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 12:49:30 +08:00
OG T
702e9a9634
fix(api): 移除未使用的 resource_resolver 導入
...
架構審查發現 get_resource_resolver 導入但未使用
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 12:43:59 +08:00
OG T
3bba3755ab
refactor(api): P2 新增 IResourceResolver Protocol
...
Phase 17 P2 架構改進:
- 新增 IResourceResolver Protocol 介面定義
- 支援 runtime_checkable 驗證
- 更新 get/set_resource_resolver 型別提示
- 符合 leWOOOgo 積木化規範
@see feedback_resource_resolver_di.md
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 12:39:18 +08:00
OG T
30f045bf28
feat: ADR-019 System Prompt 集中管理 + Nightly LLM Workflow
...
新增:
- docs/adr/ADR-019-system-prompt-management.md - System Prompt 規範
- apps/api/src/core/prompts.py - 集中管理 System Prompts
- .github/workflows/nightly-llm.yaml - 每夜 LLM 迴歸測試
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 12:27:47 +08:00
OG T
edecf7a053
docs: ADR-020 E2E 驗證框架規範
...
Phase 18.3 配套決策文檔:
- E2E 驗證腳本架構 (5 步驟標準)
- Safe Label 防護機制
- Daily Health Check 排程規範
- 目標資源驗證要求
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 12:27:36 +08:00
OG T
25cc0fb4b2
fix(ci): 使用正確的 Telegram Secret 名稱
...
OPENCLAW_TG_BOT_TOKEN, OPENCLAW_TG_CHAT_ID (已存在)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 12:20:42 +08:00
OG T
a61ea2f14d
feat(ci): Phase 18.3 Daily E2E Health Check
...
每日 08:30 (台北) 自動執行 E2E 驗證:
- Alert → AI → Approval → Execution 完整流程
- Safe Mode 防護 (dry_run=true)
- 失敗時 Telegram 通知
需配置 Secrets:
- TELEGRAM_BOT_TOKEN
- TELEGRAM_CHAT_ID
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-03-26 12:20:14 +08:00