# app/modules/monitoring/definition.py """ Monitoring module definition. Defines the monitoring module including its features, menu items, route configurations, and self-contained module settings. """ from app.modules.base import ModuleDefinition from models.database.admin_menu_config import FrontendType def _get_admin_router(): """Lazy import of admin router to avoid circular imports.""" from app.modules.monitoring.routes.admin import admin_router return admin_router # Monitoring module definition monitoring_module = ModuleDefinition( code="monitoring", name="Platform Monitoring", description="Logs, background tasks, imports, system health, Flower, and Grafana integration.", version="1.0.0", features=[ "application_logs", # Log viewing "background_tasks", # Task monitoring "import_jobs", # Import job tracking "capacity_monitoring", # System capacity "testing_hub", # Test runner "code_quality", # Code quality tools "flower_integration", # Celery Flower link "grafana_integration", # Grafana dashboard link ], menu_items={ FrontendType.ADMIN: [ "imports", # Import jobs "background-tasks", # Background tasks "logs", # Application logs "platform-health", # Platform health "testing", # Testing hub "code-quality", # Code quality ], FrontendType.VENDOR: [], # No vendor menu items }, is_core=False, is_internal=True, # Internal module - admin-only, not customer-facing # ========================================================================= # Self-Contained Module Configuration # ========================================================================= is_self_contained=True, services_path="app.modules.monitoring.services", models_path="app.modules.monitoring.models", schemas_path="app.modules.monitoring.schemas", exceptions_path="app.modules.monitoring.exceptions", ) def get_monitoring_module_with_routers() -> ModuleDefinition: """ Get monitoring module with routers attached. This function attaches the routers lazily to avoid circular imports during module initialization. """ monitoring_module.admin_router = _get_admin_router() return monitoring_module __all__ = ["monitoring_module", "get_monitoring_module_with_routers"]