""" 配置文件 - 存储应用的所有配置参数 """ import os import secrets # 基本目录配置 BASE_DIR = os.path.dirname(os.path.abspath(__file__)) DATA_DIR = os.path.join(BASE_DIR, 'data') os.makedirs(DATA_DIR, exist_ok=True) # 数据文件路径 API_KEYS_FILE = os.path.join(DATA_DIR, 'api_keys.json') # 保留以供兼容性 AUTH_FILE = os.path.join(DATA_DIR, 'auth_tokens.json') # SQLite数据库配置 DATABASE_PATH = os.path.join(DATA_DIR, 'api_keys.db') # 应用密钥配置 SECRET_KEY = os.environ.get('SECRET_KEY', secrets.token_hex(16)) ADMIN_PASSWORD = os.environ.get('PASSWORD', '123456') # 认证配置 TOKEN_EXPIRY_DAYS = 30 # 支持的平台 PLATFORMS = [ {"id": "anthropic", "name": "Anthropic"}, {"id": "openai", "name": "OpenAI"}, {"id": "google", "name": "Google"}, {"id": "deepseek", "name": "Deepseek"}, {"id": "siliconflow", "name": "SiliconFlow"}, {"id": "xai", "name": "xAI"}, {"id": "groq", "name": "Groq"}, {"id": "openrouter", "name": "OpenRouter"} ] # 平台标签样式 PLATFORM_STYLES = { "anthropic": { "background-color": "rgba(217, 119, 87, 0.1)", "border-color": "rgba(217, 119, 87, 0.3)", "color": "#c25032" }, "openai": { "background-color": "rgba(16, 163, 127, 0.1)", "border-color": "rgba(16, 163, 127, 0.3)", "color": "#0e8c6b" }, "google": { "background-color": "rgba(28, 125, 255, 0.1)", "border-color": "rgba(28, 125, 255, 0.3)", "color": "#0051c3" }, "deepseek": { "background-color": "rgba(77, 107, 254, 0.1)", "border-color": "rgba(77, 107, 254, 0.3)", "color": "#3246d3" }, "siliconflow": { "background-color": "rgba(124, 58, 237, 0.1)", "border-color": "rgba(124, 58, 237, 0.3)", "color": "#6429c8" }, "xai": { "background-color": "rgba(90, 90, 90, 0.1)", "border-color": "rgba(90, 90, 90, 0.3)", "color": "#5A5A5A" }, "groq": { "background-color": "rgba(255, 95, 31, 0.1)", "border-color": "rgba(255, 95, 31, 0.3)", "color": "#FF5F1F" }, "openrouter": { "background-color": "rgba(61, 88, 171, 0.1)", "border-color": "rgba(61, 88, 171, 0.3)", "color": "#3D58AB" } } # API调用节流控制配置 PLATFORM_LIMITS = { 'openai': 100, 'anthropic': 100, 'google': 500, 'deepseek': 20, 'siliconflow': 50, 'xai': 50, 'groq': 50, 'openrouter': 50, 'default': 50 } # 请求节流时间窗口(秒) TIME_WINDOW = 10