docs: 四階段細化實施步驟 + 架構轉型截圖定案 + 防偏差守則
規格書 v2.0 新增: - §十一 四階段細化實施步驟(階段1~4各含驗收清單) - 階段1: CD解鎖+debounce+alertname+冷啟動Playbook+KM向量化(9步) - 階段2: DB Migration+classify_alert_early+outcome寫入(5步) - 階段3: 分診站+SSH路由+TYPE-1/E/F+action解析+risk_level(Tier3,7步) - 階段4: KMConversionService+手動修復記錄(4步) - §十二 防偏差守則(不跳步驟/Tier3授權/不改範圍/異常立刻報告) ADR-073 更新:架構轉型截圖定案(舊架構中斷→新架構分診飛輪) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -38,6 +38,8 @@
|
||||
| 2026-04-12 | fix(test): integration 測試排除(pytest addopts),618 單元測試全通過 | 6e0ee8b |
|
||||
| 2026-04-12 | docs(spec): AIOps 飛輪全面修復整合規格書 v1.0(四層方案+監控缺口+ADR-074)| 77771c1 |
|
||||
| 2026-04-12 | docs(adr): ADR-073 補充 ADR-071 整合工作序 + ADR-074 Sprint | f2b427d |
|
||||
| 2026-04-12 | docs(spec): v2.2 §15 Subsystem 1 四階段路線圖(截圖定案)| d3ddaaf |
|
||||
| 2026-04-12 | docs(spec): 規格書 v2.0 — 四階段細化實施步驟 + 防偏差守則(等待批准)| — |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,9 +1,26 @@
|
||||
# ADR-073: AIOps 飛輪完整盤點 — 問題根因 + 長期解決方案
|
||||
|
||||
**狀態**: Accepted — 等待實作批准
|
||||
**狀態**: Accepted — 等待統帥批准實作(細化步驟已完成)
|
||||
**日期**: 2026-04-12 (台北時間)
|
||||
**更新**: 2026-04-12 晚 — 加入架構轉型截圖定案 + 四階段細化實施步驟
|
||||
**作者**: Claude Sonnet 4.6 + 首席架構師
|
||||
**觸發**: 資料庫審計顯示飛輪從未真正運轉
|
||||
**觸發**: 資料庫審計顯示飛輪從未真正運轉
|
||||
**完整規格**: `docs/superpowers/specs/2026-04-12-aiops-complete-flywheel-repair-design.md`(§十一 細化步驟、§十二 防偏差守則)
|
||||
|
||||
### 架構轉型核心(2026-04-12 截圖定案)
|
||||
|
||||
```
|
||||
舊架構(中斷路徑):
|
||||
告警 → LLM 瞎目(alertname=NULL)→ 目標不明 Unknown → KM 空白
|
||||
|
||||
新架構(飛輪 V2.2):
|
||||
告警 → 分診工作站(decision_manager 入口)
|
||||
├─ TYPE-1(資訊)→ 純文字通知,不進修復流程
|
||||
├─ TYPE-4D(Drift)→ Drift 卡片,不進修復流程
|
||||
└─ TYPE-3(需修復)→ MCP 上下文 → LLM 推理 → 自動執行 → KM 向量化
|
||||
```
|
||||
|
||||
**關鍵洞察**:分診工作站從 telegram_gateway 前移至 decision_manager 入口,是防止「HostBackupFailed 產生 kubectl scale deployment unknown」的架構根治。
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
# AWOOOI AIOps 全面修復與長期解決方案
|
||||
## 飛輪修復 + 監控補全 + 前端即時化 — 完整整合規格書
|
||||
|
||||
> **文件版本**: v1.0
|
||||
> **文件版本**: v2.0
|
||||
> **建立日期**: 2026-04-12(台北時間)
|
||||
> **更新日期**: 2026-04-12 晚(台北時間)— 加入四階段細化實施步驟 + 架構轉型截圖定案
|
||||
> **狀態**: 🔴 等待統帥批准後實作
|
||||
> **整合來源**: ADR-073(飛輪盤點)+ v2.2 規格書 §14.11(ADR-071 工作序)+ 監控覆蓋盤點 + 飛輪截圖定案 + MCP 角色分析
|
||||
> **整合來源**: ADR-073(飛輪盤點)+ v2.2 規格書 §14.11(ADR-071 工作序)+ 監控覆蓋盤點 + 飛輪截圖定案 + MCP 角色分析 + 架構轉型對比截圖
|
||||
> **作者**: Claude Sonnet 4.6
|
||||
|
||||
---
|
||||
@@ -552,3 +553,78 @@ C4(人工介入路徑視覺化)
|
||||
---
|
||||
|
||||
*文件版本 v1.0(2026-04-12 台北時間)— 整合 ADR-073 飛輪盤點 + v2.2 規格書 §14.11 ADR-071 工作序 + 監控覆蓋缺口盤點 + 飛輪截圖定案架構 + MCP 角色分析。所有實作等待統帥批准。*
|
||||
|
||||
---
|
||||
|
||||
## 十一、四階段細化實施步驟(2026-04-12 截圖定案版)
|
||||
|
||||
> **架構轉型核心**(截圖定案):
|
||||
> - 舊架構(中斷):告警 → LLM 瞎目 → 目標不明 Unknown → KM 空白
|
||||
> - 新架構(飛輪 V2.2):告警 → **分診工作站(decision_manager 入口)** → TYPE-1/TYPE-4D 分流 + MCP 上下文 → LLM 推理 → 自動執行 → KM 向量化
|
||||
|
||||
### 階段 1:CD 阻塞清除(解鎖所有後續階段)
|
||||
|
||||
**解鎖條件**:無,立刻可做。Tier 2。
|
||||
|
||||
| 步驟 | 操作 | 驗收 |
|
||||
|------|------|------|
|
||||
| 1-1 | 確認 Harbor 有 `8be87b0` image:`curl -u admin:PWD http://192.168.0.110:5000/v2/awoooi/api/tags/list` | 輸出包含 "8be87b0" |
|
||||
| 1-2 | 更新 `k8s/awoooi-prod/kustomization.yaml` newTag → `8be87b0` | `grep newTag` 顯示 8be87b0 |
|
||||
| 1-3 | `git push gitea main` 觸發 ArgoCD | ArgoCD 同步完成 |
|
||||
| 1-4 | 驗證 Pod image:`kubectl get pods -n awoooi-prod -o wide` | Pod 包含 8be87b0 |
|
||||
| 1-5 | 驗證 `_collect_mcp_context` 存在於 Pod | grep 有輸出 |
|
||||
| 1-6 | `webhooks.py` debounce TTL 300 → 1800(5→30 分鐘)| 相同告警 30 分鐘內只建 1 個 Incident |
|
||||
| 1-7 | `webhooks.py` signal 建立時確保 `alertname` 正確寫入 JSONB | 新 Incident alertname 不為 NULL |
|
||||
| 1-8 | 執行 `scripts/cold_start_playbooks.py`(從 2 筆 SUCCESS + 20 筆 APPROVED 生成)| `count(playbooks)` ≥ 15 |
|
||||
| 1-9 | 執行 `scripts/batch_vectorize_km.py`(690 筆批次向量化,batch=50)| `count(KE WHERE vectorized=False)` = 0 |
|
||||
|
||||
### 階段 2:數據完整性(ADR-071-A/A0)
|
||||
|
||||
**解鎖條件**:階段 1 Pod 驗收通過。Tier 1。
|
||||
|
||||
| 步驟 | 操作 | 驗收 |
|
||||
|------|------|------|
|
||||
| 2-1 | DB Migration:incidents +9 欄位(alertname/notification_type/alert_category/context_bundle/metrics_before/metrics_after/verification_result/manual_fix_steps/manual_fix_by)| `\d incidents` 顯示新欄位 |
|
||||
| 2-2 | PgEnum 補充 5 個 event_type(獨立 transaction)| enum 有新值 |
|
||||
| 2-3 | `classify_alert_early()` 函數:在 webhooks.py 建 Incident 後立即注入 alert_category + notification_type | Backup 告警 → TYPE-1;HostHighCpu → TYPE-3 |
|
||||
| 2-4 | outcome 寫入點:`_auto_execute()` 完成後寫 SUCCESS/FAILED/SKIPPED | 新 approval_record 的 incident 有 outcome |
|
||||
| 2-5 | 補填現有 132 筆 NULL alertname(從 signals JSONB 反查)| `count(incidents WHERE alertname IS NULL)` = 0 |
|
||||
|
||||
### 階段 3:路由與用戶體驗(ADR-071-B/C/E/F)
|
||||
|
||||
**解鎖條件**:階段 2 DB Migration 完成。**Tier 3 — 需首席架構師授權**。
|
||||
|
||||
| 步驟 | 操作 | 驗收 |
|
||||
|------|------|------|
|
||||
| 3-1 | `decision_manager._analyze()` step 4.5 插入類別守衛:TYPE-1→send_info_notification();TYPE-4D→send_drift_card();TYPE-3→繼續 | HostBackupFailed → 純文字無按鈕 |
|
||||
| 3-2 | `_auto_execute()` 路由層:`Docker*/Host*` alertname → SSH MCP;其餘 → K8s MCP | DockerContainerUnhealthy → SSH 執行 |
|
||||
| 3-3 | 新增 `send_info_notification()`:純文字,無 reply_markup | TYPE-1 告警無按鈕 |
|
||||
| 3-4 | `_build_inline_keyboard()` 依 alert_category 動態選按鈕組合 | database 告警無 [重啟][擴容] |
|
||||
| 3-5 | action 字串清理:`action.split("|")[0].strip()` | 新 approval_records 無「未知操作\|」 |
|
||||
| 3-6 | risk_level:YAML rule_match 有值時優先,否則 fallback LLM | HostHighCpuLoad 顯示 MEDIUM |
|
||||
| 3-7 | TYPE-4D `send_drift_card()`:Diff ≤500 直接顯示;>500 回傳 Web 連結 | ConfigDrift 只有 [查看Diff][採納][回滾][忽略] |
|
||||
|
||||
### 階段 4:知識引擎(ADR-071-G/H)
|
||||
|
||||
**解鎖條件**:階段 3 outcome 寫入點確認正常。Tier 2。
|
||||
|
||||
| 步驟 | 操作 | 驗收 |
|
||||
|------|------|------|
|
||||
| 4-1 | 新增 `km_conversion_service.py`:Incident RESOLVED → 建立 KnowledgeEntryRecord + Playbook draft + embed() + vectorized=True | RESOLVED → KE 自動新增 + vectorized=True |
|
||||
| 4-2 | `incident_service.resolve()` 呼叫 `KMConversionService.convert()`(非同步,不阻塞主流程)| 觸發不影響 RESOLVED 回應時間 |
|
||||
| 4-3 | 每日 03:00 cron:補掃 `vectorized=False AND status=RESOLVED` | 每日清零 |
|
||||
| 4-4 | `handle_callback()` 新增 `log_manual_fix` 動作:Redis 緩衝 → `/done` → `record_manual_fix()` → draft Playbook | 點擊 [手動修復後記錄] → Bot 對話 → 草稿建立 |
|
||||
|
||||
---
|
||||
|
||||
## 十二、防偏差守則(本次工作)
|
||||
|
||||
> 統帥明確要求:任何調整偏差立刻提出討論,不可自行決定。
|
||||
|
||||
| 守則 | 說明 |
|
||||
|------|------|
|
||||
| **不得跳步驟** | 階段 2 必須等階段 1 Pod 驗收通過才開始 |
|
||||
| **Tier 3 必須授權** | 階段 3 整個是 Tier 3,不得在統帥批准前動 decision_manager 核心邏輯 |
|
||||
| **不得自行改範圍** | 本次不碰 ADR-074 監控補全、前端 ADR-073-C,那是下一波 |
|
||||
| **遇到異常立刻報告** | Harbor 無 8be87b0 image、DB Migration 失敗、KM 向量化 error rate > 10%,立刻停下報告 |
|
||||
| **不得合併步驟** | DB Migration 和應用程式更新分開 commit,不合一送 |
|
||||
|
||||
Reference in New Issue
Block a user