OG T
|
a5ff57ddc3
|
fix(api): 修復 Sentry Approval 欄位對齊 ApprovalRequestBase
- ApprovalRequestCreate 使用正確欄位 (action, description, blast_radius...)
- BlastRadius 改用 Model 實例而非不存在的 enum
- 移除未使用的 DryRunCheck import
- 原始欄位移至 metadata
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-27 23:14:24 +08:00 |
|
OG T
|
74734f5b8a
|
fix(api): 修復 SentryService.check_dedup Redis import
- get_redis_pool → get_redis (正確函數名稱)
- Phase 10.2.1 E2E 測試發現
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-27 23:03:31 +08:00 |
|
OG T
|
7456492482
|
fix(api): 註冊 Sentry Webhook Router (Phase 10.2.1)
- 新增 sentry_webhook_v1 import
- include_router 註冊 /api/v1/webhooks/sentry/* 路由
- 修復 Sentry Alert Rule → AWOOOI 連線
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-27 16:13:04 +08:00 |
|
OG T
|
2b069818af
|
refactor(api): Sentry dedup 邏輯移至 Service 層 (leWOOOgo 模組化)
Phase 10.2.1 - 2026-03-27 台北時區
- 將 check_sentry_dedup() 從 Router 移至 SentryService.check_dedup()
- Router 層禁止直接存取 Redis (遵循 leWOOOgo 積木化原則)
- 保持 10 分鐘 TTL 去重窗口
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-27 15:04:53 +08:00 |
|
OG T
|
54061fb8be
|
docs: 更新 LOGBOOK - Sentry 首席架構師審查完成
- Sentry 整合驗證通過
- K3s Master 確認 192.168.0.120
- Phase 10 全部完成
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-27 14:57:03 +08:00 |
|
OG T
|
a579710982
|
fix(k8s): 補齊 Sentry DSN 配置 (首席架構師審查)
- 03-secrets.example.yaml: 新增 SENTRY_DSN
- 04-configmap.yaml: 新增 Sentry 元數據
- LOGBOOK: 新增 CD Lint 修復記錄
Phase 10 Sentry 整合 - DSN 配置補齊
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-27 14:51:41 +08:00 |
|
OG T
|
138ef0c2db
|
fix(api): 修復 7 個 Lint 錯誤 (unused imports + zip strict + dict comprehension)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-27 14:42:47 +08:00 |
|
OG T
|
177563f513
|
fix(api): 告警收斂不重複發送 Telegram
問題: 相同 fingerprint 的告警收斂時,仍會重複發送 Telegram
修復: 收斂告警只更新 hit_count,跳過 Telegram 推送
影響: /alerts + /alertmanager 兩個端點
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-27 14:21:22 +08:00 |
|
OG T
|
7720551b8c
|
fix(api): 修復 Telegram 訊息 INC-INC- 重複前綴
問題: TelegramMessage.format() 中的 incident_id 生成邏輯
當 approval_id 已是 "INC-xxx" 格式時仍添加 "INC-" 前綴
修復: 檢查 approval_id 是否已有 INC- 前綴,避免重複
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-27 10:28:18 +08:00 |
|
OG T
|
43e8ead0d2
|
docs: 更新 LOGBOOK - P1 模組化違規已修復
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-27 10:08:15 +08:00 |
|
OG T
|
f1b037bb0c
|
refactor(api): playbook_rag.py 模組化改造 (P1 違規修復)
修復 P1 違規:
- Line 29: Service 直接 import Redis → Repository Pattern
- Line 156: 自建 httpx.AsyncClient → DI 注入
變更:
- 新增 IEmbeddingCacheRepository Protocol (interfaces.py)
- 新增 EmbeddingCacheRepository 實作 (embedding_repository.py)
- PlaybookRAGService 改用 DI 注入 http_client + embedding_cache
- get_playbook_rag_service() 改為 async factory
- PlaybookService 改用 lazy initialization
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-27 10:07:30 +08:00 |
|
OG T
|
30bed33401
|
docs: 更新 LOGBOOK - P1 按鈕優化完成
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-27 09:51:20 +08:00 |
|
OG T
|
abc21c735e
|
feat(api): P1 Telegram 按鈕優化 - 稍後/靜默
新增按鈕:
- ⏰ 稍後 (snooze): 延遲 30 分鐘後再提醒
- 🔕 靜默 1h (silence): 同類資源告警靜默 1 小時
實作細節:
- telegram_gateway.py: 新增 _handle_snooze/_handle_silence
- decision_manager.py: 發送前檢查 silence 狀態
- Redis Key: telegram_snooze:{approval_id}, telegram_silence:{resource_name}
- Skill 03 v1.5 → v1.6
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-27 09:50:28 +08:00 |
|
OG T
|
4ee5376bd1
|
docs: 告警機制優化計畫 + ADR-030 Phase 6 + Skill 03 v1.5
- LOGBOOK: 新增告警機制完整審查記錄
- ADR-030: 新增 Phase 6 非同步分析優化章節
- Skill 03: v1.5 Stream Key 統一 + Telegram 去重
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-27 09:42:53 +08:00 |
|
OG T
|
79b526b472
|
fix(api): P0 統一 Stream Key 為 awoooi:signals
修復 Producer/Worker/Webhooks 使用不同 Stream Key 導致訊息無法消費
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-27 09:33:13 +08:00 |
|
OG T
|
e34b0f2e9a
|
fix(api): Telegram 去重 + 修復 INC-INC-INC- 重複前綴
- 加入 Redis 去重機制 (10 分鐘 TTL)
- 修復 approval_id 重複添加 INC- 前綴
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-27 09:27:40 +08:00 |
|
OG T
|
d1409fc4c0
|
fix(api): 增加 LLM 超時到 120/180s (llama3.2:3b CPU 約 2-3 分鐘)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-27 09:23:35 +08:00 |
|
OG T
|
a3a02398c3
|
fix(api): 增加 LLM 分析超時 30/60s (Ollama CPU 模式)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-27 09:11:39 +08:00 |
|
OG T
|
855b7f5593
|
fix: 修復 Telegram 轟炸問題
問題: 765ee39 的修改導致 COMPLETED 狀態下 incident 未解決時
會建立新 decision,每次 poll 都觸發 Telegram 發送
修復: COMPLETED 狀態直接返回 existing_token,不建立新 decision
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-26 22:24:03 +08:00 |
|
OG T
|
3256142d29
|
feat(api): ADR-030 Phase 5 持續學習迴圈
從執行結果中學習,持續優化決策:
1. learning_service.py - 持續學習服務
- process_execution_result(): 處理執行結果
- process_human_feedback(): 處理人工反饋
- 自動調整信任度 (成功+1 / 失敗歸零)
- 更新 Playbook 統計
- 成功案例自動萃取 Playbook
2. approval_execution.py - 整合學習觸發
- 執行成功後觸發學習
- 執行失敗後觸發學習
- _trigger_learning(): 非阻塞呼叫學習服務
學習流程:
執行完成 → LearningService.process_execution_result()
├─ 成功: TrustEngine +1 分 + Playbook 統計更新
└─ 失敗: TrustEngine 歸零 + 記錄失敗原因
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-26 22:19:41 +08:00 |
|
OG T
|
ce7f8a1b23
|
feat(api): ADR-030 Phase 4 自動執行機制
實作低風險操作自動執行策略:
1. auto_approve.py - 自動執行策略服務
- AutoApprovePolicy: 評估是否可自動執行
- 條件: LOW 風險 + 信任分數 >= 5 + Playbook 成功率 >= 95%
- CRITICAL 永遠不自動執行
- 完整審計追蹤
2. trust_engine.py - 新增 singleton
- get_trust_manager(): 取得全域 TrustScoreManager
3. decision_manager.py - 整合自動執行 (Tier 3 紅區)
- Step 5 加入 AutoApprovePolicy 判斷
- 條件滿足時跳過 Telegram,直接執行
- _auto_execute(): 自動執行邏輯
- 失敗時 fallback 到人工審核
流程:
Incident → 分析 → AutoApprovePolicy 評估
├─ 可自動執行 → 直接執行 → 完成
└─ 需人工審核 → Telegram 通知 → 等待批准
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-26 22:13:10 +08:00 |
|
OG T
|
17ee8838be
|
revert: 還原 Telegram + CD 到正常狀態
還原檔案到 d071019 版本:
- decision_manager.py: 移除 Redis dedup 邏輯
- telegram_gateway.py: 還原 INC- 前綴邏輯
- cd.yaml: 移除 selector immutable 處理和 Token injection
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-26 22:10:52 +08:00 |
|
OG T
|
3c034526a5
|
feat(api): ADR-030 Phase 3 Playbook RAG 向量搜尋
實作 Playbook 語意搜尋能力:
1. playbook_rag.py - RAG 向量服務
- Ollama nomic-embed-text 生成 embedding
- Redis 儲存向量 (JSON 格式)
- 餘弦相似度搜尋
- 混合搜尋 (Vector 60% + Jaccard 40%)
2. playbook_service.py - 整合 RAG
- extract_from_incident 後自動建立向量索引
- get_recommendations 支援混合搜尋
- RAG 失敗時 fallback 到純 Jaccard
功能:
- embed_text(): 文字向量化
- embed_playbook(): Playbook 向量化
- search_similar(): 向量相似度搜尋
- hybrid_search(): 混合搜尋
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-26 22:08:15 +08:00 |
|
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 |
|