mirror of
https://github.com/tiennm99/DocsGPT.git
synced 2026-10-20 02:16:39 +00:00
feat(quotas): limit resolution and the quota service
docsgpt/quotas resolves a user's effective token and cost limits from the policy rows that apply to them: their own override, then the most generous allowance among their teams, then the instance default, then any defaults a registered provider supplies. Each budget resolves on its own, and a team counts once however many memberships the user holds in it. QuotaService compares those limits with the user's token_usage totals over the current QUOTA_PERIOD window (calendar-aligned, UTC, computed at read time). It fails open, and skips the usage query for unlimited users.
This commit is contained in:
1 parent
6c42139224
commit
6826313b60
12 files changed
+1175
No files matched your search
@@ -0,0 +1,24 @@
|
||||
"""Admin-set usage quotas.
|
||||
|
||||
Limits live in ``quota_policies`` at three layers (instance default, team
|
||||
per-member allowance, user override), each with a token budget and a USD
|
||||
budget. ``QuotaService`` resolves a user's effective limits and compares them
|
||||
with their ``token_usage`` totals over the current ``QUOTA_PERIOD`` window.
|
||||
"""
|
||||
|
||||
from docsgpt.quotas.providers import QuotaDefaultsProvider, register_defaults_provider
|
||||
from docsgpt.quotas.resolver import ResolvedLimit, ResolvedLimits, resolve_limits
|
||||
from docsgpt.quotas.service import BucketStatus, QuotaExceeded, QuotaService
|
||||
from docsgpt.quotas.windows import window_bounds
|
||||
|
||||
__all__ = [
|
||||
"BucketStatus",
|
||||
"QuotaDefaultsProvider",
|
||||
"QuotaExceeded",
|
||||
"QuotaService",
|
||||
"ResolvedLimit",
|
||||
"ResolvedLimits",
|
||||
"register_defaults_provider",
|
||||
"resolve_limits",
|
||||
"window_bounds",
|
||||
]
|
||||
Reference in new issue
Block a user