import os class Config: SECRET_KEY = os.environ.get('SECRET_KEY', 'kpi-dashboard-secret-key-change-in-production') _cloud = any(k in os.environ for k in ('AMVERA', 'SPACE_ID', 'SPACE_REPO_NAME', 'SPACE_TITLE', 'HF_API_TOKEN')) _db_path = '/data/kpi_dashboard.db' if _cloud else os.path.join( os.path.dirname(os.path.abspath(__file__)), 'instance', 'kpi_dashboard.db' ) SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL', f'sqlite:///{_db_path}') if 'postgresql' in (os.environ.get('DATABASE_URL', '') or ''): SQLALCHEMY_DATABASE_URI = SQLALCHEMY_DATABASE_URI.replace('postgres://', 'postgresql://') SQLALCHEMY_TRACK_MODIFICATIONS = False UPLOAD_FOLDER = '/data/uploads' if _cloud else os.path.join( os.path.dirname(os.path.abspath(__file__)), 'uploads' ) MAX_CONTENT_LENGTH = 50 * 1024 * 1024 ALLOWED_EXTENSIONS = {'xlsx', 'xls', 'pdf'} TELEGRAM_BOT_TOKEN = os.environ.get('TELEGRAM_BOT_TOKEN', '') TELEGRAM_CHAT_ID = os.environ.get('TELEGRAM_CHAT_ID', '') WTF_CSRF_ENABLED = True SESSION_COOKIE_SECURE = False SESSION_COOKIE_HTTPONLY = True SESSION_COOKIE_SAMESITE = 'Lax' SCHEDULER_ENABLED = os.environ.get('SCHEDULER_ENABLED', 'False').lower() in ('true', '1', 'yes') FACT_SYNC_SCHEDULE = os.environ.get('FACT_SYNC_SCHEDULE', '02:00') TEMPLATES_AUTO_RELOAD = True