feat: combine usage quota and pool stats updates

This commit is contained in:
fawney19
2026-05-07 01:26:42 +08:00
parent 012f8bcdf7
commit 1f5b294bd0
35 changed files with 3472 additions and 122 deletions

View File

@@ -2,7 +2,8 @@ mod types;
pub use types::{
parse_usage_body_ref, usage_body_ref, PendingUsageCleanupSummary,
StoredProviderApiKeyUsageSummary, StoredProviderUsageSummary, StoredProviderUsageWindow,
ProviderApiKeyWindowUsageRequest, StoredProviderApiKeyUsageSummary,
StoredProviderApiKeyWindowUsageSummary, StoredProviderUsageSummary, StoredProviderUsageWindow,
StoredRequestUsageAudit, StoredUsageAuditAggregation, StoredUsageAuditSummary,
StoredUsageBreakdownSummaryRow, StoredUsageCacheAffinityHitSummary,
StoredUsageCacheAffinityIntervalRow, StoredUsageCacheHitSummary, StoredUsageCostSavingsSummary,

View File

@@ -619,6 +619,23 @@ pub struct StoredProviderApiKeyUsageSummary {
pub last_used_at_unix_secs: Option<u64>,
}
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub struct ProviderApiKeyWindowUsageRequest {
pub provider_api_key_id: String,
pub window_code: String,
pub start_unix_secs: u64,
pub end_unix_secs: u64,
}
#[derive(Debug, Clone, PartialEq, Default, serde::Serialize, serde::Deserialize)]
pub struct StoredProviderApiKeyWindowUsageSummary {
pub provider_api_key_id: String,
pub window_code: String,
pub request_count: u64,
pub total_tokens: u64,
pub total_cost_usd: f64,
}
#[derive(Debug, Clone, PartialEq, Eq, Default, serde::Serialize, serde::Deserialize)]
pub struct UsageAuditListQuery {
pub created_from_unix_secs: Option<u64>,
@@ -1479,6 +1496,11 @@ pub trait UsageReadRepository: Send + Sync {
crate::DataLayerError,
>;
async fn summarize_usage_by_provider_api_key_windows(
&self,
requests: &[ProviderApiKeyWindowUsageRequest],
) -> Result<Vec<StoredProviderApiKeyWindowUsageSummary>, crate::DataLayerError>;
async fn summarize_provider_usage_since(
&self,
provider_id: &str,