Commit 0686dde
authored
feat(controlplane): cloud and self-hosted billing trials with dashboard UX (#2701)
* feat(billing): cloud and self-hosted trials with billing UX
Trial start, cap activation, checkout flows, and dashboard billing pages.
Provisional license_data seeding with project_limit enforcement during trial
propagation. Removes local convoy-qa-ui.sh from tracking.
* feat(dashboard): map served self-hosted plan keys for billing catalog
alias overwatch catalog keys (business_annual, enterprise) onto canonical presentation keys so feature cards and trial filtering work with the env-driven maple plan allowlist.
* fix(dashboard): drop unused trial-offer lint imports
* fix(billing): address bugbot trial poll, 4xx status, org pagination
Stop trial-cap polling on paid authoritative payloads that omit
daily_event_limit, forward definitive billing 4xx to clients, and
paginate all user orgs when resolving org_limit.
* fix(billing): resolve asynq licenser at request time and trial subscribe label
RequireAsynqMonitoring reads the shared licenser per request so a self-hosted
trial refresh unlocks queue monitoring without restart. During trial, billing
CTA shows Subscribe now instead of Resubscribe when checkout_license_key exists.
* fix(dashboard): resolve catalog plan for self-hosted trial conversion
Trial convert sends the purchasable catalog plan id and cadence to upgrade
checkout instead of the trial subscription legacy plan row.
* fix(dashboard): normalize subscription plan for plansMatch in trial conversion
Add optional key on SubscriptionPlan and pass a normalized match object so
convertTrialToPaid resolves the catalog plan without TS2345.
* fix(controlplane): skip asynqmon routes when queue is not RedisQueue
Keep per-request RequireAsynqMonitoring for runtime trial unlock, but use
a safe type assertion so mock or alternate Queuer implementations can boot.
* fix(billing): defer trial supersede until mint succeeds
Call billing before mutating checkout state, record orphan failed trial
attempts without touching an active paid checkout, and treat post-write
license refresh as best-effort so mint retries are not triggered.
* fix(billing): persist checkout supersession before trial finalize
Write superseded attempt bookkeeping and active trial attempt id before
CompleteCheckoutIfActive so a pending paid checkout is cleared when trial
mint succeeds.
* fix(billing): recover locally when trial mint settles after billing
If Overwatch returns a trial license but checkout settlement fails, persist
the minted key via UpdateInstanceBillingConfig instead of returning an error
that leaves an orphan trial and blocks retry.1 parent 844b217 commit 0686dde
116 files changed
Lines changed: 22467 additions & 14403 deletions
File tree
- api
- handlers
- types
- ui/build
- config
- datastore
- cached
- docs
- v3
- internal
- dataplane
- organisation_invites
- repo
- organisation_members
- repo
- pkg
- billing
- license
- service
- middleware
- pubsub
- mocks
- services
- web/ui/dashboard
- src
- app
- models
- private
- pages
- projects
- queue-monitoring
- settings
- billing
- services
- general
- http
- rbac
- trial-status
- utils
- environments
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
| 30 | + | |
30 | 31 | | |
31 | 32 | | |
32 | 33 | | |
| |||
194 | 195 | | |
195 | 196 | | |
196 | 197 | | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
197 | 202 | | |
198 | 203 | | |
199 | 204 | | |
| |||
203 | 208 | | |
204 | 209 | | |
205 | 210 | | |
206 | | - | |
| 211 | + | |
207 | 212 | | |
208 | 213 | | |
209 | 214 | | |
| |||
475 | 480 | | |
476 | 481 | | |
477 | 482 | | |
478 | | - | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
479 | 487 | | |
480 | 488 | | |
481 | 489 | | |
| |||
721 | 729 | | |
722 | 730 | | |
723 | 731 | | |
| 732 | + | |
724 | 733 | | |
| 734 | + | |
725 | 735 | | |
726 | 736 | | |
727 | 737 | | |
| |||
751 | 761 | | |
752 | 762 | | |
753 | 763 | | |
| 764 | + | |
754 | 765 | | |
755 | 766 | | |
756 | 767 | | |
| |||
863 | 874 | | |
864 | 875 | | |
865 | 876 | | |
866 | | - | |
867 | | - | |
868 | | - | |
869 | | - | |
870 | | - | |
871 | | - | |
872 | | - | |
| 877 | + | |
| 878 | + | |
| 879 | + | |
| 880 | + | |
| 881 | + | |
| 882 | + | |
| 883 | + | |
873 | 884 | | |
874 | | - | |
875 | | - | |
876 | | - | |
877 | | - | |
878 | | - | |
879 | | - | |
880 | | - | |
881 | | - | |
882 | | - | |
| 885 | + | |
| 886 | + | |
| 887 | + | |
| 888 | + | |
| 889 | + | |
| 890 | + | |
| 891 | + | |
883 | 892 | | |
884 | | - | |
| 893 | + | |
| 894 | + | |
| 895 | + | |
| 896 | + | |
| 897 | + | |
885 | 898 | | |
886 | 899 | | |
887 | 900 | | |
| |||
0 commit comments