- New backend/api/admin/overview.py: aggregate stats (user_count, total_storage_bytes, doc_status) + last 10 audit entries in one payload - Sub-router carries NO prefix (parent __init__.py carries /api/admin) - Reuses _build_filtered_query_with_handles + _audit_to_dict_with_handles from api.audit — no new serializer or query logic - Registered overview_router on admin parent router in __init__.py - All 8 ADMIN-11 tests pass; existing admin and audit suites stay green
26 lines
999 B
Python
26 lines
999 B
Python
"""Admin API package — router aggregator.
|
|
|
|
This file does ONLY router aggregation (Pitfall 2 prevention — T-08-04-04).
|
|
No helpers, no models, no logic belong here.
|
|
|
|
The prefix="/api/admin" is carried here so sub-routers have NO prefix (D-04):
|
|
users_router = APIRouter() -> /api/admin/users via parent
|
|
quotas_router = APIRouter() -> /api/admin/users/{id}/quota via parent
|
|
ai_router = APIRouter() -> /api/admin/ai-config via parent
|
|
|
|
main.py continues to use:
|
|
from api.admin import router as admin_router
|
|
app.include_router(admin_router)
|
|
"""
|
|
from fastapi import APIRouter
|
|
from api.admin.overview import router as overview_router
|
|
from api.admin.users import router as users_router
|
|
from api.admin.quotas import router as quotas_router
|
|
from api.admin.ai import router as ai_router
|
|
|
|
router = APIRouter(prefix="/api/admin", tags=["admin"])
|
|
router.include_router(overview_router)
|
|
router.include_router(users_router)
|
|
router.include_router(quotas_router)
|
|
router.include_router(ai_router)
|