docs(adr): ADR-030 補充九-十章實作完成記錄

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
OG T
2026-04-09 11:29:04 +08:00
parent 580053394b
commit bf4ec18d0e

View File

@@ -1041,3 +1041,63 @@ GET /api/v1/learning/recommendation/{anomaly_key}
- Phase 4-5: 核心流程變更,需要嚴格測試
**建議**: 按 Phase 順序實施,每個 Phase 完成後驗證穩定性再進入下一階段。
---
## 九、2026-04-04 實作完成 (台北時間)
> **更新者**: Claude Code
> **Commit**: d0f0970, 72d7536, df3ef90
### 9.1 根本原因診斷 (19筆 PENDING 清查)
| 根因 | 說明 | 修復 |
|------|------|------|
| playbooks 表從未建立 | Playbook 庫空白RAG 永遠無匹配 | phase7_playbooks_table.sql |
| Ollama embedding is_closed=True | 滾動重啟後 http_client 失效vector_count:0 | _get_http_client() 偵測重建 |
| 9筆殭屍 PENDING (3/26) | mock_fallback CRITICAL 測試記錄 | 直接清除 |
### 9.2 完成項目
| 檔案 | 修改 | 說明 |
|------|------|------|
| `playbook_rag.py` | 新增 `_get_http_client()` | 偵測 is_closed 自動重建 HTTP client |
| `playbook_rag.py` | `embed_playbook()` Bug 修復 | `s.sequence``s.step_number`, `s.description``s.command` |
| `telegram_gateway.py` | 新增 `ai_model` 欄位 | format/format_with_nemotron 顯示底層模型 |
| `openclaw.py` | proposal_dict 加 `"model"` | 傳入底層模型名稱 |
| `decision_manager.py` | 讀取 `ai_model` 傳入 approval card | 決策路徑完整 |
| `migrations/phase7_playbooks_table.sql` | 新增 | playbooks 表PRIMARY KEY + 5 GIN 索引 |
| `playbook_service.py` | `_write_to_km()` fire-and-forget | extract_from_incident() 後自動 KM 沉澱 |
| `playbook_service.py` | `_get_rag_service()` 改走工廠 | 每次重建,避免快取 is_closed client |
| `approval_execution.py` | `_write_execution_result_to_km()` | 移出 try/except保證執行記錄寫入 KM |
| `approval_execution.py` | 冷啟動修復 | 執行成功自動設定 execution_success=True, effectiveness_score=4, status=RESOLVED |
| `approval_execution.py` | skip 路徑 debug→info | 可觀測性提升 |
| Ollama | 刪除 smollm2:135m | 0.3GB CPU 機器不需要的模型 |
### 9.3 首席架構師 Review 結果
| 評分 | 修復項目 | 說明 |
|------|----------|------|
| 初版 21/25 | — | 72d7536 |
| **Critical #1** | KM write task 移出 try/except | 保證無論 learning 成敗都寫 KM |
| **Important #1** | PlaybookService 快取繞過工廠 | 每次走工廠避免 is_closed |
| **Important #2** | Migration 缺 PRIMARY KEY | prod DB 已 ALTER TABLE 補齊 |
| **Important #3** | embed_playbook() s.sequence AttributeError | 修正欄位名稱靜默失敗 bug |
| 修復後 ~25/25 | **PASSED** | df3ef90 |
### 9.4 完整閉環
```
告警 → AI分析(OpenClaw/Nemotron) → 查Playbook(RAG語意搜尋)
→ 有匹配且LOW風險 → 自動執行
→ MEDIUM/CRITICAL → Telegram等人工批准
→ 執行成功
→ _trigger_playbook_extraction():
自動設定 execution_success=True, effectiveness_score=4, status=RESOLVED
→ Playbook萃取 → 存Redis → KM沉澱(_write_to_km)
→ incident_service.resolve() → KM萃取(knowledge_extractor)
→ _trigger_learning() 後 → KM執行記錄(_write_execution_result_to_km)
→ 下次相似告警 → Playbook命中(RAG) → 加速決策
```
**狀態**: ✅ 閉環已通 (2026-04-04 台北時間)