Sivaneshakumar's picture
V1
151ec26
Raw History Blame Contribute Delete
1.89 kB
from typing import List
from fastapi import APIRouter, Depends
from sqlalchemy.ext.asyncio import AsyncSession
from backend.app.core.database import get_db
from backend.app.schemas.admin import AdminStatsResponse, AuditLogResponse
from backend.app.schemas.common import BaseResponse
from backend.app.repositories.audit_repo import AuditRepository
from backend.app.ml.manager import model_manager
from backend.app.api.deps import get_current_admin
from backend.app.models.user import User
router = APIRouter()
@router.get("/stats", response_model=BaseResponse[AdminStatsResponse])
async def get_admin_stats(
current_admin: User = Depends(get_current_admin),
db: AsyncSession = Depends(get_db),
):
"""Retrieve platform usage statistics, throughput metrics, and model status."""
audit_repo = AuditRepository(db)
stats = await audit_repo.get_system_statistics()
model_status = model_manager.get_status()
admin_stats = AdminStatsResponse(
total_users=stats["total_users"],
active_users=stats["active_users"],
total_documents_processed=stats["total_documents_processed"],
total_ner_requests=stats["total_ner_requests"],
total_chat_queries=stats["total_chat_queries"],
model_status=model_status,
system_health="Operational",
)
return BaseResponse(success=True, data=admin_stats)
@router.get("/audit-logs", response_model=BaseResponse[List[AuditLogResponse]])
async def get_audit_logs(
limit: int = 100,
current_admin: User = Depends(get_current_admin),
db: AsyncSession = Depends(get_db),
):
"""Retrieve system security and access audit trail."""
audit_repo = AuditRepository(db)
logs = await audit_repo.get_admin_audit_logs(limit=limit)
response_list = [AuditLogResponse.model_validate(log) for log in logs]
return BaseResponse(success=True, data=response_list)