Extract usage trends and reset logic into usage_tracking_helpers
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
"""Helpers extracted from UsageTrackingService.reset_current_billing_period."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime
|
||||
from typing import Any
|
||||
|
||||
from models.subscription_models import UsageStatus
|
||||
|
||||
|
||||
_CALL_FIELDS = [
|
||||
"gemini_calls",
|
||||
"openai_calls",
|
||||
"anthropic_calls",
|
||||
"mistral_calls",
|
||||
"wavespeed_calls",
|
||||
"tavily_calls",
|
||||
"serper_calls",
|
||||
"metaphor_calls",
|
||||
"firecrawl_calls",
|
||||
"stability_calls",
|
||||
"exa_calls",
|
||||
"video_calls",
|
||||
"audio_calls",
|
||||
"image_edit_calls",
|
||||
]
|
||||
|
||||
_TOKEN_FIELDS = [
|
||||
"gemini_tokens",
|
||||
"openai_tokens",
|
||||
"anthropic_tokens",
|
||||
"mistral_tokens",
|
||||
"wavespeed_tokens",
|
||||
]
|
||||
|
||||
_COST_FIELDS = [
|
||||
"gemini_cost",
|
||||
"openai_cost",
|
||||
"anthropic_cost",
|
||||
"mistral_cost",
|
||||
"wavespeed_cost",
|
||||
"tavily_cost",
|
||||
"serper_cost",
|
||||
"metaphor_cost",
|
||||
"firecrawl_cost",
|
||||
"stability_cost",
|
||||
"exa_cost",
|
||||
"video_cost",
|
||||
"image_edit_cost",
|
||||
"audio_cost",
|
||||
]
|
||||
|
||||
|
||||
def reset_usage_summary_counters(summary: Any) -> None:
|
||||
"""Reset all known usage counters to baseline values."""
|
||||
summary.usage_status = UsageStatus.ACTIVE
|
||||
|
||||
for field in _CALL_FIELDS:
|
||||
if hasattr(summary, field):
|
||||
setattr(summary, field, 0)
|
||||
|
||||
for field in _TOKEN_FIELDS:
|
||||
if hasattr(summary, field):
|
||||
setattr(summary, field, 0)
|
||||
|
||||
for field in _COST_FIELDS:
|
||||
if hasattr(summary, field):
|
||||
setattr(summary, field, 0.0)
|
||||
|
||||
summary.total_calls = 0
|
||||
summary.total_tokens = 0
|
||||
summary.total_cost = 0.0
|
||||
summary.updated_at = datetime.utcnow()
|
||||
Reference in New Issue
Block a user