• bayma888's avatar
    feat(api-key): add independent quota and expiration support · 6146be14
    bayma888 authored
    This feature allows API Keys to have their own quota limits and expiration
    times, independent of the user's balance.
    
    Backend:
    - Add quota, quota_used, expires_at fields to api_key schema
    - Implement IsExpired() and IsQuotaExhausted() checks in middleware
    - Add ResetQuota and ClearExpiration API endpoints
    - Integrate quota billing in gateway handlers (OpenAI, Anthropic, Gemini)
    - Include quota/expiration fields in auth cache for performance
    - Expiration check returns 403, quota exhausted returns 429
    
    Frontend:
    - Add quota and expiration inputs to key create/edit dialog
    - Add quick-select buttons for expiration (+7, +30, +90 days)
    - Add reset quota confirmation dialog
    - Add expires_at column to keys list
    - Add i18n translations for new features (en/zh)
    
    Migration:
    - Add 045_add_api_key_quota.sql for new columns
    6146be14
apikey.go 10.9 KB