"""Read local configuration without changing the process environment or storage.""" import os from pathlib import Path ROOT_DIR = Path(__file__).resolve().parents[1] ALLOWED_EXT = {'.png', '.jpg', '.jpeg', '.gif', '.webp', '.pdf', '.txt', '.csv'} MAX_UPLOAD_MB = 10 def default_config(): from dotenv import dotenv_values local_config = dotenv_values(ROOT_DIR / '.env', encoding='utf-8-sig', interpolate=False) api_key = os.environ.get('DEEPSEEK_API_KEY', local_config.get('DEEPSEEK_API_KEY')) return { 'DATABASE': ROOT_DIR / 'history.db', 'UPLOAD_DIR': ROOT_DIR / 'uploads', 'BACKUP_DIR': ROOT_DIR / 'backups', 'LOG_DIR': ROOT_DIR / 'logs', 'DEEPSEEK_API_KEY': (api_key or '').strip(), 'ORDER_DATA_TENANT_ID': str(os.environ.get('ORDER_DATA_TENANT_ID', local_config.get('ORDER_DATA_TENANT_ID')) or '').strip(), 'MODEL_URL': 'https://api.deepseek.com/v1/chat/completions', 'MODEL_NAME': 'deepseek-chat', 'MAX_CONTEXT': 4, 'MAX_ANSWER_CHARS': 800, 'MAX_ANSWER_CHARS_EN': 1400, 'RATE_LIMIT_PER_MIN': 60, 'ALLOWED_EXT': set(ALLOWED_EXT), 'MAX_UPLOAD_MB': MAX_UPLOAD_MB, 'HOST': '0.0.0.0', 'PORT': 5000, 'INITIALIZE_RUNTIME': True, } def get_setting(name): try: from flask import current_app, has_app_context except ImportError: return default_config()[name] if has_app_context(): return current_app.config[name] return default_config()[name]