Multi-plan subscriptions, quotas, and token usage APIs (#16 #17 #36) #37

Merged
westfarn merged 2 commits from feature/plans-quotas-token-usage into master 2026-07-31 04:24:21 -07:00
Owner

Summary

Implements #16, #17, and #36 in one backend PR.

  • #36 Multi-plan catalog: Founders ($10, public), Standard ($15), Pro ($40), Business ($99), Backer ($0). Future tiers seeded but hidden/is_selectable=false. Backer email whitelist auto-assigns Founders-level access with no checkout.
  • #36 Feature + prompt gating: plan feature flags (text vs image); rolling 6h prompt windows (100 / 200 / 300 / 300 / 300). Enforced in both chat consumers when ENFORCE_SUBSCRIPTION_GATES=true.
  • #17 Token-period quotas: optional monthly_token_quota on plans + per-user override; calendar-month aggregation from PromptMetric; warn/block when reported token totals exceed cap. Null provider usage never fabricated as 0; tracked via turns_missing_token_usage.
  • #16 Token API exposure: tokens_in / tokens_out on conversation + prompt serializers (null when unknown). GET /api/finance/subscription/ returns plan + usage snapshot for the FE.
  • Checkout defaults to Founders; Stripe paid webhooks assign Founders. Registration/OAuth redeem Backer whitelist and return needs_checkout.

Companion FE PR: chat_web_app branch feature/plans-quotas-token-usage.

Test plan

  • manage.py migrate seeds five plans; admin can add Backer emails
  • Public GET /api/finance/plans/ returns only Founders
  • Register with Backer email → active Backer, needs_checkout=false, checkout rejected
  • Founders checkout + paid webhook → active Founders subscription
  • Chat turn blocked without subscription / when prompt window exceeded / when token period exceeded
  • Standard plan denies image feature; Pro/Founders/Backer allow
  • Conversation/prompt API returns null tokens when unreported, sums when present
  • finance.tests.test_plans_quotas + existing finance/checkout tests pass
## Summary Implements [#16](https://git.aimloperations.com/ai_ml_operations/chat_backend/issues/16), [#17](https://git.aimloperations.com/ai_ml_operations/chat_backend/issues/17), and [#36](https://git.aimloperations.com/ai_ml_operations/chat_backend/issues/36) in one backend PR. - **#36 Multi-plan catalog**: Founders ($10, public), Standard ($15), Pro ($40), Business ($99), Backer ($0). Future tiers seeded but hidden/`is_selectable=false`. Backer email whitelist auto-assigns Founders-level access with no checkout. - **#36 Feature + prompt gating**: plan feature flags (text vs image); rolling **6h** prompt windows (100 / 200 / 300 / 300 / 300). Enforced in both chat consumers when `ENFORCE_SUBSCRIPTION_GATES=true`. - **#17 Token-period quotas**: optional `monthly_token_quota` on plans + per-user override; calendar-month aggregation from `PromptMetric`; warn/block when reported token totals exceed cap. Null provider usage never fabricated as 0; tracked via `turns_missing_token_usage`. - **#16 Token API exposure**: `tokens_in` / `tokens_out` on conversation + prompt serializers (null when unknown). `GET /api/finance/subscription/` returns plan + usage snapshot for the FE. - Checkout defaults to **Founders**; Stripe paid webhooks assign Founders. Registration/OAuth redeem Backer whitelist and return `needs_checkout`. Companion FE PR: `chat_web_app` branch `feature/plans-quotas-token-usage`. ## Test plan - [ ] `manage.py migrate` seeds five plans; admin can add Backer emails - [ ] Public `GET /api/finance/plans/` returns only Founders - [ ] Register with Backer email → active Backer, `needs_checkout=false`, checkout rejected - [ ] Founders checkout + paid webhook → active Founders subscription - [ ] Chat turn blocked without subscription / when prompt window exceeded / when token period exceeded - [ ] Standard plan denies image feature; Pro/Founders/Backer allow - [ ] Conversation/prompt API returns `null` tokens when unreported, sums when present - [ ] `finance.tests.test_plans_quotas` + existing finance/checkout tests pass
westfarn added 1 commit 2026-07-31 04:22:20 -07:00
Add multi-plan subscriptions, quotas, and token usage APIs
CI / test (pull_request) Successful in 10s
Unit Tests / test (pull_request) Successful in 10s
a6c45b0882
Implements #16/#17/#36: Founders/Standard/Pro/Business/Backer catalog,
Backer email whitelist, prompt-window + token-period gates, and
tokens_in/out on conversation/prompt + subscription usage APIs.
westfarn added 1 commit 2026-07-31 04:23:42 -07:00
Move django.conf settings import to module top in quotas
CI / test (pull_request) Successful in 9s
Unit Tests / test (pull_request) Successful in 9s
d5ec7185a2
westfarn merged commit 841c0962d9 into master 2026-07-31 04:24:21 -07:00
westfarn deleted branch feature/plans-quotas-token-usage 2026-07-31 04:24:21 -07:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ai_ml_operations/chat_backend#37