refactor(quota): canonical <entity>_<action> taxonomy for quota events
The quota-attribution action keys were inconsistent (mixed verbs, ad-hoc names, English-only labels). Introduce a QuotaAction constants holder (one source of truth), rename every attribution call site to it, and add migration 0020 to rename historical quota_events.action values. The display label now resolves from i18n (quotaActions.<key>, EN/HU/DE) instead of a hard-coded English map. Scheduler job ids and progress phase labels are a separate namespace and are left untouched.
This commit is contained in:
parent
e3d3596c7c
commit
dc70a978ed
12 changed files with 151 additions and 33 deletions
|
|
@ -17,6 +17,32 @@ from app.models import ApiQuotaUsage, QuotaEvent
|
|||
|
||||
_PACIFIC = ZoneInfo("America/Los_Angeles")
|
||||
|
||||
|
||||
class QuotaAction:
|
||||
"""Canonical quota-attribution action keys (one source of truth).
|
||||
|
||||
Naming scheme: ``<entity>_<action>``, all snake_case, explicit pull/push direction.
|
||||
The stored value is this machine key; the user-facing label is resolved from i18n
|
||||
(frontend ``quotaActions.<key>``). Distinct from scheduler job ids and progress phase
|
||||
labels — do not conflate.
|
||||
"""
|
||||
|
||||
SUBSCRIPTIONS_PULL = "subscriptions_pull"
|
||||
SUBSCRIPTIONS_RESYNC = "subscriptions_resync"
|
||||
PLAYLISTS_PULL = "playlists_pull"
|
||||
PLAYLISTS_PUSH = "playlists_push"
|
||||
PLAYLISTS_DELETE = "playlists_delete"
|
||||
VIDEOS_BACKFILL_RECENT = "videos_backfill_recent"
|
||||
VIDEOS_BACKFILL_FULL = "videos_backfill_full"
|
||||
VIDEOS_ENRICH = "videos_enrich"
|
||||
VIDEOS_LOOKUP = "videos_lookup"
|
||||
CHANNELS_DISCOVER = "channels_discover"
|
||||
CHANNELS_SUBSCRIBE = "channels_subscribe"
|
||||
CHANNELS_UNSUBSCRIBE = "channels_unsubscribe"
|
||||
MAINTENANCE_REVALIDATE = "maintenance_revalidate"
|
||||
OTHER = "other"
|
||||
|
||||
|
||||
# Request/job-scoped attribution for quota spend: who triggered it and what kind of work.
|
||||
# Set at entry points (route handlers, scheduler jobs) via attribute(); read by
|
||||
# record_usage. Default = background/system, generic action.
|
||||
|
|
@ -24,7 +50,7 @@ _actor_id: contextvars.ContextVar[int | None] = contextvars.ContextVar(
|
|||
"quota_actor_id", default=None
|
||||
)
|
||||
_action: contextvars.ContextVar[str] = contextvars.ContextVar(
|
||||
"quota_action", default="api"
|
||||
"quota_action", default=QuotaAction.OTHER
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue