TinyShip 2.6.0 正式发布
本版本为 TinyShip 新增完整的 Dynamic Pricing System(动态定价系统)。管理员可通过后台 UI 实时创建、编辑、排序和停用定价方案,无需重新部署即可调整价格策略。
系统采用双模式架构:默认 static 模式沿用 config/payment.ts 中的配置(零改动兼容现有项目),切换为 dynamic 模式即可启用数据库驱动的定价管理。三个框架同步适配,兼容 PostgreSQL 和 SQLite/D1 双数据库。
核心新增
双模式切换:通过环境变量 PRICING_MODE 控制——static(默认)沿用现有配置文件方案,dynamic 从数据库读取方案,切换即时生效,无需修改代码
Admin 定价管理面板:全新管理后台页面 /admin/pricing,支持创建 / 编辑 / 删除定价方案(订阅、终身、积分包三种类型)、拖拽排序、一键启停,以及从静态配置一键导入现有方案
多语言方案内容:每个方案支持按语言设置独立的名称、描述和功能特性列表,语言标签可扩展,缺失语言自动 fallback 到默认语言
划线价格与 Markdown 特性:支持设置 originalPrice 展示原价划线效果;Features 字段支持 Markdown 格式,可编写富文本功能亮点
Locale 区域筛选:方案可指定适用语言区域,前端根据用户 locale 自动筛选展示;未设置 locale 的方案对所有用户可见
支付商绑定:每个方案独立绑定支付商(Stripe / PayPal / Creem / Dodo / WeChat Pay / Alipay)及对应的 Price ID / Product ID,前端自动匹配
数据库变更
新增 pricing_plan 表:包含价格、币种、类型、排序、启停状态、区域筛选、支付商 ID 和多语言内容等 19 个字段,PG 和 SQLite/D1 双方言 Drizzle 迁移同步到位
配置与环境变量
仅需一个新环境变量即可启用动态定价:
PRICING_MODE—"static"(默认)或"dynamic"
静态模式下无任何行为变更,所有现有部署零影响。
i18n 国际化
中英文完整覆盖:Admin 定价管理页面的所有标签、按钮、提示、描述均使用 i18n key,无硬编码文本,新增 admin.pricing.* 翻译命名空间
测试与稳定性
E2E 全生命周期覆盖:新增 14 个 E2E 测试用例,覆盖列表加载、创建与编辑方案(含多语言字段)、启停切换、软删除与硬删除、静态配置导入、支付商字段动态显示和非管理员权限拦截,三个框架全部通过
文档
用户指南:docs/user-guide/payment/dynamic-pricing.md 新增动态定价配置说明,覆盖开启方式、Admin 操作、区域筛选、多语言和从静态迁移到动态的完整流程
实现文档:docs/implementation/dynamic-pricing.md 补充架构设计、数据库 Schema、API 设计和支付集成细节