# app/modules/loyalty/__init__.py """ Loyalty Module - Stamp and points-based loyalty programs. This module provides: - Stamp-based loyalty programs (collect N stamps, get reward) - Points-based loyalty programs (earn points per euro spent) - Customer loyalty cards with QR codes - Staff PIN verification for fraud prevention - Google Wallet and Apple Wallet integration - Transaction history and analytics Routes: - Admin: /api/v1/admin/loyalty/* - Store: /api/v1/store/loyalty/* - Public: /api/v1/loyalty/* (enrollment, wallet passes) Menu Items: - Admin: loyalty-programs, loyalty-analytics - Store: loyalty, loyalty-cards, loyalty-stats Usage: from app.modules.loyalty import loyalty_module from app.modules.loyalty.services import program_service, card_service from app.modules.loyalty.models import LoyaltyProgram, LoyaltyCard from app.modules.loyalty.exceptions import LoyaltyException """ # Lazy imports to avoid circular dependencies # Routers and module definition are imported on-demand __all__ = [ "loyalty_module", "get_loyalty_module_with_routers", ] def __getattr__(name: str): """Lazy import to avoid circular dependencies.""" if name == "loyalty_module": from app.modules.loyalty.definition import loyalty_module return loyalty_module if name == "get_loyalty_module_with_routers": from app.modules.loyalty.definition import get_loyalty_module_with_routers return get_loyalty_module_with_routers raise AttributeError(f"module {__name__!r} has no attribute {name!r}")