feat: optimize usage body viewing and provider card layout

This commit is contained in:
elky
2026-09-08 02:49:06 +08:00
parent 7aa0c89244
commit 099b810a2f
36 changed files with 3113 additions and 739 deletions
@@ -16,7 +16,7 @@ pub use types::{
ProxyNodeCounterDelta, StoredProviderApiKeyUsageSummary,
StoredProviderApiKeyWindowUsageSummary, StoredProviderUsageSummary, StoredProviderUsageWindow,
StoredRequestUsageAudit, StoredUsageAuditAggregation, StoredUsageAuditSummary,
StoredUsageBreakdownSummaryRow, StoredUsageCacheAffinityHitSummary,
StoredUsageBodyPayload, StoredUsageBreakdownSummaryRow, StoredUsageCacheAffinityHitSummary,
StoredUsageCacheAffinityIntervalRow, StoredUsageCacheHitSummary, StoredUsageCostSavingsSummary,
StoredUsageDailySummary, StoredUsageDashboardDailyBreakdownRow,
StoredUsageDashboardProviderCount, StoredUsageDashboardStatsSummary,
@@ -1732,6 +1732,12 @@ pub fn canonical_usage_body_ref_for(
.map(|(request_id, field)| usage_body_ref(&request_id, field))
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum StoredUsageBodyPayload {
Gzip(Vec<u8>),
Json(Vec<u8>),
}
#[async_trait]
pub trait UsageReadRepository: Send + Sync {
async fn find_by_id(
@@ -1761,6 +1767,20 @@ pub trait UsageReadRepository: Send + Sync {
body_ref: &str,
) -> Result<Option<Value>, crate::DataLayerError>;
async fn read_body_payload(
&self,
body_ref: &str,
) -> Result<Option<StoredUsageBodyPayload>, crate::DataLayerError> {
self.resolve_body_ref(body_ref)
.await?
.map(|value| {
serde_json::to_vec(&value)
.map(StoredUsageBodyPayload::Json)
.map_err(|error| crate::DataLayerError::UnexpectedValue(error.to_string()))
})
.transpose()
}
async fn list_usage_audits(
&self,
query: &UsageAuditListQuery,