feat(usage): enrich audit metadata and detail views

This commit is contained in:
elky
2026-07-17 19:20:16 +08:00
parent 0be380243b
commit 664c063a06
79 changed files with 6968 additions and 1294 deletions
@@ -30,6 +30,25 @@ struct ResolvedAdminMonitoringTrace {
usage: Option<StoredRequestUsageAudit>,
}
async fn hydrate_admin_monitoring_trace_response_body(
state: &AdminAppState<'_>,
mut usage: StoredRequestUsageAudit,
) -> Result<StoredRequestUsageAudit, GatewayError> {
let is_error_node = !usage.status.eq_ignore_ascii_case("completed")
|| usage
.status_code
.is_some_and(|status| !(200..300).contains(&status));
let response_body_ref = if is_error_node && usage.response_body.is_none() {
usage.response_body_ref.clone()
} else {
None
};
if let Some(body_ref) = response_body_ref.as_deref() {
usage.response_body = state.resolve_request_usage_body_ref(body_ref).await?;
}
Ok(usage)
}
pub(super) async fn build_admin_monitoring_trace_request_response(
state: &AdminAppState<'_>,
request_context: &AdminRequestContext<'_>,
@@ -92,6 +111,10 @@ async fn resolve_admin_monitoring_trace(
.read_request_usage_audit_shallow(request_id)
.await
.map_err(|err| GatewayError::Internal(err.to_string()))?;
let usage = match usage {
Some(usage) => Some(hydrate_admin_monitoring_trace_response_body(state, usage).await?),
None => None,
};
return Ok(Some(ResolvedAdminMonitoringTrace { trace, usage }));
}
@@ -102,9 +125,10 @@ async fn resolve_admin_monitoring_trace(
.await
.map_err(|err| GatewayError::Internal(err.to_string()))?
{
usage_candidates.push(usage);
usage_candidates.push(hydrate_admin_monitoring_trace_response_body(state, usage).await?);
}
if let Some(usage) = state.find_request_usage_by_id(request_id).await? {
let usage = hydrate_admin_monitoring_trace_response_body(state, usage).await?;
if !usage_candidates.iter().any(|item| item.id == usage.id) {
usage_candidates.push(usage);
}