核心能力
六个内核级答案,
回应六个行业积弊
不是功能清单的堆叠,而是对现有小程序 SaaS 框架共性硬伤的逐条回应。每一项能力都落在内核,而非外挂。
01免编译扩展
免编译扩展:装上,即生效
竞品装一个插件要改四个 package.json 再 npm install。Tenraft 的应用与插件包自带预编译 ESM 产物,后端热装、管理端运行时动态 import——像 WordPress 一样,点一下就能用。
- 官方 Ed25519 签名 + 逐文件 hash 清单,来源可信
- 路由、菜单、权限点、扩展点声明式注册,卸载自动回收
- 扩展崩溃由 ErrorBoundary 降级,不拖垮宿主与其他扩展
app-shop-1.2.0.tzapp
商城 · 官方商店 · 12.4 MB
- Ed25519 验签 · 逐文件 hash 校验
- 落盘 server / admin-dist / resource
- 执行 migrations(幂等 · {{prefix}} 占位)
- 注册路由 · 菜单 · 扩展点 → reload
管理端以运行时 ESM 动态加载扩展路由——刷新页面即可见, 全程无 npm、无构建。
02一键在线升级
在线升级:
像系统更新一样安心
对标 WordPress 的单点更新体验:商店推送、一键升级、增量迁移。升级前全量快照,升级后健康检查,任何一步失败自动回滚到升级前状态。
- 升级包签名校验 + 预检(磁盘空间、版本链、扩展兼容性)
- 阶梯式增量迁移,跨版本逐段执行
- uploads 与 runtime 为保护路径,用户数据永不覆盖
签名校验
升级预检(磁盘 / 版本链 / 扩展兼容)
快照备份(文件 + 数据库)
阶梯迁移 1.2.0 → 1.3.0 → 1.4.0
- 5
健康检查 · 探针全绿
03授权与名额
授权名额:
生意规则,内核执行
框架不限站点,应用按站点数授权。部署池名额由平台按应用划拨给租户,站点绑定即占用、解绑经 30 天冷却后归还——划拨、回收、占用、释放全程流水可查。
- 两级校验:租户可用名额 → 官方云部署池,云端不可达可暂占
- 离线宽限 7 天,宽限期满仅禁新绑定,生产站点不受影响
- 全部名额变动落 tenant_quota_log,四数可视化
04统一收银台
统一收银台:
四种支付,一套模型
余额、微信、支付宝、iOS 虚拟支付共用同一张 trade 表与同一个状态机。应用声明业务类型即可接入支付,禁止自建支付流程——资金安全在内核统一兜底。
- 余额支付:事务 + 行锁 + 唯一流水,修复竞品并发缺陷
- iOS 虚拟支付合规链路,Android 与开发工具自动切换微信支付
- 掉单退避补偿 + 渠道对账,终态必达
余额
行锁幂等
微信支付
v3
支付宝
小程序/H5
虚拟支付
iOS 合规
`UPDATE trade SET status='paid' WHERE trade_no=? AND status='unpaid'` ——影响行数为 0 即幂等跳过,重复回调与并发回调天然安全。
05DIY 装修
DIY 装修:多应用,一张首页
每个应用注册自己的装修组件,站点侧在同一张首页自由混排;tabBar 项数与指向全部由装修数据驱动。主题 token 统一视觉——改一处主色,全端全应用生效。
- 组件 props 以 JSON Schema 声明,保存时服务端校验
- 绑定应用自动追加推荐区块,不装修也有完整首页
- 草稿 / 发布双态,C 端只读已发布版本
轮播图
内核
金刚区
内核
商品列表卡
商城
预约入口卡
预约
公告栏
内核
秒杀专区
插件
06多租户隔离
数据隔离:写进 ORM 的纪律
站点数据隔离不靠开发者自觉,靠框架强约束:声明 SiteScoped 的模型自动注入 site_id,查询、更新、删除、插入全覆盖;业务代码禁止手写隔离条件。
- 跨站点操作显式 withoutSiteScope,仅限平台域调用链
- 平台域 / 租户域双账号体系,token 完全隔离
- 站点级 RBAC + 权限缓存,角色变更即刻生效
class Order extends Model{use SiteScoped; // 全局站点隔离}// 查询自动注入 where site_id = ?Order::where('status', 'paid')->paginate();// 跨站点必须显式声明,仅限平台域,全量审计Order::withoutSiteScope()->count();