feat: 企微菜单新增 AI 分析开关 + 白名单控制
- 新增 ai_whitelist 配置项,仅白名单用户可操作 AI 开关 - 新增 app/services/ai_state.py 运行时开关模块 - 系统管理菜单新增「AI 分析」按钮 (toggle_ai) - 监控配置、系统状态显示 AI 状态和 AI 标记统计 - pipeline 改用运行时开关 is_ai_enabled()
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
"""AI 运行时状态 — 支持企微菜单动态开关"""
|
||||
|
||||
import logging
|
||||
|
||||
from app.config import settings
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# 运行时覆盖值,None 表示使用 settings.ai_enabled
|
||||
_runtime_override: bool | None = None
|
||||
|
||||
|
||||
def is_ai_enabled() -> bool:
|
||||
"""获取 AI 分析当前是否启用(考虑运行时覆盖)"""
|
||||
if _runtime_override is not None:
|
||||
return _runtime_override
|
||||
return settings.ai_enabled
|
||||
|
||||
|
||||
def set_ai_enabled(enabled: bool) -> bool:
|
||||
"""设置 AI 分析运行时开关,返回是否真的发生了变化"""
|
||||
global _runtime_override
|
||||
current = is_ai_enabled()
|
||||
if enabled == current:
|
||||
return False
|
||||
_runtime_override = enabled
|
||||
status = "启用" if enabled else "禁用"
|
||||
logger.info("AI 分析已通过企微菜单%s", status)
|
||||
return True
|
||||
|
||||
|
||||
def get_ai_status_text() -> str:
|
||||
"""获取 AI 状态文本"""
|
||||
return "已启用" if is_ai_enabled() else "已禁用"
|
||||
|
||||
|
||||
def get_whitelist() -> list[str]:
|
||||
"""获取 AI 白名单用户列表"""
|
||||
raw = settings.ai_whitelist
|
||||
if not raw:
|
||||
return []
|
||||
return [u.strip() for u in raw.split(",") if u.strip()]
|
||||
|
||||
|
||||
def is_whitelisted(user_id: str) -> bool:
|
||||
"""检查用户是否在 AI 白名单中"""
|
||||
whitelist = get_whitelist()
|
||||
if not whitelist:
|
||||
# 白名单为空则所有人都可以操作
|
||||
return True
|
||||
return user_id in whitelist
|
||||
Reference in New Issue
Block a user