2026-04-09 00:10:38 +08:00
|
|
|
use crate::handlers::admin::request::{AdminAppState, AdminRequestContext};
|
|
|
|
|
use crate::GatewayError;
|
2026-04-07 02:50:19 +08:00
|
|
|
use axum::{body::Body, response::Response};
|
|
|
|
|
|
|
|
|
|
mod analytics_routes;
|
|
|
|
|
mod cost_routes;
|
|
|
|
|
mod leaderboard;
|
|
|
|
|
mod leaderboard_routes;
|
|
|
|
|
mod provider_quota_routes;
|
|
|
|
|
mod range;
|
2026-10-05 00:28:31 +08:00
|
|
|
pub(crate) use self::range::{
|
|
|
|
|
parse_bounded_u32, precise_admin_stats_time_range, resolve_admin_usage_time_range,
|
|
|
|
|
resolve_precise_time_bounds, resolve_usage_time_bounds,
|
|
|
|
|
};
|
2026-04-09 00:10:38 +08:00
|
|
|
pub(crate) use aether_admin::observability::stats::{
|
|
|
|
|
admin_stats_bad_request_response, aggregate_usage_stats, round_to, AdminStatsTimeRange,
|
|
|
|
|
AdminStatsUsageFilter,
|
|
|
|
|
};
|
2026-04-07 02:50:19 +08:00
|
|
|
|
|
|
|
|
pub(crate) async fn maybe_build_local_admin_stats_response(
|
2026-04-09 00:10:38 +08:00
|
|
|
state: &AdminAppState<'_>,
|
|
|
|
|
request_context: &AdminRequestContext<'_>,
|
2026-04-07 02:50:19 +08:00
|
|
|
) -> Result<Option<Response<Body>>, GatewayError> {
|
2026-04-09 00:10:38 +08:00
|
|
|
if request_context.route_family() != Some("stats_manage") {
|
2026-04-07 02:50:19 +08:00
|
|
|
return Ok(None);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if let Some(response) =
|
|
|
|
|
provider_quota_routes::maybe_build_local_admin_stats_provider_quota_response(
|
|
|
|
|
state,
|
|
|
|
|
request_context,
|
|
|
|
|
)
|
|
|
|
|
.await?
|
|
|
|
|
{
|
|
|
|
|
return Ok(Some(response));
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-09 00:10:38 +08:00
|
|
|
if let Some(response) =
|
|
|
|
|
analytics_routes::maybe_build_local_admin_stats_analytics_response(state, request_context)
|
|
|
|
|
.await?
|
2026-04-07 02:50:19 +08:00
|
|
|
{
|
|
|
|
|
return Ok(Some(response));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if let Some(response) =
|
|
|
|
|
cost_routes::maybe_build_local_admin_stats_cost_response(state, request_context).await?
|
|
|
|
|
{
|
|
|
|
|
return Ok(Some(response));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if let Some(response) = leaderboard_routes::maybe_build_local_admin_stats_leaderboard_response(
|
|
|
|
|
state,
|
|
|
|
|
request_context,
|
|
|
|
|
)
|
|
|
|
|
.await?
|
|
|
|
|
{
|
|
|
|
|
return Ok(Some(response));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Ok(None)
|
|
|
|
|
}
|