# app/modules/loyalty/config.py """ Module configuration. Environment-based configuration using Pydantic Settings. Settings are loaded from environment variables with LOYALTY_ prefix. Example: LOYALTY_DEFAULT_COOLDOWN_MINUTES=15 LOYALTY_MAX_DAILY_STAMPS=5 LOYALTY_GOOGLE_ISSUER_ID=3388000000012345678 Usage: from app.modules.loyalty.config import config cooldown = config.default_cooldown_minutes """ from pydantic_settings import BaseSettings class ModuleConfig(BaseSettings): """Configuration for loyalty module.""" # Default anti-fraud settings default_cooldown_minutes: int = 15 max_daily_stamps: int = 5 pin_max_failed_attempts: int = 5 pin_lockout_minutes: int = 30 # Points configuration default_points_per_euro: int = 10 # 10 points per euro spent # Google Wallet google_issuer_id: str | None = None google_service_account_json: str | None = None # Path to JSON file # Apple Wallet apple_pass_type_id: str | None = None apple_team_id: str | None = None apple_wwdr_cert_path: str | None = None # Apple WWDR certificate apple_signer_cert_path: str | None = None # Pass signing certificate apple_signer_key_path: str | None = None # Pass signing key # QR code settings qr_code_size: int = 300 # pixels model_config = {"env_prefix": "LOYALTY_", "env_file": ".env", "extra": "ignore"} # Export for auto-discovery config_class = ModuleConfig config = ModuleConfig()