|
@@ -16,6 +16,8 @@ from app.schemas.gateway import (
|
|
|
ApiKeyResponse,
|
|
ApiKeyResponse,
|
|
|
ApiKeyStatusUpdateRequest,
|
|
ApiKeyStatusUpdateRequest,
|
|
|
GatewayRequestAuditResponse,
|
|
GatewayRequestAuditResponse,
|
|
|
|
|
+ GatewayAuditServiceStats,
|
|
|
|
|
+ GatewayAuditStatsResponse,
|
|
|
GatewayServicesHealthResponse,
|
|
GatewayServicesHealthResponse,
|
|
|
)
|
|
)
|
|
|
|
|
|
|
@@ -105,6 +107,29 @@ def list_gateway_audits(
|
|
|
return [GatewayRequestAuditResponse.from_entity(item) for item in items]
|
|
return [GatewayRequestAuditResponse.from_entity(item) for item in items]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+@router.get("/gateway/audits/stats", response_model=GatewayAuditStatsResponse)
|
|
|
|
|
+def gateway_audit_stats(
|
|
|
|
|
+ tenant_id: str = Query(...),
|
|
|
|
|
+ db: Session = Depends(get_db),
|
|
|
|
|
+) -> GatewayAuditStatsResponse:
|
|
|
|
|
+ rows = GatewayRequestAuditRepository(db).stats_by_service(tenant_id=tenant_id)
|
|
|
|
|
+ services = [
|
|
|
|
|
+ GatewayAuditServiceStats(
|
|
|
|
|
+ target_service=target_service,
|
|
|
|
|
+ request_count=request_count,
|
|
|
|
|
+ error_count=error_count,
|
|
|
|
|
+ average_duration_ms=round(average_duration_ms, 2),
|
|
|
|
|
+ )
|
|
|
|
|
+ for target_service, request_count, error_count, average_duration_ms in rows
|
|
|
|
|
+ ]
|
|
|
|
|
+ return GatewayAuditStatsResponse(
|
|
|
|
|
+ tenant_id=tenant_id,
|
|
|
|
|
+ total_request_count=sum(item.request_count for item in services),
|
|
|
|
|
+ total_error_count=sum(item.error_count for item in services),
|
|
|
|
|
+ services=services,
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
def get_gateway_settings() -> ApiGatewaySettings:
|
|
def get_gateway_settings() -> ApiGatewaySettings:
|
|
|
return ApiGatewaySettings()
|
|
return ApiGatewaySettings()
|
|
|
|
|
|