核心能力

六个内核级答案,
回应六个行业积弊

不是功能清单的堆叠,而是对现有小程序 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 为保护路径,用户数据永不覆盖
upgrade — v1.4.0失败自动回滚
  • 签名校验

  • 升级预检(磁盘 / 版本链 / 扩展兼容)

  • 快照备份(文件 + 数据库)

  • 阶梯迁移 1.2.0 → 1.3.0 → 1.4.0

  • 5

    健康检查 · 探针全绿

runtime/backup/upgrade-20260708.tar快照已就绪

03授权与名额

授权名额:
生意规则,内核执行

框架不限站点,应用按站点数授权。部署池名额由平台按应用划拨给租户,站点绑定即占用、解绑经 30 天冷却后归还——划拨、回收、占用、释放全程流水可查。

  • 两级校验:租户可用名额 → 官方云部署池,云端不可达可暂占
  • 离线宽限 7 天,宽限期满仅禁新绑定,生产站点不受影响
  • 全部名额变动落 tenant_quota_log,四数可视化
平台后台 · 名额划拨部署池 → 租户
商城24/32 已占用 · 池 50
预约6/10 已占用 · 池 20
知识付费8/8 已占用 · 池 10
占用 冷却(30 天) 可用

04统一收银台

统一收银台:
四种支付,一套模型

余额、微信、支付宝、iOS 虚拟支付共用同一张 trade 表与同一个状态机。应用声明业务类型即可接入支付,禁止自建支付流程——资金安全在内核统一兜底。

  • 余额支付:事务 + 行锁 + 唯一流水,修复竞品并发缺陷
  • iOS 虚拟支付合规链路,Android 与开发工具自动切换微信支付
  • 掉单退避补偿 + 渠道对账,终态必达
core/pay · 统一收银台CAS 状态机

余额

行锁幂等

微信支付

v3

支付宝

小程序/H5

虚拟支付

iOS 合规

unpaidpayingpaidrefunded

`UPDATE trade SET status='paid' WHERE trade_no=? AND status='unpaid'` ——影响行数为 0 即幂等跳过,重复回调与并发回调天然安全。

05DIY 装修

DIY 装修:多应用,一张首页

每个应用注册自己的装修组件,站点侧在同一张首页自由混排;tabBar 项数与指向全部由装修数据驱动。主题 token 统一视觉——改一处主色,全端全应用生效。

  • 组件 props 以 JSON Schema 声明,保存时服务端校验
  • 绑定应用自动追加推荐区块,不装修也有完整首页
  • 草稿 / 发布双态,C 端只读已发布版本
站点后台 · DIY 装修器多应用同页混排

轮播图

内核

金刚区

内核

商品列表卡

商城

预约入口卡

预约

公告栏

内核

秒杀专区

插件

主题 token
改一处 · 全端生效

06多租户隔离

数据隔离:写进 ORM 的纪律

站点数据隔离不靠开发者自觉,靠框架强约束:声明 SiteScoped 的模型自动注入 site_id,查询、更新、删除、插入全覆盖;业务代码禁止手写隔离条件。

  • 跨站点操作显式 withoutSiteScope,仅限平台域调用链
  • 平台域 / 租户域双账号体系,token 完全隔离
  • 站点级 RBAC + 权限缓存,角色变更即刻生效
core/site/SiteScoped.phpCI 静态扫描
class Order extends Model{    use SiteScoped;   // 全局站点隔离} // 查询自动注入 where site_id = ?Order::where('status', 'paid')->paginate(); // 跨站点必须显式声明,仅限平台域,全量审计Order::withoutSiteScope()->count();

能力之上,还有生态

应用与插件如何协作、如何分发、如何计费——看看 Tenraft 的官方生态设计。