feat(wave6-8): P2.1 fusion + P2.2 governance + P2.4 consensus + Wave 7/8 BLOCKER 修復
承接 Wave 6/7/8 多 engineer 在 agent 限額前完成的代碼,補 commit 解 production HEAD 隱性 import error(decision_fusion 已被 decision_manager 引用但檔案 untracked)。 新增(後端核心): - decision_fusion.py (562 行) — P2.1 方法 III(OpenClaw + Hermes + Elephant 三 LLM 融合) - aiops_timeline.py + aiops_timeline_service.py — critic B4 修復 /api/v1/aiops/timeline endpoint,DB 存取抽到 service 層遵守 leWOOOgo 積木化 - migrations/p2_decision_fusion_columns.sql + rollback — approval_records fusion 欄位 修改(後端整合): - decision_manager.py — fusion 三斷鏈修補(critic B1+B2+B3): · B1: 寫 _evidence_snapshot_ref 到 token.proposal_data · B2: fusion 前計算 complexity_score 並寫 token · B3: fusion composite 寫 token.proposal_data["decision_fusion"] - auto_approve.py — fusion + consensus 認識(critic B3+B5): · composite > 0.7 → auto_execute_eligible bypass min_confidence · source=consensus_engine + score>=0.6 → 規則可信路徑 - consensus_engine.py — db-fix _save_consensus 重用 agent_sessions - governance_agent.py — db-fix _alert PG 寫入 ai_governance_events - approval_db.py — fusion 3 欄位 + 2 partial index + CheckConstraint - db/models.py — schema 對齊 migration - core/config.py — vuln #1 修復:OLLAMA_URL/_FALLBACK_URL field_validator 拒絕公網 IP + 外部域名,僅允許私網/loopback/K8s SVC 白名單 - core/feature_flags.py — P2 fusion + consensus flags - main.py — governance_agent lifespan 啟動 - failover_alerter.py — Wave8-X2: in-memory dedup fallback(Redis 拒絕後不 fail-open) - ollama_*.py — metrics 整合 + recovery 改善 - auto_repair_service.py — verifier 接線 新增(測試 2438 行): - test_decision_fusion.py / test_governance_agent.py / test_consensus_integration.py - test_p2_db_fixes.py / test_wave8_fusion_fixes.py - test_config_url_validation.py(vuln #1 12 tests) - test_failover_alerter.py +Wave8-X2 in-memory dedup 補測 驗收: 116 tests pass (decision_fusion + wave8_fusion + config_url + consensus + governance + p2_db_fixes + failover_alerter) Conflict resolution: - 3 檔(config.py + auto_approve.py + decision_manager.py)git stash pop 衝突 保留 stashed (engineer 最終版),補回 ValueError 「公網 IP」字樣對齊 test Note: 此 commit 解 production HEAD 隱性 import error 仍未修: vuln #4 prompt injection / debugger B14 quota fail-closed / B25-B26 drain_pending_tasks / B8 governance fail alert Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-Authored-By: Multiple Engineers (Wave 6/7/8) <noreply@anthropic.com>
This commit is contained in:
38
apps/api/migrations/p2_decision_fusion_columns.sql
Normal file
38
apps/api/migrations/p2_decision_fusion_columns.sql
Normal file
@@ -0,0 +1,38 @@
|
||||
-- p2_decision_fusion_columns.sql
|
||||
-- 2026-04-26 P2-DB-Fix by Claude — db-expert P0 三修(P0.3)
|
||||
-- P2.1 DecisionFusionEngine 必要欄位 + partial index
|
||||
-- ADR-085 鐵律:AI 學習成果不可存 Cache,fusion 分數必須落地 PG
|
||||
--
|
||||
-- 執行方式:DBA 手動執行(禁止 alembic upgrade / CI 自動跑)
|
||||
-- CONCURRENTLY 必須在 transaction 外單獨執行
|
||||
|
||||
BEGIN;
|
||||
|
||||
ALTER TABLE approval_records
|
||||
ADD COLUMN IF NOT EXISTS composite_score REAL,
|
||||
ADD COLUMN IF NOT EXISTS complexity_tier VARCHAR(16),
|
||||
ADD COLUMN IF NOT EXISTS decision_fusion_details JSONB;
|
||||
|
||||
ALTER TABLE approval_records
|
||||
ADD CONSTRAINT IF NOT EXISTS chk_complexity_tier CHECK (
|
||||
complexity_tier IS NULL
|
||||
OR complexity_tier IN ('low', 'medium', 'high', 'critical')
|
||||
);
|
||||
|
||||
COMMENT ON COLUMN approval_records.composite_score
|
||||
IS 'P2.1 DecisionFusion 合成分數(0.0-1.0),方法 III 加權結果';
|
||||
COMMENT ON COLUMN approval_records.complexity_tier
|
||||
IS 'P2.1 告警複雜度分層:low / medium / high / critical';
|
||||
COMMENT ON COLUMN approval_records.decision_fusion_details
|
||||
IS 'P2.1 DecisionFusionEngine: openclaw_score / hermes_score / playbook_score / mcp_health_score / elephant_score';
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- CONCURRENTLY 必須在 transaction 外執行(不可放在 BEGIN/COMMIT 內)
|
||||
CREATE INDEX CONCURRENTLY IF NOT EXISTS ix_approval_composite_score
|
||||
ON approval_records (composite_score)
|
||||
WHERE composite_score IS NOT NULL;
|
||||
|
||||
CREATE INDEX CONCURRENTLY IF NOT EXISTS ix_approval_complexity_tier
|
||||
ON approval_records (complexity_tier)
|
||||
WHERE complexity_tier IS NOT NULL;
|
||||
19
apps/api/migrations/p2_decision_fusion_columns_rollback.sql
Normal file
19
apps/api/migrations/p2_decision_fusion_columns_rollback.sql
Normal file
@@ -0,0 +1,19 @@
|
||||
-- p2_decision_fusion_columns_rollback.sql
|
||||
-- 2026-04-26 P2-DB-Fix by Claude — db-expert P0 三修(P0.3)rollback
|
||||
-- 回滾 p2_decision_fusion_columns.sql
|
||||
|
||||
BEGIN;
|
||||
|
||||
ALTER TABLE approval_records
|
||||
DROP CONSTRAINT IF EXISTS chk_complexity_tier;
|
||||
|
||||
ALTER TABLE approval_records
|
||||
DROP COLUMN IF EXISTS composite_score,
|
||||
DROP COLUMN IF EXISTS complexity_tier,
|
||||
DROP COLUMN IF EXISTS decision_fusion_details;
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- CONCURRENTLY 必須在 transaction 外
|
||||
DROP INDEX CONCURRENTLY IF EXISTS ix_approval_composite_score;
|
||||
DROP INDEX CONCURRENTLY IF EXISTS ix_approval_complexity_tier;
|
||||
Reference in New Issue
Block a user