Files
orion/app/modules/loyalty/config.py
Samir Boulahtit a4519035df fix(loyalty): read Google Wallet config from core settings instead of module config
Module config only reads from os.environ (not .env), so wallet settings
were always None. Core Settings already loads these via env_file=".env".
Also adds comprehensive wallet creation tests with mocked Google API.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 22:29:27 +01:00

48 lines
1.3 KiB
Python

# 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
# 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_"}
# Export for auto-discovery
config_class = ModuleConfig
config = ModuleConfig()