-
Notifications
You must be signed in to change notification settings - Fork 0
13 cloud warehouse process and state machines
本文档把云仓秒杀从“页面玩法”细化为可以进行原型、数据、接口和测试设计的完整业务流程。所有状态均以订单明细和云仓批次为主,不以整张订单笼统判断。
云仓业务包含两次彼此独立但可追溯的交易:
- 首次购买:用户在集市云仓抢购并付款,取得对应商品数量的邮寄、自提或代销选择权。
- 二次零售:用户选择代销后,平台把该批次商品通过 CRMEB 商城真实销售给普通消费用户。
flowchart LR
A["商户供货或平台自营库存"] --> B["云仓活动商品及 SKU 批次"]
B --> C["用户首次抢购付款"]
C --> D["待选择去向"]
D --> E["邮寄到家"]
D --> F["线下自提"]
D --> G["平台代销持仓"]
G --> H["CRMEB 二次零售订单"]
H --> I["完成并超过售后观察期"]
I --> J["批次有效销售进度"]
J --> K["用户本金与收益结算"]
B --> L["首次有效购买数量"]
L --> M["商户供货货款结算"]
商户货款由首次购买和供货验收决定;用户本金与收益由二次零售进度、结算模式和到期回购决定。两条链路不能互相等待或混算。
| 配置 | 说明 |
|---|---|
| 活动名称 | 用户端场次名称 |
| 活动开始/结束时间 | 控制抢购时间 |
| 展示时间 | 可提前预热 |
| 支付超时时间 | 未付款订单释放活动锁定库存 |
| 状态 | 草稿、待发布、未开始、进行中、已结束、已关闭 |
| 配置 | 规则 |
|---|---|
| 商品来源 | 平台自营或审核通过的商户供货 |
| 商品/SKU | 每个参加活动的 SKU 独立形成批次 |
| 抢购价 | 用户首次购买单价 |
| 活动库存 | 从来源库存预占,不与普通可售库存重复销售 |
| 每人限购 | 按用户、活动商品和 SKU 校验 |
| 支持邮寄 | 可选 |
| 支持自提 | 可选 |
| 支持代销 | V1 必须开启 |
| 选择期限 | 活动结束后 1 至 7 天,默认 3 天 |
| 自提期限 | 开放自提时必填,最终确认后 1 至 30 个自然日,默认 7 天 |
| 预计销售周期 | 从代销批次正式开始时间起计算 |
| 到期在途处置宽限期 | 预计周期到期后 7 至 60 个自然日,默认 30 天 |
| 结算模式 | 三种模式中只能选择一种 |
| 用户收益分成率 | 作用于批次可分配销售利润 |
| 平台收益分成率 | 与用户分成率共同完成校验 |
| 到期回购比例 | 100%、90%、80% 或自定义,默认 100% |
| 售后观察期 | 首次交易和二次零售分别配置固定选项 |
| 商户结算方式 | V1 默认供货价结算 |
活动商品满足以下条件才允许发布:
- 活动时间、商品、SKU、活动库存、抢购价和限购完整。
- 活动库存不大于已预占且可供履约的来源库存。
- 商户供货 SKU 已完成平台仓入库或等价供货验收,活动数量不大于验收可用数量。
- 至少配置平台代销,邮寄和自提可按商品增加。
- 预计销售周期大于 0。
- 用户收益分成率与平台收益分成率之和等于 100%。
- 自定义回购比例必须大于 0 且不超过 100%。
- 结算模式、回购比例、选择期限、到期在途处置宽限期和售后观察期已确定。
- 开放自提时,自提期限和可用自提点均已确定。
- 商户供货商品已通过平台审核、完成供货规则确认和实际库存验收。
- 用户端需要展示的规则快照已经生成预览并经运营确认。
进入集市云仓
→ 选择活动商品和数量
→ 校验活动状态、限购和库存
→ 创建待付款订单并锁定活动库存
→ 用户支付商品价款
→ 支付成功,订单明细进入“已付款待选择”
→ 用户可继续抢购或离开页面
→ 立即选择,或在活动结束后到订单中心集中选择
首次付款只处理商品价款,不要求地址、配送方式和运费。选择邮寄后再复用 CRMEB 地址与运费模板生成履约信息;需要用户承担运费时创建补运费支付单。
- 每个订单明细的全部数量只能选择邮寄、自提或代销其中一种。
- 同一个商品既要邮寄又要代销时,用户必须分别下单。
- 包邮商品选择邮寄后立即确认;需要补运费时,邮寄去向在补运费成功后才最终确认。
- 运费单截止时间固定为
min(运费单创建时间 + 活动支付超时, 去向选择截止时间)。截止时仍未支付成功的运费单先取消;若选择期尚未结束则退回“已付款待选择”,否则同一临界区内自动转为平台代销。 - 补运费单使用独立订单号和固定支付回调类型,不修改首次商品订单金额。
- 超时、取消或自动代销后发生迟到支付时,不把去向改回邮寄,系统创建全额原路退款。
- 最终去向确认后不可由用户自行修改。
- 尚未进入发货、核销或代销批次前,客服可通过有审批记录的异常流程撤销原选择并重新选择。
- 不允许使用“一个明细内的提货数量、代销数量”作为正常业务模型。
- 用户仍处于“已付款待选择”时,可对整个订单明细申请首次退款。
- 用户已选代销但批次尚未冻结时,可对整个订单明细申请退款并撤销待入批次记录。
- 邮寄或自提最终确认后,按 CRMEB 实物订单售后处理,可根据实际履约支持部分数量售后。
- 代销批次已经开始后,不再把持仓撤回为普通首次退款;平台库存、质量或交易异常通过暂停批次、冻结账本、回购或补偿处理。
- 首次退款释放到活动库存还是来源库存,取决于活动是否仍在进行;所有变化必须生成库存流水。
| 时间点 | 系统动作 |
|---|---|
| 支付成功 | 展示“立即选择”和“稍后处理”,发送站内提醒 |
| 活动结束 | 订单中心生成待办聚合提醒 |
| 截止前 24 小时 | 再次提醒未选择用户 |
| 截止时间 | 未选择明细自动转为平台代销 |
| 自动代销后 | 记录系统操作、规则快照并通知用户 |
| 状态码建议 | 中文状态 | 进入条件 | 可执行动作 |
|---|---|---|---|
pending_payment |
待付款 | 抢购下单并锁库存 | 支付、取消、超时关闭 |
paid_pending_choice |
已付款待选择 | 支付成功 | 选择邮寄、自提、代销;申请首次退款 |
delivery_pending_freight |
邮寄待补运费 | 选择邮寄且需补运费 | 支付运费、取消临时选择、等待超时处理 |
delivery_pending_fulfillment |
邮寄待履约 | 地址和运费已确认 | 等待出库发货 |
delivery_in_transit |
邮寄中 | 已发货 | 确认收货、申请售后 |
pickup_pending |
自提待核销 | 已选择自提 | 展示核销码、申请售后 |
pickup_partially_verified |
自提部分已核销 | 核销量大于 0 且小于应提量 | 继续核销剩余量、对剩余量发起异常处理 |
pickup_overdue |
自提逾期待处理 | 超过活动配置的自提期限 | 客服协商继续自提、补邮费改寄或平台回购 |
consign_pending_batch |
代销待入批次 | 已选择或超时自动代销 | 等待选择窗口关闭 |
consigning |
代销中 | 批次冻结并开始代销 | 查看进度和账本 |
settling |
结算中 | 达到节点或批次结束 | 查看结算明细 |
completed |
已完成 | 邮寄/自提完成,或代销全部结清 | 查看历史 |
after_sale |
售后中 | 存在退款或争议 | 等待处理 |
closed |
已关闭 | 未支付超时、全额退款或作废 | 无 |
状态迁移要求:
- 支付回调、超时关闭、自动代销、批次入仓和结算都必须幂等。
- 每次状态变化记录原状态、新状态、业务事件、操作者、时间和备注。
- 整单状态只做汇总展示,最终判断以订单明细状态为准。
- 自提逾期不会由系统无条件改变商品去向;已经核销的数量不可回退成代销或未提数量。
- 自提按每次核销数量生成不可变核销事实。已核销数量分别形成首次购买完成事实;明细只有在全部数量完成核销、退款、改寄或异常回购后才进入整体
completed。
| 当前支付事实 | 订单明细状态 | 处理结果 |
|---|---|---|
未支付且未到 freight_expire_at
|
delivery_pending_freight |
允许支付、取消或切换渠道 |
| 成功回调先取得行锁 | delivery_pending_freight |
校验金额/交易号/版本后确认邮寄并创建履约 |
| 截止任务先取得行锁且选择期尚未结束 | paid_pending_choice |
运费单取消/超时,临时邮寄失效 |
| 截止任务先取得行锁且选择期已结束 | consign_pending_batch |
先关闭运费单,再幂等自动代销 |
| 超时/取消后收到成功回调 | 保持当前去向 | 运费单记迟到支付并创建全额退款 |
| 退款成功 | 保持当前去向 | 只更新运费退款结果和通知 |
支付成功回调、运费超时和选择截止任务统一按“订单明细 → 当前运费单”顺序加行锁。任何流程都不能同时生成邮寄履约和代销持仓;已经超过选择截止点才到达的成功回调一律视为迟到支付。
-
remaining_qty = pickup_qty - verified_qty - refunded_qty - converted_shipping_qty - exception_buyback_qty,所有项均不得为负。 - 每次核销只能增加
verified_qty,并生成核销流水、操作人、凭证版本和时间;重复扫码按原结果幂等返回。 - 自提期限从去向最终确认时间起按自然日计算。到期时剩余量大于 0,明细进入
pickup_overdue并建立异常事件,不影响已经核销数量。 - 逾期剩余量可选择:延长一次自提期限、补付运费改寄、按首次售后规则退款,或由平台按活动回购比例回购。改寄和回购均需用户确认或客服有审计的异常方案。
- 自提逾期回购只计算对应本金,不计算代销收益;商品转为平台库存,不并入已经运行的用户代销批次。
- 商户货款按数量资格分段确认:已核销、改寄收货或异常回购的数量分别从其完成事实起计算首次售后观察期;退款数量不进入应结算量。整个明细是否完成不阻塞已合格数量进入结单。
一张供货申请只关联一个来源 SKU。商户批量勾选多个 SKU 时,系统生成多张可独立审核、交付、验收和关闭的草稿。
草稿/待审核
└─ 不改变来源库存
审核通过
└─ 按 approved_qty 原子预占来源 SKU 可售库存
商户交付
└─ 记录送达、短少、待检和凭证
平台验收
├─ 合格量转入云仓供货库存
└─ 拒收/短少量进入释放或实物退回
活动发布
└─ 只从已验收云仓供货库存分配活动占用
活动未抢完
└─ 先释放活动占用,再按供货归属进入来源库存退回
商户实物已经进入平台仓时,系统不得在活动结束瞬间直接增加商户普通可售库存。必须先形成 return_pending,完成实物退回或经双方确认的等价库存移交后再恢复来源 SKU;平台自营库存可在同仓且验收一致时直接完成内部转回。
审核后的邮寄、质量和首次售后责任方保存为结构化责任快照。后续活动、履约、异常和商户货款扣减只读取快照,不使用商户当前商品设置或自由文本覆盖历史责任。
| 库存池 | 用途 |
|---|---|
| 来源库存 | 平台自营或商户原商品库存 |
| 来源预占库存 | 供货审核通过、尚未验收转入云仓的数量 |
| 云仓已验收供货库存 | 已完成入库/等价验收、可分配给活动的真实库存 |
| 活动预占库存 | 已划入某云仓活动、暂不可被普通商城重复销售 |
| 付款锁定库存 | 用户已下单未付款,超时后释放 |
| 已付款待选择库存 | 用户已付款但尚未确定去向,已经属于有效购买候选量 |
| 邮寄/自提履约库存 | 已确定由用户直接取得的数量 |
| 云仓代销库存 | 已冻结为用户持仓、等待二次零售的数量 |
| 二次零售锁定库存 | 普通消费订单已下单、尚未成为有效售出的数量 |
| 平台回购库存 | 到期回购后转为平台所有的剩余数量 |
供货申请在任一稳定状态满足:
批准数量
= 来源预占剩余
+ 已送达数量
+ 交付短少数量
+ 审核后取消数量
已送达数量
= 验收合格数量
+ 验收拒收数量
+ 待检数量
验收合格数量
= 活动占用数量
+ 云仓未分配数量
+ 待退回数量
+ 已退回数量
+ 已转平台库存数量
活动结束并处理完未支付订单后:
活动预占库存
= 有效付款数量
+ 未抢购退回数量
+ 支付超时释放数量
+ 首次退款退回数量
去向选择冻结后:
有效付款数量
= 邮寄数量
+ 自提数量
+ 代销冻结数量
+ 尚在首次售后处理数量
代销批次经营中:
代销冻结数量
= 有效代销售出数量
+ 二次零售锁定数量
+ 可售剩余数量
+ 售后冻结数量
+ 已回购数量
所有数量变化必须产生库存流水,不能只覆盖汇总字段。活动、供货、订单、二次销售和平台回购的实体库存数量均为整数;用户持仓的累计销售和未售分摊可以产生小数,只作为经济等价数量,不代表某件实物被拆分。
每场活动中的每个商品 SKU 形成一个批次。
| 状态码建议 | 中文状态 | 说明 |
|---|---|---|
draft |
草稿 | 活动商品尚未发布 |
reserved |
已预占 | 已从来源库存预占 |
selling |
抢购中 | 活动进行中 |
choice_window |
去向选择期 | 活动结束,等待已付款用户选择 |
consign_ready |
待启动代销 | 选择截止,代销数量已冻结 |
consigning |
代销中 | 已进入二次零售 |
matured |
已到期 | 到达预计周期,等待剩余回购和最终核算 |
buying_back |
回购中 | 正在处理未售商品回购 |
final_settlement |
最终结算中 | 计算剩余本金、收益和回购款 |
closed |
已关闭 | 数量、账本和结算全部闭合 |
suspended |
已暂停 | 库存、质量或运营异常,暂停二次销售 |
cancelled |
已取消 | 活动发布前或无有效付款时取消 |
批次可在全部商品提前有效售完并超过二次售后观察期后提前结束;否则在预计到期日进入回购和最终结算。
“平台实际代销售出”不是运营手工填写一个数量,而是由真实二次零售订单产生:
平台把云仓批次库存关联到普通商城 SKU
→ 普通消费用户下单
→ 系统按最早到期批次优先锁定库存
→ 订单支付、发货/自提、完成
→ 超过二次零售售后观察期
→ 对应订单明细转为有效代销售出
→ 更新批次累计有效销售数量和金额
V1 认定规则:
- 只自动认定 CRMEB 内真实零售订单,不允许运营直接修改“已售数量”。
- 线下或外部渠道销售暂不自动计入;后续如需支持,必须采用带凭证、审核和不可篡改流水的导入流程。
- 二次零售订单明细必须关联云仓批次、分配数量和分配金额。
- 跨批次销售按预计到期时间最早优先,同到期时间按入库时间最早优先。
- 同一批次不按某个用户先买先卖,而是按用户有效代销数量占比共同分摊累计进度。批次实际售出和实际未售数量始终为整数;用户的
sold_equivalent_qty、unsold_equivalent_qty使用 6 位小数表达经济分摊。 - 订单退款、退货或部分退款必须冲减尚未确认的有效销售;已形成结算时生成冲正记录。
批次销售进度
= 批次累计有效代销售出数量 ÷ 批次代销冻结数量
计入进度的数量必须已完成二次零售售后观察期。只付款未发货、运输中、售后中和已退款数量均不计入。
批次累计确认销售收入
= 二次零售有效商品实付金额
+ 平台承担的优惠补贴
- 有效退款商品金额
不计入销售收入:
- 用户支付的二次零售运费。
- 平台另外收取的服务费。
- 未完成订单金额。
- 尚在售后观察期内的金额。
批次累计已售本金
= 云仓抢购单价 × 批次累计有效代销售出数量
批次累计可分配销售利润
= max(0, 批次累计确认销售收入 - 批次累计已售本金)
V1 中,平台日常仓储、推广、常规包装、平台券和支付手续费从平台分成中承担,不从上述用户利润基数临时扣除。
用户批次占比
= 用户有效代销数量 ÷ 批次代销冻结数量
用户累计应得销售利润
= 批次累计可分配销售利润
× 用户批次占比
× 用户收益分成率快照
为避免重复支付,每次实际入账都使用累计差额:
本次应结算金额
= 当前累计应结算金额
- 历史已结算金额
- 已生成但尚未正式入账的业务账本金额
金额计算使用至少 8 位小数的中间精度,最终以分入账。每次结算先计算批次级本金池、利润池或回购池,再按持仓占比分配;不得先把每个用户经济等价数量四舍五入后乘单价。分钱尾差使用最大余数法:余数从大到小分配,余数相同按 holding_id 升序,确保用户明细合计严格等于批次金额。
用户累计已售经济等价数量
= 批次累计有效代销售出整数数量 × 用户批次占比
用户最终未售经济等价数量
= 批次最终未售整数数量 × 用户批次占比
可入账业务账本通过唯一 financial_posting 映射 CRMEB 用户可用余额和 UserBill。业务账本负责公式与资格,余额流水只展示本次入账合计;任务重跑不得重复增加余额。
代销期间只展示进度和预计金额,不实际返还本金或收益。
批次全部售完,或到期完成剩余回购后:
最终应付
= 已售商品对应本金
+ 用户累计应得销售利润
+ 未售商品回购款
- 已冲正/冻结金额
适合预计周期短、运营希望一次对账的商品。
销售进度首次达到 25%、50%、75%、100% 时,只结算截至该节点新增的用户收益,本金不提前返还。
批次结束时:
最终应付
= 用户全部已售本金
+ 未结算收益尾差
+ 未售商品回购款
- 已冲正/冻结金额
适合希望用户持续看到收益,但平台需要在周期内保留本金周转的商品。
销售进度首次达到 25%、50%、75%、100% 时,按累计有效销售结果同步释放本金和收益。
用户累计可返本金
= 用户首次购买代销本金 × 批次销售进度
节点本次返还本金
= 用户累计可返本金 - 历史已返本金 - 已生成未完成返本金
批次到期未售完时,剩余未返本金按回购比例计算回购款。该模式是 V1 默认模式。
- 进度一次跨越多个节点时,只生成一份以“当前最高已跨节点”为触发节点的账本,金额按该次真实累计销售结果计算,并把所有较低跨越节点标记为已处理。例如
20% → 80%只生成一份milestone=75、calculation_progress=80%的累计差额账本。 - 已跨节点之后、下一个节点之前的进度变化只更新真实进度和预计金额,不产生新账本;例如
80% → 99%不再次结算。 - 100% 节点只有在全部数量成为有效代销售出后触发。
- 到期不足 100% 时不伪造 100% 销售节点,直接进入回购和最终结算。
- 所有节点任务必须使用批次、最高触发节点、计算版本和结算类型组成唯一幂等键;用户账本再加入持仓 ID。
二次零售退款可能使真实进度从已结算节点向下回退,但不会重新开放已经处理过的节点:
- 重新计算当前累计应得本金和收益,形成负差额事实。
- 模式 A 在最终结算前没有正式入账,只降低预计金额,不生成用户负账。
- 模式 B 只冲减收益;模式 C 同时冲减本金和收益。
- 负差额先取消或冻结尚未正式入账的正向账本,再抵扣同一持仓后续新增应付款。
- 不足部分记入平台风险承担金额;不得直接扣减用户 CRMEB 可用余额,也不得让用户云仓账本变成负数。
- 只有能够证明是重复入账、篡改或计算错误的金额,才通过独立审核的错误入账冲正处理。
活动结束后:
- 关闭新抢购。
- 等待未支付订单超时并释放锁定量。
- 扣除已经付款的数量。
- 剩余数量退回平台自营或商户来源库存。
- 生成活动库存退回流水。
已付款待选择数量属于用户首次购买,不属于“未抢完库存”。
到期后:
- 停止批次继续参与新二次零售分配。
- 在活动 SKU 快照的在途处置宽限期内,等待已锁定、已付款、履约中和观察期内的二次订单完成或释放;V1 默认 30 个自然日,可选 7 至 60 天。
- 宽限期截止后建立所有权切换点:尚未成为有效售出的数量统一按未售处理,之后这些二次订单的收入、退款和履约风险归平台,不再反向追扣用户。
- 统计有效已售、最终未售和平台承接的在途数量;实体总量保持整数。
- 按用户持仓占比分配未售经济等价数量,并把对应整数实物转入不可售
buyback_pending池。 - 自动计算每个用户的回购预案、分钱尾差和平台目标库存,进入待审核。
- 平台有权人员审核。驳回时只能修正来源数量、订单关联或计算错误并生成新计算版本,禁止修改已发布的回购比例、单价或其他历史规则快照;额外商业补偿使用独立补偿账本。
- 审核通过后,在同一数据库事务内完成回购业务账本、平台库存转入、所有权切换、回购状态和 Outbox;任何数据库步骤失败均整笔回滚,状态保持“审核通过待重试”。
- 正式余额入账可由 Outbox 异步重试,批次在 posting、尾差和最终结算全部闭合后关闭;通知失败不回滚已提交资金和库存事实。
批次回购金额池
= 批次最终未售整数数量
× 用户云仓抢购单价
× 回购比例快照
用户未售回购款
= 批次回购金额池按用户持仓占比和最大余数法分配
商户云仓供货与用户二次代销收益分开核算。
V1 默认供货价模式:
商户有效首次购买数量
= 用户已付款数量
- 首次交易已退款数量
- 供货验收不合格数量
商户应结算货款
= 商户供货价 × 商户有效首次购买数量
- 商户承担的首次交易退款
- 已确认由商户承担的履约扣减
进入待结算需同时满足:
- 用户首次购买已经完成:邮寄为确认/自动收货,自提为核销,代销为持仓进入正式批次。
- 商品已完成云仓入库或约定供货验收。
- 首次交易售后观察期已结束。
- 不存在退款、质量争议或财务冻结。
用户选择邮寄、自提或代销,不改变商户首次供货货款的基础。后续二次零售是否售完,也不作为拖延商户货款的条件。
满足条件的供货账本默认在次日 02:00 按商户生成自然日日结单。结单通过统一入账记录直接增加商户可用余额并写 farm_supply_settlement 财务流水,不再套用普通订单的全局冻结天数。结单生成后明细不可替换,差异使用后续调整单。
可能造成经营亏损的场景包括二次售价过低、平台优惠、仓储推广成本、退货赔付、损耗和折扣回购。
V1 处理原则:
- 二次售价低于用户抢购成本时,差额由平台补足后再计入批次收入。
- 平台券、平台补贴不降低批次确认销售收入。
- 常规仓储、包装、推广和支付成本从平台分成承担。
- 仓储损坏、盘亏和非用户原因质量问题不向用户账本追加负数。
- 用户可能承担的本金差额仅来自活动下单前明确展示并快照的折扣回购比例。
- 售后冲正优先冲减未结算金额;不足部分进入冻结和人工审核,不直接形成用户欠款。
- 已入账后的借方冲正只用于审核确认的重复/错误入账或外部支付最终撤销;正常经营亏损不得向用户或商户账户追扣。
- 目标余额不足时不部分扣款、不形成负余额,转待追偿并冻结后续同主体农业入账。
- 批次存在质量或库存争议时先暂停销售和结算,保留完整事件与审批记录。
| 编号 | 场景 | 预期结果 |
|---|---|---|
CW-AT-001 |
用户付款后不选择并继续抢购 | 首笔订单保持待选择,不影响后续抢购 |
CW-AT-002 |
活动结束后用户集中选择 | 订单中心可逐笔选择,每个明细只能选一种方式 |
CW-AT-003 |
用户超期未选择 | 系统幂等转为代销并记录通知和操作日志 |
CW-AT-004 |
邮寄需用户承担运费 | 选择邮寄后计算并补付运费,首次商品订单金额不被改写 |
CW-AT-004A |
补运费订单超时且仍在选择期 | 邮寄未最终生效,订单明细回到待选择 |
CW-AT-004B |
补运费订单超时且已过选择期 | 订单明细自动转为代销且只执行一次 |
CW-AT-004C |
自动代销后收到补运费成功回调 | 不改变代销去向,按原支付方式全额退款 |
CW-AT-004D |
同一补运费成功回调重复到达 | 只生成一个支付事实、一个履约或一个退款单 |
CW-AT-005 |
未支付订单超时 | 活动锁定库存释放,订单关闭 |
CW-AT-006 |
活动未抢完 | 未付款处理完后剩余库存退回来源库存 |
CW-AT-007 |
多批次同时可售 | 二次零售按最早到期批次分配 |
CW-AT-008 |
二次订单刚付款 | 不计入有效销售进度和用户结算 |
CW-AT-009 |
二次订单完成并过售后期 | 更新批次进度并检查结算节点 |
CW-AT-010 |
进度从 20% 跳到 55% | 结算至 50% 累计目标,25% 不重复结算 |
CW-AT-011 |
到期只售出 70% | 不生成 100% 销售节点,剩余 30% 进入回购 |
CW-AT-012 |
二次零售使用平台券 | 平台承担优惠,用户利润基数不被券额冲减 |
CW-AT-013 |
商户商品后续滞销 | 商户已按有效首次购买结算,不等待二次售完 |
CW-AT-014 |
已结算销售后来发生异常退款 | 生成冲正或冻结记录,不删除原账本 |
CW-AT-015 |
重复收到支付/定时任务事件 | 不重复扣库存、入批次或生成账本 |
CW-AT-016 |
待选择时申请退款 | 整个订单明细退款,库存按活动状态正确退回 |
CW-AT-017 |
代销批次开始后申请普通首次退款 | 拒绝非法状态迁移,并引导进入对应异常处理 |
CW-AT-018 |
自提逾期 | 进入异常待处理,不静默改为邮寄或代销 |
- 首页
- 项目总览
- 项目立项
- 端与角色
- 供应链经营闭环
- 模块地图
- V1 范围 PRD
- 任务拆解
- 结算与账本
- V1 结算口径
- 云仓秒杀
- CRMEB 底座能力映射
- 当前菜单页面审计
- V1 决策与术语
- 云仓流程与状态机
- 租地认养与溯源 PRD
- V1 数据模型草案
- 开发前设计计划
- V1 信息架构
- 页面与原型规格
- V1 API 契约草案
- 事件任务权限通知
- 五项目代码改造蓝图
- 测试验收发布与手册计划
- CRMEB 视觉基线审计
- G3/G4 决策登记表
- 用户端 uni-app 复用审计
- 开发前主清单
- 自主设计工作指引
- V1 需求追踪矩阵
- G3 技术专项验证报告
- V1 P0 页面矩阵
- 写操作契约注册表
- 事件任务操作注册表
- 状态异常事务矩阵
- 数据库字段字典
- 页面 API 文件追踪
- V1 ER 图
- API 字段契约注册表
- 平台管理员手册
- 商户手册
- 用户帮助
- 服务与现场手册
- 开发任务包
- 测试目录与 Fixtures
- 发布与运维手册
- 设计交付与研发交接