# app/modules/enums.py """ Module system enums. This file contains enums used by the module system that need to be importable without triggering database model imports. The FrontendType enum is defined here to break a circular import: - app.modules.base imports FrontendType - Previously FrontendType was in models.database.admin_menu_config - Importing from models.database triggers model discovery - Model discovery imports module definitions - Module definitions import from app.modules.base → CIRCULAR By defining FrontendType here, we break this cycle. """ import enum class FrontendType(str, enum.Enum): """Frontend types that can have menu configuration.""" PLATFORM = "platform" # Public marketing pages (pricing, signup, about) ADMIN = "admin" # Admin panel (super admins, platform admins) STORE = "store" # Store dashboard STOREFRONT = "storefront" # Customer-facing shop MERCHANT = "merchant" # Merchant billing portal # Menu items that cannot be hidden - always visible regardless of config # Organized by frontend type # NOTE: This will be deprecated in favor of MenuItemDefinition.is_mandatory MANDATORY_MENU_ITEMS = { FrontendType.ADMIN: frozenset({ "dashboard", # Default landing page after login "merchants", "stores", "admin-users", "settings", }), FrontendType.STORE: frozenset({ "dashboard", # Default landing page after login "settings", }), FrontendType.PLATFORM: frozenset(), FrontendType.STOREFRONT: frozenset(), FrontendType.MERCHANT: frozenset({ "dashboard", "subscriptions", }), } __all__ = ["FrontendType", "MANDATORY_MENU_ITEMS"]