# -*- coding: utf-8 -*-
"""
offline_config.py — 离线模式开关读取（问题排查助手专用）

从环境变量 OFFLINE_MODE 读取离线模式开关，启动时读取一次。
仅此模块直接读环境变量，其他文件统一调用 is_offline_mode()。

设计原则：
  - 进程级缓存：启动时读取一次，后续不改（热更新本期不做，PRD §3.2）
  - 隔离边界：仅归问题排查助手使用，不污染 container.py 或其他模块状态
  - 测试可重置：提供 reset_for_test() 供 pytest 刷新缓存
"""

import os
from utils.logger import get_logger

logger = get_logger(__name__)

_CACHE = None  # None = 未初始化，True/False = 已缓存


def is_offline_mode():
    """返回是否离线模式

    从环境变量 OFFLINE_MODE 读取：
      true / 1 / yes（不区分大小写） → True（离线）
      False / 未设置 / 其他值         → False（在线，默认）

    首次调用后结果缓存到进程退出，重启或测试调 reset_for_test() 才刷新。
    """
    global _CACHE
    if _CACHE is None:
        raw = os.environ.get('OFFLINE_MODE', '').strip().lower()
        _CACHE = raw in ('true', '1', 'yes')
        logger.info("离线模式: %s (OFFLINE_MODE=%r)", _CACHE, raw or '<未设置>')
    return _CACHE


def reset_for_test():
    """测试用：重置缓存，下次调 is_offline_mode() 重新读环境变量"""
    global _CACHE
    _CACHE = None
