Some checks failed
CD Pipeline / build-and-deploy (push) Has been cancelled
Phase 1 — affected_services 污染根治
- webhooks.py: _extract_affected_services() 從 labels 精準萃取服務名
(component > job > pod deployment name > clean target_resource > [])
- create_incident_for_approval: alert_labels 完整保留進 Signal
- alert_name 從 alertname 取,不再用 "custom"
Phase 2 — Playbook alertname 變體擴充
- alert_rules.yaml: 5 條規則新增 HostHighCpuLoad、KubePodCrashLooping 等變體
- scripts/update_playbook_alert_variants.py: Redis index 已執行更新 ✅
Phase 3 — Jaccard 通用型 Playbook 豁免
- similarity.py: affected_services=[] → 1.0 豁免(基礎設施 Playbook 不針對特定服務)
- severity_range=[] → 1.0 豁免(適用所有嚴重度)
Phase 4 — Playbook Embedding 持久化(冷啟動修復)
- migrations/flywheel_playbook_embeddings.sql: pgvector 持久化表
- services/playbook_embedding_service.py: 啟動時重建 Redis 向量快取 + 同步 DB
- main.py: lifespan 啟動時 asyncio.create_task 非阻塞執行
2026-04-10 Asia/Taipei — Claude Sonnet 4.6
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
28 lines
1.2 KiB
SQL
28 lines
1.2 KiB
SQL
-- Phase 4 飛輪修復 (ADR-067 延伸): Playbook Embeddings 持久化表
|
|
-- 2026-04-10 Claude Sonnet 4.6 Asia/Taipei
|
|
-- 目的: 解決冷啟動飛輪斷層 — Playbook 語義相似度查詢
|
|
--
|
|
-- 前置: pgvector extension 已安裝 (phase28_rag_pgvector.sql)
|
|
-- 向量模型: nomic-embed-text (Ollama 192.168.0.188:11434) → 768 維
|
|
--
|
|
-- 索引策略:
|
|
-- < 100 筆: 線性掃描 (無需索引)
|
|
-- > 100 筆: 執行 CREATE INDEX ivfflat (phase35 已示範)
|
|
|
|
CREATE TABLE IF NOT EXISTS playbook_embeddings (
|
|
playbook_id TEXT PRIMARY KEY,
|
|
embedding vector(768), -- nomic-embed-text 768 維
|
|
alert_names TEXT[] NOT NULL DEFAULT '{}', -- 索引時的 alert_names 快照
|
|
keywords TEXT[] NOT NULL DEFAULT '{}', -- 索引時的 keywords 快照
|
|
indexed_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
COMMENT ON TABLE playbook_embeddings IS
|
|
'Playbook 向量索引 — Phase 4 飛輪修復 (2026-04-10) — nomic-embed-text 768 維';
|
|
|
|
-- 向量近鄰索引 (超過 100 筆後解開)
|
|
-- CREATE INDEX IF NOT EXISTS ix_playbook_embeddings_vec
|
|
-- ON playbook_embeddings USING ivfflat (embedding vector_cosine_ops)
|
|
-- WITH (lists = 10);
|