"""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.lower() in [u.lower() for u in whitelist]