diff --git a/apps/api/src/services/playbook_evolver.py b/apps/api/src/services/playbook_evolver.py index 6395820b..bcd439b9 100644 --- a/apps/api/src/services/playbook_evolver.py +++ b/apps/api/src/services/playbook_evolver.py @@ -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