bayma888
6146be1474
feat(api-key): add independent quota and expiration support
...
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
2026-02-03 19:49:31 +08:00
..
2026-01-14 16:12:08 +08:00
2025-12-29 10:03:27 +08:00
2026-01-30 16:45:04 +08:00
2026-01-30 16:45:04 +08:00
2026-02-03 19:49:31 +08:00
2025-12-29 10:03:27 +08:00
2026-01-16 17:26:05 +08:00
2026-01-30 16:45:04 +08:00
2026-01-30 16:45:04 +08:00
2026-02-03 19:49:31 +08:00
2026-01-30 16:45:04 +08:00
2026-01-10 13:14:35 +08:00
2026-01-10 13:14:35 +08:00
2025-12-31 14:11:57 +08:00
2025-12-29 10:03:27 +08:00
2026-02-03 19:49:31 +08:00
2026-02-03 19:49:31 +08:00
2025-12-31 15:31:26 +08:00
2026-01-18 14:18:28 +08:00
2026-01-14 16:12:08 +08:00
2026-01-30 16:45:04 +08:00
2025-12-29 10:03:27 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2025-12-31 14:11:57 +08:00
2026-01-14 16:12:08 +08:00
2025-12-29 10:03:27 +08:00
2026-01-10 13:14:35 +08:00
2026-01-14 16:12:08 +08:00
2026-01-14 16:12:08 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2026-01-10 13:14:35 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2026-01-30 16:45:04 +08:00
2026-01-30 16:45:04 +08:00
2026-01-30 16:45:04 +08:00
2026-01-30 16:45:04 +08:00
2026-01-30 16:45:04 +08:00
2026-01-30 16:45:04 +08:00
2026-01-30 16:45:04 +08:00
2026-01-30 16:45:04 +08:00
2026-01-30 16:45:04 +08:00
2026-01-30 16:45:04 +08:00
2026-02-03 19:49:31 +08:00
2026-01-04 19:28:20 +08:00
2026-01-10 13:14:35 +08:00
2026-02-03 19:49:31 +08:00
2026-02-03 19:49:31 +08:00
2026-01-30 16:45:04 +08:00
2026-01-03 06:37:08 -08:00
2026-01-30 16:45:04 +08:00
2026-01-10 13:14:35 +08:00
2026-01-16 17:26:05 +08:00
2025-12-29 10:03:27 +08:00
2026-01-10 13:14:35 +08:00
2026-01-16 17:26:05 +08:00
2026-01-16 17:26:05 +08:00
2026-02-03 19:49:31 +08:00
2026-01-10 13:14:35 +08:00
2026-01-10 13:14:35 +08:00
2026-01-10 13:14:35 +08:00
2026-01-10 13:14:35 +08:00
2026-01-10 13:14:35 +08:00
2026-01-10 13:14:35 +08:00
2026-01-10 13:14:35 +08:00
2026-01-10 13:14:35 +08:00
2026-01-10 13:14:35 +08:00
2026-01-10 13:14:35 +08:00
2025-12-31 14:11:57 +08:00
2025-12-29 10:03:27 +08:00
2026-01-10 13:14:35 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2026-01-10 13:14:35 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-31 15:31:26 +08:00
2025-12-29 10:03:27 +08:00
2026-01-10 13:14:35 +08:00
2025-12-31 15:31:26 +08:00
2025-12-29 10:03:27 +08:00
2026-01-30 16:45:04 +08:00
2026-01-18 14:18:28 +08:00
2026-01-18 14:18:28 +08:00
2026-01-18 14:18:28 +08:00
2026-01-18 14:18:28 +08:00
2026-01-18 14:18:28 +08:00
2026-01-14 16:12:08 +08:00
2025-12-31 14:11:57 +08:00
2026-01-10 13:14:35 +08:00
2026-01-14 16:12:08 +08:00
2026-01-14 16:12:08 +08:00
2026-01-30 16:45:04 +08:00
2025-12-29 10:03:27 +08:00
2026-01-30 16:45:04 +08:00
2026-01-30 16:45:04 +08:00
2026-01-30 16:45:04 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2026-01-10 13:14:35 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2026-01-10 13:14:35 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2026-01-10 13:14:35 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2025-12-31 14:11:57 +08:00
2025-12-29 10:03:27 +08:00
2026-01-10 13:14:35 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00