diff --git a/backend-compliance/compliance/api/__init__.py b/backend-compliance/compliance/api/__init__.py index d9551a6..4c508e6 100644 --- a/backend-compliance/compliance/api/__init__.py +++ b/backend-compliance/compliance/api/__init__.py @@ -6,6 +6,8 @@ from .routes import router logger = logging.getLogger(__name__) +_failed_routers: dict[str, str] = {} + def _safe_import_router(module_name: str, attr: str = "router"): """Import a router module safely — log error but don't crash the whole app.""" @@ -14,6 +16,7 @@ def _safe_import_router(module_name: str, attr: str = "router"): return getattr(mod, attr) except Exception as e: logger.error("Failed to import %s: %s", module_name, e) + _failed_routers[module_name] = str(e) return None diff --git a/backend-compliance/main.py b/backend-compliance/main.py index e007598..816c4e2 100644 --- a/backend-compliance/main.py +++ b/backend-compliance/main.py @@ -92,6 +92,18 @@ async def health(): } +@app.get("/debug/routers", tags=["system"]) +async def debug_routers(): + """Diagnostic: show which sub-routers loaded and which failed.""" + from compliance.api import _ROUTER_MODULES, _failed_routers, _loaded_count + return { + "total": len(_ROUTER_MODULES), + "loaded": _loaded_count, + "failed_count": len(_failed_routers), + "failed": _failed_routers, + } + + # --- Compliance-specific Routers --- # Consent (user-facing)