用途:该技能面向构建 Software-as-a-Service 应用,围绕多租户、订阅计费与用户管理展开,示例使用 TypeScript、Prisma 和 Stripe。
主要能力: 一、多租户策略。提供三种数据库方案:共享数据库加 tenant_id 列、每租户独立 schema(PostgreSQL)、每租户独立数据库。配合中间件注入租户上下文,并使用 Prisma 中间件与 $extends 自动为多数查询追加租户过滤、为创建追加租户 ID。还给出 PostgreSQL 行级安全(RLS)策略与 withTenantContext 设置 app.tenant_id 的方式。 二、订阅管理。通过 Stripe 创建、更新、取消订阅(含试用期、按比例计费、周期末取消),并处理 subscription.created/updated/deleted 及 invoice 成功或失败等 Webhook,将订阅状态同步到数据库并映射套餐。 三、按量计费。提供 recordUsage 上报用量,以及 UsageTracker 类缓冲并定时 flush,将用量写入数据库并可上报 Stripe 计量计费。 四、功能开关与权限。以 Plan 定义各套餐的 features 与 limits,提供 hasFeature、checkLimit 与 requireFeature 中间件做功能门控。 五、用户引导。以 OnboardingStep 定义步骤并计算完成进度。
用法:按示例在服务端集成上述中间件与 Stripe 调用,需自行配置环境变量如 STRIPE_SECRET_KEY、DATABASE_URL,并落实租户上下文获取逻辑(如 getCurrentTenantId)。
适用场景:需要多租户隔离、订阅与计量计费、套餐权限控制的 SaaS 后端。
限制:资料未提供具体安装命令、版本要求、部署运维及价格收费信息;代码示例需结合自身技术栈调整,安全与合规细节需另行评估。