"""
Feature Flags 统一管理 v2.1.0
环境变量 + 配置文件双层控制
"""

import os
from typing import Dict


class FeatureFlags:
    """功能开关管理器"""

    # 所有功能及其默认值
    DEFAULTS: Dict[str, bool] = {
        # 核心功能
        "quark_pid": True,
        "seo": True,
        "link_monitor": True,

        # 增强功能
        "tmdb": True,
        "telegram_bot": False,
        "subscription": False,
        "alist": False,

        # 转存平台
        "transfer_quark": True,
        "transfer_baidu": False,
        "transfer_aliyun": False,
        "transfer_uc": False,
        "transfer_xunlei": False,
        "transfer_pan115": False,
        "transfer_pan123": False,
        "transfer_cloud189": False,
    }

    def __init__(self):
        self._flags: Dict[str, bool] = {}
        self._load()

    def _load(self):
        for key, default in self.DEFAULTS.items():
            env_key = f"FEATURE_{key.upper()}"
            val = os.getenv(env_key, str(default)).lower()
            self._flags[key] = val in ("true", "1", "yes", "on")

    def is_enabled(self, feature: str) -> bool:
        return self._flags.get(feature, False)

    def enable(self, feature: str):
        self._flags[feature] = True

    def disable(self, feature: str):
        self._flags[feature] = False

    def list_all(self) -> Dict[str, bool]:
        return dict(self._flags)

    def get_enabled_platforms(self) -> list:
        return [
            k.replace("transfer_", "")
            for k, v in self._flags.items()
            if k.startswith("transfer_") and v
        ]


# 全局单例
features = FeatureFlags()
