refactor: centralize config — HERMES_URL, SSH params, validate_critical_config()

- config.py: add HERMES_URL (default 192.168.0.111:11434), SSH jump params, validate_critical_config()
- services/hermes_analyst_service.py: remove hardcoded HERMES_URL, import from config
- app.py: call validate_critical_config() on startup, log warnings for optional missing vars

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
ogt
2026-04-27 21:27:47 +08:00
parent e611702bb9
commit b9fe98f591
3 changed files with 27 additions and 3 deletions

6
app.py
View File

@@ -70,10 +70,14 @@ except ImportError as e:
# ================= 🔧 3. 系統核心配置 =================
# 從 config.py 匯入必要的設定
from config import EXCEL_EXPORT_DIR, DATABASE_TYPE
from config import EXCEL_EXPORT_DIR, DATABASE_TYPE, validate_critical_config
sys_log = SystemLogger("Web_Server").get_logger()
# 驗證選用配置,缺少時輸出 warning非 fatal
for _warn in validate_critical_config():
sys_log.warning(_warn)
# 🚩 V-Opt: 全域資料快取 (用於加速業績分析)
_SALES_DF_CACHE = {} # 已棄用,保留相容性
_SALES_PROCESSED_CACHE = {} # V-Opt: 處理後資料快取

View File

@@ -202,6 +202,15 @@ GRIST_URL = os.getenv('GRIST_URL', '') # Grist 資料協作連結
# ==========================================
# AI 服務設定
# ==========================================
# Hermes AI Service (競價情報分析)
HERMES_URL = os.getenv('HERMES_URL', 'http://192.168.0.111:11434')
# SSH Jump Configuration (AIOps AutoHeal)
SSH_JUMP_HOST = os.getenv('SSH_JUMP_HOST', '192.168.0.110')
SSH_JUMP_USER = os.getenv('SSH_JUMP_USER', 'wooo')
SSH_TARGET_HOST = os.getenv('SSH_TARGET_HOST', '192.168.0.188')
SSH_TARGET_USER = os.getenv('SSH_TARGET_USER', 'ollama')
# Ollama 本地 AI 服務
OLLAMA_HOST = os.getenv('OLLAMA_HOST', 'https://ollama.wooo.work/ollama')
OLLAMA_MODEL = os.getenv('OLLAMA_MODEL', 'gemma3:4b')
@@ -237,4 +246,14 @@ USE_MODULAR_ROUTES = {
'export': True, # 匯出功能
'import': True, # 匯入功能
'sales': True, # 業績分析
}
}
def validate_critical_config():
"""啟動時驗證選用配置,缺少則回傳 warning 清單(非 fatal"""
warnings = []
optional_vars = ['HERMES_URL', 'GOOGLE_DRIVE_CREDENTIALS']
for var in optional_vars:
if not os.getenv(var):
warnings.append(f"[Config] 選用設定 {var} 未設,部分功能可能停用")
return warnings

View File

@@ -25,8 +25,9 @@ from sqlalchemy import text
logger = logging.getLogger(__name__)
from config import HERMES_URL
HERMES_MODEL = "hermes3:latest"
HERMES_URL = "http://192.168.0.111:11434"
HERMES_TIMEOUT = 120 # 秒,批量 300 筆最長預估 ~90s
TOP_N = 20 # 輸出前 N 個威脅,控制 NemoTron 每次消耗配額