跳至正文
运行闭环

XEX 上的一个月:从改一个费率,到一笔结清的提取。

六个站点。其中两个不会为一个人打开。下面是每一个站点,以及它写下了什么。

运营闭环的六个节点配置、目录、购买、计算、运行与提取,串成一个闭环,并在下一期回到配置。配置与运行各自带有第二个同心方框:没有第二位操作员批准就无法推进。只有提取这一站会动用资金,而且是通过运营方自己的系统向外支付。一个月 · 六个节点配置进入 · 已结算的提取输出program_version配置package目录purchase购买ledger_entry计算run运行claim提取资金在此流出走你们的通道,绝不走我们的已结算 · 下一周期需要第二位审批人
配置与结算周期是两道闸门。提取站是钱唯一离开的地方,而且它是从您的系统离开的。
第一站 · 配置

您的薪酬计划是配置,不是代码。

费率、职级、阶梯、门槛、奖池和每个套餐的条款,都在结构化表单里编辑并保存为一个新版本。没有人写 JSON,也没有人为了改一个百分比而发布一次上线。

账本的纵深四个周期画成等轴测的平面堆叠,2026-01 在最下、2026-04 在最上,每一层划分为四条账目。2026-02 层上的一条账目 DIRECT-L1、金额 420.00,被上面几层遮去一半,但仍有标注。2026-04 层上的另一条账目 REFUND-REWIND、金额负 180.00,将其冲销。一条虚线沿堆叠的近角自上而下连接两者,用虚线是因为它要从两个周期的背后穿过。层与层之间没有任何东西移动。账本 · 每个周期一个平面仅可追加2026-012026-022026-032026-04REFUND-REWIND · −180.00写入于 2026-04 · 冲销下方的分录DIRECT-L1 · 420.00写入于 2026-02 · 依然存在,依然显示每一行只写入一次,写在它所属周期的平面上。更正是在后续平面上新增的一行 —— 绝不是对下方那一行的修改。
每个平面是一个会计期间。堆叠即账本;色带表示一次冲正。

保存并不会让费率生效。版本会被标记上将要执行它的引擎版本,并保持草稿状态,直到第二位操作员批准它。自我审批会被拒绝两次——一次在 Go 里,一次在数据库里——所以既不能通过直接调用 API 绕过,也不能由一个身兼所有角色的操作员绕过。

因为引擎版本记录在计划版本上,平台计算方式的改变就是一个新的引擎版本,而不是对您的计划上个月付了多少的一次无声更改。一个租户可以固定在某个引擎上,也可以被有意迁移。

internal/program · migrations · POST /v1/admin/programs/{version}/approve

您配置什么,以及您不配置什么
XEX 运行的是单层级(unilevel)家族的计划:直推层级、带压缩的职级差额、代际超越奖、奖池、荣誉等级和活跃门槛。费率、职级、阶梯、奖池分配、门槛和每个套餐的条款由您配置。您不改变计划的结构。双轨、矩阵和混合安置在路线图上,今天还不可配置。
第二、三站 · 目录与购买

会员付到您的账户,不是我们的。

套餐由您定价、由您销售。钱进的是您自己的账户,平台只是被告知钱到了。

交回自有收银台

会员在您现有的收银台完成支付,由它通过命令 API 把这笔购买报回来。您的转化流程什么都不用改。

rails.host_handoff

链上转账

您的收款地址连同准确金额和一个参考号一起展示。这里没有任何东西在盯链,所以由人来确认收款——会员读到的文案就是这么写的,而不是让他一直刷新。

rails.onchain_transfer

银行转账

您自己的银行信息,按国家配置字段模板,而不是每个国家一条独立通道。由人对着您的对账单确认。

rails.bank_transfer

支付宝

属于您自己的收款账户或固定收款二维码。

rails.alipay

微信支付

与支付宝相同的形态,也是相同的确认路径。

rails.wechat_pay

M-PESA

一个 Pay Bill 商户号,以及会员填写参考号的账户字段。

rails.mpesa

以上每一条都用您自己的凭据、配置在您自己的账户上。通道配置会拒绝保存与平台自有凭据相同的凭据——这道检查之所以存在,正是因为“先用我们的顶一下”就是一家软件供应商不小心变成支付机构的方式。

internal/rails

第四站 · 计算

六个引擎,一本总账。

每个引擎写自己的分录,每一行都带着产生它的规则标识,并且全部记入同一本仅可追加的总账。

直推奖

对上线前若干个符合条件的层级按配置的百分比计发,每一层都以获得者本人的职级为门槛。不活跃者的分录是被暂扣而不是被丢弃,可提取延迟一直延到退款窗口关闭——正是这一点让提取跑不到退款前面。

internal/direct

团队差额

带完全压缩的累进阶梯:沿一笔购买的上线向上走,每个合格的上级拿走自己那一档减去下方上级已经拿走的部分。已关闭和已封禁的位置是透明的,不占用档位。

internal/team

同级超越奖

基于影子业绩的代际超越奖:每个职级等于或高于发放对象的下级消耗一代,更低的职级是透明的;当下级职级高于发放对象时,影子业绩按发放对象本人的档位重算。

internal/samerank

职级

两套阶梯。成就职级以活跃直推人数和分支约束为门槛控制直推奖;业绩职级把小组累计业绩门槛与一个结构性要求结合起来,而一笔退款会把历史最高线回退。

internal/rank

全球奖池

按配置的百分比取自该周期扣除退款后的净销售额,在最高几个等级之间划分,并在同一等级内平均分配。某一等级若无人达标,会被记为未分配,而不是悄悄转给别人。

internal/pool

俱乐部与特别安排

以扣除退款后的累计购买额计算的荣誉等级,以及有时限、有理由、有审计并经双人复核的酌情授级、晋升和额外基点超越奖。

internal/club · internal/accommodations

级差阶梯的形状一条阶梯函数,横轴为团队累计业绩,纵轴为级差费率。七级台阶标注为 V1 至 V7。第二条虚线阶梯表示退款回撤历史峰值之后的同一梯级表:每一级台阶都右移。两条曲线之间的剖面线带就是二者不一致之处。两轴只有相对刻度、没有绝对数值,因为真实梯级表上的每一档费率都是运营方自己的配置。V1V2V3V4V5V6V7配置中的阶梯退款回退之后两者之间的差额团队累计业绩相对刻度 · 无绝对数值级差费率级差阶梯的形状。上面的每个费率都是运营方自己的配置。
一张结构示意图。两个轴都是相对的:真实阶梯上的每个费率都是操作方自己的配置。

引擎代码里没有硬编码的费率——配置是引擎唯一读取的来源。每个引擎都由黄金用例驱动,Go 测试套件在每次改动时都对它们跑一遍;一旦背后是真钱,这是薪酬引擎保持诚实的唯一办法。

第五站 · 结算周期

结算周期先是一次空跑。

一个周期先算成谁也不付款的草稿分录。您读它会做什么,然后由另一个人批准它。

控制台会把草稿的薪酬总额与该周期扣除退款后的现金净销售额并列显示。如果这个比率超过您配置的上限,这个周期根本无法被批准——这道检查是失败即拒的,而且就在审批路径里,不是在一份事后有人翻的报表里。

批准必须来自创建该周期之外的另一位操作员。入账是可续跑的:中途中断的周期靠再跑一次来完成,而不是靠某个人手工去对两个各入了一半的周期。您不想要的草稿可以丢弃,丢弃同样是幂等的。

internal/runs · /admin/runs

第六站 · 提取

会员发起提取。您来结算。

一次提取会锁定确切的总账分录并发出一条指令。平台从不持有它正指示您转出的那笔钱。

一次提取,以及结尾处的争用两条时间轴,一条属于会员,一条属于结算方。会员发起提取,相关分录被预留;一条指令发往结算方。随后取消请求与结算回调在一个标注为“冲突”的剖面线窗口内重叠。结算胜出,取消被拒绝。右侧,五条账目按最早优先消耗,负数先行冲抵:负 45.00,然后整条 410.00,再取 85.00 那条中的 35.00,共预留 400.00,剩余 50.00。争用窗口会员结算方提取已发起分录已锁定已请求取消提取已关闭指令已发出结算回调已结算 · 结算优先取消被拒绝RESERVING 400.00120.00直推 · 2026-06未动用260.00级差 · 2026-06未动用85.00同级 · 2026-0550.00 剩余410.00奖池 · 2026-05已用完−45.00冲销 · 2026-04先行轧差净锁定额400.00−45.00 + 410.00 + 35.00 = 400.00取消与结算可能落在同一个窗口。结算优先,账本记录哪些分录已支付。
两个阶段,一个争用窗口。结算赢下这场竞态,所以没有东西会被释放两次。

锁定确切的分录

分录按最早优先消耗,负数先行冲抵;边界上的那一行会被拆分,使确切金额可提取,同时总账仍然只增不改。

internal/claims

取消输给结算

取消和结算回调可能重叠。结算确定性地获胜——另一种结果是一笔既被取消又被支付的提取。

internal/claims

没有结算系统?那就用控制台。

没有可对接系统的租户从自己的钱包付款,并记录成交价格和自己的交易参考号。没有参考号的付款会被拒绝,因为它永远无法对账。

internal/httpapi/payouts.go

另一边

会员看到的是什么。

您的会员读门户的次数远多于您读控制台,而门户说的话,就是您的项目听起来的样子。

十种语言、十三个门户页面,包含从右到左的排版。余额、团队、按类型划分的收益、套餐、提取、争议以及计划本身,全部由引擎执行的同一份配置渲染——所以会员加入前和加入后读到的是同一套说法。

每一个非正常状态都带着原因和下一步。只写“地区受限”是死路;这里的提示会说明为什么以及该怎么办。对某个数字有异议的会员可以发起争议,它会从待处理走到调查中,再到已解决或已驳回,并附上审计轨迹——对您来说,这个结果远好过同一位会员在群里和他的推荐人吵架。

app/[locale]/portal · internal/disputes · i18n

您的项目,您的责任
XEX 只提供软件。您仍须自行对您的薪酬计划、对您在营销所及国家/地区所需的每一项牌照或登记、以及您或您的会员作出的每一项声明承担全部责任。主要为招募而非真实销售付酬的计划,在本平台被禁止,并在许多国家/地区属于违法。
下一步

看看它要多少钱,或者先拿一个沙箱。

沙箱在每个套餐上都免费,而且就是完整产品——不是一个删掉了有趣部分的演示。