feat: sync rcat data (#13628)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* RevenueCat support: public webhook endpoint, webhook handler/service,
nightly reconciliation and per-user sync; subscriptions now expose
provider and iapStore; new user-facing error for App Store/Play-managed
subscriptions.
* **Chores**
* Multi-provider subscription schema (Provider, IapStore); Stripe
credentials moved into payment.stripe (top-level apiKey/webhookKey
deprecated); new payment.revenuecat config and defaults added.
* **Tests**
  * Comprehensive RevenueCat integration test suite and snapshots.
* **Documentation**
  * Admin config descriptions updated with deprecation guidance.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
DarkSky
2025-09-23 16:52:23 +08:00
committed by GitHub
parent 75a6c79b2c
commit 762b702e46
31 changed files with 2059 additions and 33 deletions

View File

@@ -400,18 +400,23 @@
},
"apiKey": {
"type": "String",
"desc": "Stripe API key to enable payment service.",
"desc": "[Deprecated] Stripe API key. Use payment.stripe.apiKey instead.",
"env": "STRIPE_API_KEY"
},
"webhookKey": {
"type": "String",
"desc": "Stripe webhook key to enable payment service.",
"desc": "[Deprecated] Stripe webhook key. Use payment.stripe.webhookKey instead.",
"env": "STRIPE_WEBHOOK_KEY"
},
"stripe": {
"type": "Object",
"desc": "Stripe sdk options",
"desc": "Stripe sdk options and credentials",
"link": "https://docs.stripe.com/api"
},
"revenuecat": {
"type": "Object",
"desc": "RevenueCat integration configs",
"link": "https://www.revenuecat.com/docs/"
}
},
"worker": {

View File

@@ -8723,6 +8723,10 @@ export function useAFFiNEI18N(): {
* `Workspace id is required to update team subscription.`
*/
["error.WORKSPACE_ID_REQUIRED_TO_UPDATE_TEAM_SUBSCRIPTION"](): string;
/**
* `This subscription is managed by App Store or Google Play. Please manage it in the corresponding store.`
*/
["error.MANAGED_BY_APP_STORE_OR_PLAY"](): string;
/**
* `Copilot session not found.`
*/

View File

@@ -2169,6 +2169,7 @@
"error.CANT_UPDATE_ONETIME_PAYMENT_SUBSCRIPTION": "You cannot update an onetime payment subscription.",
"error.WORKSPACE_ID_REQUIRED_FOR_TEAM_SUBSCRIPTION": "A workspace is required to checkout for team subscription.",
"error.WORKSPACE_ID_REQUIRED_TO_UPDATE_TEAM_SUBSCRIPTION": "Workspace id is required to update team subscription.",
"error.MANAGED_BY_APP_STORE_OR_PLAY": "This subscription is managed by App Store or Google Play. Please manage it in the corresponding store.",
"error.COPILOT_SESSION_NOT_FOUND": "Copilot session not found.",
"error.COPILOT_SESSION_INVALID_INPUT": "Copilot session input is invalid.",
"error.COPILOT_SESSION_DELETED": "Copilot session has been deleted.",