File size: 9,638 Bytes
4a2ab42
 
caf23fd
4a2ab42
 
 
caf23fd
4a2ab42
 
 
 
 
 
 
 
 
 
 
 
 
 
 
caf23fd
 
 
4a2ab42
 
caf23fd
4a2ab42
 
 
 
caf23fd
4a2ab42
 
 
caf23fd
4a2ab42
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
caf23fd
4a2ab42
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
caf23fd
4a2ab42
 
 
caf23fd
 
 
 
 
4a2ab42
 
 
 
 
 
 
 
 
 
 
 
 
 
 
caf23fd
4a2ab42
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
caf23fd
4a2ab42
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
from datetime import datetime

from app.routers.agents import router as agents_router
from fastapi import FastAPI

from app.constants import API_VERSION
from app.modules.admin.router import router as admin_router
from app.routers import advanced_ai
from app.routers.ai import router as ai_router
from app.routers.ai_voice import router as ai_voice_router
from app.routers.analytics import router as analytics_router
from app.routers.apm import router as apm_router
from app.routers.audit import router as audit_router
from app.routers.auth import router as auth_router
from app.routers.auth_biometric import router as auth_biometric_router
from app.routers.auth_social import router as auth_social_router
from app.routers.backup import router as backup_router
from app.routers.cases import router as cases_router
from app.routers.collaboration import router as collaboration_router
from app.routers.compliance import router as compliance_router
from app.routers.cost_optimization import router as cost_optimization_router
from app.routers.csrf import router as csrf_router
from app.routers.entities import (
    relationships_router as relationships_router_from_entities,
)
from app.routers.entities import router as entities_router
from app.routers.evidence import router as evidence_router
from app.routers.feature_flags import router as feature_flags_router
from app.routers.forensic_intelligence import router as forensic_intel_router
from app.routers.fraud import router as fraud_router
from app.routers.fraud_rules import router as fraud_rules_router
from app.routers.graph import router as graph_router
from app.routers.graph import shim_router as graph_shim_router
from app.routers.health import router as health_router
from app.routers.logging import router as logging_router
from app.routers.metadata import router as metadata_router
from app.routers.monitoring import router as monitoring_router
from app.routers.multimodal import router as multimodal_router
from app.routers.notifications import router as notifications_router
from app.routers.onboarding import router as onboarding_router
from app.routers.proof import router as proof_router
from app.routers.realtime_sync import router as realtime_sync_router
from app.routers.reconciliation import router as reconciliation_router
from app.routers.regulatory_rag import router as regulatory_rag_router
from app.routers.reporting import router as reporting_router
from app.routers.search import router as search_router
from app.routers.self_healing import router as self_healing_router
from app.routers.semantic_search import router as semantic_search_router
from app.routers.stats import router as stats_router

# System specific router
from app.routers.system_routes import router as system_router
from app.routers.time_travel import router as time_travel_router
from app.routers.users import router as users_router
from app.routers.xai import router as xai_router
from core.logging import logger


def setup_routers(app: FastAPI):
    # Health Check Endpoints (Moved to app.routers.health)
    app.include_router(health_router)

    # System routes (metrics, dashboard, index)
    app.include_router(system_router)
    app.include_router(feature_flags_router, prefix=f"/api/{API_VERSION}/feature-flags", tags=["Feature Flags"])

    # Standard Routers
    app.include_router(auth_router, prefix=f"/api/{API_VERSION}/auth", tags=["Authentication"])
    app.include_router(search_router, prefix=f"/api/{API_VERSION}/search", tags=["Search"])
    app.include_router(admin_router, prefix=f"/api/{API_VERSION}/admin", tags=["Admin"])
    app.include_router(users_router, prefix=f"/api/{API_VERSION}/users", tags=["Users"])
    app.include_router(analytics_router, prefix=f"/api/{API_VERSION}/analytics", tags=["Analytics"])
    app.include_router(reporting_router, prefix=f"/api/{API_VERSION}/reports", tags=["Reporting"])
    app.include_router(cases_router, prefix=f"/api/{API_VERSION}/cases", tags=["Cases"])
    app.include_router(audit_router, prefix=f"/api/{API_VERSION}/audit", tags=["Audit"])
    app.include_router(
        cost_optimization_router,
        prefix=f"/api/{API_VERSION}/cost-optimization",
        tags=["Cost Optimization"],
    )
    app.include_router(evidence_router, prefix=f"/api/{API_VERSION}/evidence", tags=["Evidence"])
    app.include_router(fraud_router, prefix=f"/api/{API_VERSION}/fraud", tags=["Fraud"])
    app.include_router(compliance_router, prefix=f"/api/{API_VERSION}/compliance", tags=["Compliance"])
    app.include_router(agents_router, prefix=f"/api/{API_VERSION}/agents", tags=["Agents"])

    # AI & Intelligence
    app.include_router(ai_router, prefix=f"/api/{API_VERSION}/ai", tags=["AI Intelligence"])
    app.include_router(
        advanced_ai.router,
        prefix=f"/api/{API_VERSION}/advanced_ai",
        tags=["Advanced AI"],
    )

    # Additional Routers
    app.include_router(multimodal_router, prefix=f"/api/{API_VERSION}/multimodal", tags=["Multimodal"])
    # DEPRECATED: Semantic search router - will be removed Feb 1, 2026
    # Keep active until removal deadline to allow graceful migration
    removal_deadline = datetime(2026, 2, 1)
    if datetime.now() < removal_deadline:
        app.include_router(
            semantic_search_router,
            prefix=f"/api/{API_VERSION}/semantic_search",
            tags=["Semantic Search (DEPRECATED)"],
        )
    else:
        logger.warning("Semantic search router removal deadline reached - endpoints disabled")
    app.include_router(logging_router, prefix=f"/api/{API_VERSION}/logging", tags=["Logging"])
    app.include_router(monitoring_router, prefix=f"/api/{API_VERSION}/monitoring", tags=["Monitoring"])
    app.include_router(apm_router, prefix=f"/api/{API_VERSION}/apm", tags=["APM"])
    app.include_router(graph_router, prefix=f"/api/{API_VERSION}/graph", tags=["Graph"])
    app.include_router(realtime_sync_router, prefix=f"/api/{API_VERSION}/sync", tags=["Realtime Sync"])
    app.include_router(
        notifications_router,
        prefix=f"/api/{API_VERSION}/notifications",
        tags=["Notifications"],
    )
    app.include_router(backup_router, prefix=f"/api/{API_VERSION}/backup", tags=["Backup"])
    app.include_router(fraud_rules_router, prefix=f"/api/{API_VERSION}/rules", tags=["Fraud Rules"])
    app.include_router(
        collaboration_router,
        prefix=f"/api/{API_VERSION}/collaboration",
        tags=["Collaboration"],
    )
    app.include_router(stats_router, prefix=f"/api/{API_VERSION}/stats", tags=["Stats"])
    app.include_router(
        reconciliation_router,
        prefix=f"/api/{API_VERSION}/reconciliation",
        tags=["Reconciliation"],
    )
    app.include_router(onboarding_router, prefix=f"/api/{API_VERSION}/onboarding", tags=["Onboarding"])
    app.include_router(metadata_router, prefix=f"/api/{API_VERSION}/metadata", tags=["Metadata"])

    app.include_router(proof_router, prefix=f"/api/{API_VERSION}/proof", tags=["Proof"])
    app.include_router(
        forensic_intel_router,
        prefix=f"/api/{API_VERSION}/forensic-intel",
        tags=["Forensic Intelligence"],
    )
    app.include_router(entities_router, prefix=f"/api/{API_VERSION}/entities", tags=["Entities"])
    app.include_router(csrf_router, prefix=f"/api/{API_VERSION}", tags=["Security"])

    # Roadmap to 10/10 Routers
    app.include_router(
        time_travel_router,
        prefix=f"/api/{API_VERSION}/cases",
        tags=["Time Travel (Roadmap)"],
    )
    app.include_router(ai_voice_router, prefix=f"/api/{API_VERSION}/ai", tags=["AI Voice (Roadmap)"])

    # New Roadmap Routers (Completed)
    app.include_router(xai_router, prefix=f"/api/{API_VERSION}")
    app.include_router(regulatory_rag_router, prefix=f"/api/{API_VERSION}")
    app.include_router(auth_biometric_router, prefix=f"/api/{API_VERSION}")
    app.include_router(auth_social_router, prefix=f"/api/{API_VERSION}")
    app.include_router(self_healing_router, prefix=f"/api/{API_VERSION}")
    app.include_router(graph_shim_router, prefix=f"/api/{API_VERSION}")

    app.include_router(
        relationships_router_from_entities,
        prefix=f"/api/{API_VERSION}/relationships",
        tags=["Relationships"],
    )

    # Optional Routers
    try:
        from app.routers.projects import router as projects_router

        app.include_router(projects_router, prefix=f"/api/{API_VERSION}/projects", tags=["Projects"])
    except ImportError as e:
        logger.warning(f"Failed to import projects router: {e}")

    try:
        from app.routers.alerts import router as alerts_router

        app.include_router(alerts_router, prefix=f"/api/{API_VERSION}/alerts", tags=["Alerts"])
    except ImportError as e:
        logger.warning(f"Failed to import alerts router: {e}")

    try:
        from app.routers.metrics import router as metrics_router

        app.include_router(metrics_router, tags=["Metrics"])
    except ImportError:
        pass

    try:
        from app.routers.streaming import router as streaming_router

        app.include_router(streaming_router, prefix=f"/api/{API_VERSION}", tags=["Streaming"])
    except ImportError:
        pass

    try:
        from app.routers.websocket import router as websocket_router

        app.include_router(websocket_router, tags=["WebSocket"])
    except ImportError:
        pass

    try:
        from app.routers.diagnostics import router as diagnostics_router

        app.include_router(
            diagnostics_router,
            prefix=f"/api/{API_VERSION}/diagnostics",
            tags=["Diagnostics"],
        )
    except ImportError:
        pass