"""API routes for Compliance module."""

import logging

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."""
    try:
        mod = __import__(f"compliance.api.{module_name}", fromlist=[attr])
        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


# Import all sub-routers (safe — failure of one doesn't block others)
_ROUTER_MODULES = [
    "audit_routes",
    "ai_routes",
    "evidence_routes",
    "risk_routes",
    "dashboard_routes",
    "scraper_routes",
    "module_routes",
    "isms_routes",
    "vvt_routes",
    "legal_document_routes",
    "einwilligungen_routes",
    "einwilligungen_export_routes",
    "escalation_routes",
    "consent_template_routes",
    "notfallplan_routes",
    "obligation_routes",
    "security_backlog_routes",
    "quality_routes",
    "loeschfristen_routes",
    "legal_template_routes",
    "compliance_scope_routes",
    "dsfa_routes",
    "dsr_routes",
    "email_template_routes",
    "banner_routes",
    "extraction_routes",
    "tom_routes",
    "vendor_compliance_routes",
    "incident_routes",
    "change_request_routes",
    "generation_routes",
    "project_routes",
    "wiki_routes",
    "canonical_control_routes",
    "control_generator_routes",
    "crosswalk_routes",
    "use_case_controls_routes",
    "control_suppression_routes",
    "process_task_routes",
    "evidence_check_routes",
    "vvt_library_routes",
    "tom_mapping_routes",
    "llm_audit_routes",
    "assertion_routes",
    "org_role_routes",
    "document_review_routes",
    "banner_analytics_routes",
    "banner_ab_routes",
    "compliance_report_routes",
    "whistleblower_routes",
    "tcf_routes",
    "founding_wizard_routes",
    "licenses_routes",
    "template_rule_routes",
    "specialist_agent_routes",
    "reasoning_routes",
    "onboarding_routes",
]

_loaded_count = 0
for _mod_name in _ROUTER_MODULES:
    _sub_router = _safe_import_router(_mod_name)
    if _sub_router is not None:
        router.include_router(_sub_router)
        _loaded_count += 1

logger.info("Loaded %d/%d compliance sub-routers", _loaded_count, len(_ROUTER_MODULES))

__all__ = ["router"]
