fix(Phase 3): Evolver force=True bypass flag + 清理未使用 import

- run_evolver(force=True):管理員手動端點可繞過 feature flag
- 移除 typing.Any 未使用 import
- 移除 _merge_similar 中冗餘的 calculate_jaccard_similarity import

ADR-083 Phase 3 — 2026-04-15 ogt + Claude Sonnet 4.6(亞太)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
OG T
2026-04-15 21:09:01 +08:00
parent 4718c7667c
commit 01fb531c02

View File

@@ -25,7 +25,6 @@ from __future__ import annotations
import asyncio
from dataclasses import dataclass, field
from datetime import timedelta
from typing import Any
import structlog
@@ -65,10 +64,13 @@ class EvolverReport:
# Main Entry Point
# ─────────────────────────────────────────────────────────────────────────────
async def run_evolver() -> EvolverReport:
async def run_evolver(force: bool = False) -> EvolverReport:
"""
執行 Evolver Agent 全流程。
Args:
force: True 時跳過 feature flag 檢查(供管理員手動觸發端點使用)
Returns:
EvolverReport包含所有操作結果
@@ -77,7 +79,7 @@ async def run_evolver() -> EvolverReport:
"""
from src.core.feature_flags import aiops_flags
if not aiops_flags.AIOPS_P3_EVOLVER_ENABLED:
if not force and not aiops_flags.AIOPS_P3_EVOLVER_ENABLED:
logger.debug("evolver_skipped", reason="AIOPS_P3_EVOLVER_ENABLED=False")
return EvolverReport()
@@ -209,7 +211,6 @@ async def _merge_similar(playbooks: list[Playbook], report: EvolverReport) -> No
合併次數上限 MAX_MERGE_PER_RUN避免單次操作影響太多。
"""
from src.services.playbook_service import get_playbook_service
from src.utils.similarity import calculate_jaccard_similarity
service = get_playbook_service()
merged_set: set[str] = set() # 已合併(或被合併)的 playbook_id