refactor(decision_manager): I2 DI 化 MCP Providers + fix config list type bug

- DecisionManager.__init__ 注入 SSHProvider/K8sProvider,移除函數內 import+實例化
- config.get_tg_user_whitelist() 支援 list 輸入(monkeypatch/直接傳入),修復 AttributeError
- LOGBOOK 更新(test fix 6e0ee8b)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
OG T
2026-04-12 13:04:46 +08:00
parent 6e0ee8b413
commit 184b37a8b1
3 changed files with 12 additions and 4 deletions

View File

@@ -1032,6 +1032,12 @@ class DecisionManager:
# 2026-04-04 Claude Code
from src.services.knowledge_service import get_knowledge_service
self._knowledge_svc = get_knowledge_service()
# I2 續修 2026-04-12 Claude Sonnet 4.6 Asia/Taipei: 注入 MCP Providers
# 原 _collect_mcp_context 在函數內 import + 直接實例化,違反積木化鐵律
from src.plugins.mcp.providers.ssh_provider import SSHProvider
from src.plugins.mcp.providers.k8s_provider import K8sProvider
self._ssh = SSHProvider()
self._k8s = K8sProvider()
async def get_or_create_decision(
self,
@@ -1419,8 +1425,7 @@ class DecisionManager:
_HOST_ALERT_PREFIXES = ("Host", "Docker", "Sentry", "Harbor", "Ollama", "Backup")
if alertname.startswith(_HOST_ALERT_PREFIXES) and host:
try:
from src.plugins.mcp.providers.ssh_provider import SSHProvider
ssh = SSHProvider()
ssh = self._ssh
# C4: 未知主機記錄 warning不靜默跳過
_KNOWN_HOSTS = ("192.168.0.188", "192.168.0.110")
if ssh.enabled and host not in _KNOWN_HOSTS:
@@ -1456,8 +1461,7 @@ class DecisionManager:
# K8s 告警 → K8s MCP 查 Pod 狀態
if alertname.startswith(("Kube", "K3s")) or labels.get("pod"):
try:
from src.plugins.mcp.providers.k8s_provider import K8sProvider
k8s = K8sProvider()
k8s = self._k8s
if k8s.enabled:
pod = labels.get("pod", "")
if pod: