-
Notifications
You must be signed in to change notification settings - Fork 0
15 v1 data model draft
本文档把已确认的业务规则转换为数据库实体、关键字段和约束,供后续技术评审使用。它不是建表 SQL,不会直接修改数据库;最终表名、字段类型和索引需结合 CRMEB 现有模型、命名规范和数据量再次确认。
- 复用 CRMEB 的用户、商户、商品、SKU、订单、支付、退款、物流、余额和基础财务能力。
- 农业资产、生产批次、云仓批次和用户持仓使用独立业务表,不硬塞进普通商品表。
- 云仓扩展优先通过独立表关联
eb_store_order和eb_store_order_product,避免直接扩大现有product_type、activity_type对全系统的影响。 - 配置与历史快照分开保存。配置修改不影响已付款订单。
- 汇总字段用于查询,流水表用于证明事实;汇总可重算,流水不可物理删除。
- 金额、数量、比例、时间和状态均使用明确字段,不把核心结算事实只存在 JSON 中。
- JSON 只用于低频扩展快照、展示材料或第三方原始回执。
- 所有支付回调、库存变化、节点结算、回购和冲正都有业务唯一键,支持幂等。
- 法律、税务和会计科目不在本轮建模范围;支付、退款、结算和账本技术事实仍需完整记录。
| CRMEB 对象 | 复用目的 | 智慧农业关联方式 |
|---|---|---|
| 用户 | 购买人、租地/认养参与者、云仓持仓人 | 保存 user_id
|
| 商户 | 普通商品与云仓商品供货方 | 保存 merchant_id
|
| 商品/SPU | 普通销售和活动商品来源 | 保存 product_id
|
| SKU/规格 | 库存和活动批次最小商品粒度 | 保存来源 SKU 当前主键和 unique 快照;业务使用独立 activity_sku_id
|
eb_store_order |
支付、订单汇总、退款、物流入口 | 通过业务扩展表一对一/一对多关联 |
eb_store_order_product |
订单明细和商品金额 | 通过订单明细扩展表一对一关联 |
| 退款/售后单 | 首次交易、二次零售、农业履约售后 | 保存退款单 ID 和影响金额 |
| 地址/物流 | 邮寄到家与普通商品履约 | 复用地址快照、发货和物流轨迹 |
| 用户余额/账单 | 用户本金、收益和回购款入账 | 账本审核后调用,不替代业务账本 |
| 商户财务 | 商户供货货款结算和提现 | 关联独立供货账本 |
除纯关联流水外,新增主表建议统一包含:
| 字段 | 建议 | 说明 |
|---|---|---|
<entity>_id |
bigint unsigned |
领域主键,沿用 CRMEB 显式主键命名 |
status |
小整数或稳定字符串码 | 业务状态 |
is_del / delete_time
|
布尔/时间 | 仅业务主数据软删除;流水表不设删除入口 |
create_time |
datetime |
创建时间,沿用现有 CRMEB 字段名 |
update_time |
datetime |
更新时间;现有 BaseModel 默认关闭自动更新时间,写服务需显式维护 |
create_admin_id |
bigint 可空 |
后台创建人;用户/商户对象使用对应操作者字段 |
update_admin_id |
bigint 可空 |
最后后台修改人 |
version |
整数 | 乐观锁或规则版本 |
金额建议数据库使用 decimal(14,2) 或统一按分存储;收益计算中间值至少保留 6 位小数。数量根据商品单位使用 decimal(14,3),不可一律假定整数。
业务发生时间继续使用语义明确的 *_at,如 paid_at、maturity_at。正式字段字典需为每个时间字段统一确认 datetime、时区和空值规则,不能在同一业务域混用 Unix 秒和日期字符串。
一条记录表示一场云仓秒杀活动。
| 关键字段 | 说明 |
|---|---|
activity_no |
业务唯一编号 |
name |
活动名称 |
preview_at |
预热时间 |
start_at / end_at
|
抢购开始与结束时间 |
payment_timeout_minutes |
支付超时 |
choice_days_default |
默认去向选择天数 |
status |
草稿、待发布、未开始、进行中、已结束、已关闭 |
publish_at |
发布时间 |
closed_at |
关闭时间 |
索引建议:activity_no 唯一索引,status + start_at + end_at 组合索引。
商户或平台提交的云仓供货关系。
| 关键字段 | 说明 |
|---|---|
supply_no |
供货申请编号 |
source_type |
平台自营、商户供货 |
merchant_id |
商户供货时必填 |
product_id / source_sku_value_id
|
来源商品与 CRMEB 当前规格值主键 |
source_sku_unique_snapshot |
申请时的规格唯一值快照 |
source_sku_snapshot |
规格名称、图片、编码和单位快照 |
supply_price |
商户供货价 |
available_qty |
可供货数量 |
accepted_qty |
已验收数量 |
allocated_activity_qty |
已分配给未结束云仓活动的验收数量 |
fulfillment_type |
预入云仓、平台仓、其他已确认方式 |
after_sale_days |
首次交易售后观察期 |
audit_status |
待审、通过、驳回 |
audit_by / audit_at / audit_remark
|
审核信息 |
accepted_at |
入库/供货验收完成时间 |
一条记录表示某来源商品参加某场活动的 SPU 级展示和公共去向配置,不直接承担 SKU 价格、库存和结算事实。
| 关键字段 | 说明 |
|---|---|
activity_id |
云仓活动 |
supply_id |
供货关系 |
product_id |
CRMEB 商品 |
source_type / merchant_id
|
来源快照 |
display_title / cover_image
|
活动展示快照 |
supports_shipping |
是否支持邮寄 |
supports_pickup |
是否支持自提 |
supports_consign |
V1 必须为是 |
choice_days |
选择期限 |
pickup_days |
开放自提时的核销期限 |
rule_version |
规则版本 |
status |
草稿、已发布、已下架 |
唯一约束建议:同一 activity_id + product_id + supply_id 不重复。
一条记录是用户可抢购的最小活动商品,也是规则冻结和生成批次的稳定来源。CRMEB 商品编辑可能重建规格值,因此历史订单、批次和账本统一关联本表主键,不把来源 value_id 当永久业务主键。
| 关键字段 | 说明 |
|---|---|
activity_product_id / supply_id
|
活动商品与供货来源 |
product_id / source_sku_value_id
|
来源商品和当时 CRMEB 规格值主键 |
source_sku_unique_snapshot |
来源规格唯一值快照 |
sku_snapshot |
规格、编码、图片、单位和来源价格快照 |
activity_unit_price |
用户首次抢购单价 |
supply_unit_price |
商户供货价快照 |
activity_qty |
本活动 SKU 可抢购数量 |
per_user_limit |
每人限购数量 |
expected_sale_days |
预计代销周期 |
settlement_mode |
final_all、profit_periodic_principal_final、principal_profit_periodic
|
user_profit_rate / platform_profit_rate
|
利润分成基点,合计 10000
|
buyback_rate |
到期回购基点 |
primary_after_sale_days |
首次交易观察期 |
secondary_after_sale_days |
二次零售观察期 |
resale_product_id / resale_sku_value_id
|
二次普通商城销售映射,发布前可为空 |
rule_version |
规则版本 |
status |
草稿、可发布、已发布、已关闭 |
唯一约束建议:activity_product_id + source_sku_unique_snapshot。发布后影响订单金额、周期、分成和回购的字段不得原地修改。
每场活动的每个 SKU 一条记录,是云仓经营核心表。
| 关键字段 | 说明 |
|---|---|
batch_no |
批次唯一编号 |
activity_id / activity_product_id / activity_sku_id
|
来源活动与稳定活动 SKU |
product_id / source_sku_value_id
|
CRMEB 来源商品和当时规格值 |
source_sku_unique_snapshot / sku_snapshot
|
来源规格与展示快照 |
supply_id / merchant_id
|
供货来源 |
resale_stock_id |
批次开始后关联的二次销售库存桥接 |
purchase_unit_price |
用户云仓抢购单价快照 |
supply_unit_price |
商户供货价快照 |
activity_qty |
活动预占数量 |
locked_unpaid_qty |
未付款锁定数量汇总 |
paid_qty |
已付款数量汇总 |
refunded_primary_qty |
首次退款数量 |
shipping_qty |
邮寄去向数量 |
pickup_qty |
自提去向数量 |
consign_qty |
冻结代销数量 |
secondary_locked_qty |
二次零售锁定数量 |
effective_sold_qty |
有效代销售出数量 |
secondary_refund_qty |
二次退款数量 |
buyback_qty |
到期回购数量 |
remaining_qty |
可售剩余数量 |
confirmed_sales_amount |
累计确认销售收入 |
distributable_profit |
累计可分配销售利润 |
choice_deadline_at |
去向选择截止 |
consign_start_at |
代销开始 |
maturity_at |
到期时间 |
closed_at |
批次关闭时间 |
current_milestone |
0、25、50、75、100 |
settlement_mode / user_profit_rate / buyback_rate
|
批次快照 |
status |
批次状态 |
索引建议:
-
batch_no唯一索引。 -
resale_stock_id + status + maturity_at用于最早到期分配。 -
activity_id + activity_product_id用于活动汇总。 - 汇总数量更新使用版本号或数据库原子条件,防止超卖。
记录每次库存事实变化。
| 关键字段 | 说明 |
|---|---|
flow_no |
流水唯一编号 |
batch_id |
云仓批次 |
pool_from / pool_to
|
来源库存池和目标库存池 |
change_qty |
变化数量,正数 |
business_type |
活动预占、下单锁定、支付确认、超时释放、去向冻结、二次锁定、有效售出、退款、回购等 |
business_id |
对应订单、明细、退款或回购 ID |
idempotency_key |
幂等唯一键 |
occurred_at |
业务发生时间 |
idempotency_key 必须唯一。
与 eb_store_order_product 一对一,保存云仓首次购买快照和去向状态。
| 关键字段 | 说明 |
|---|---|
order_id / order_product_id
|
CRMEB 订单和明细 |
user_id |
首次购买用户 |
activity_id / activity_product_id / activity_sku_id / batch_id
|
云仓来源 |
product_id / source_sku_value_id
|
来源商品与规格值关联 |
sku_snapshot |
下单时规格、编码、图片和单位快照 |
purchase_unit_price |
抢购单价 |
purchase_qty |
本明细购买数量 |
goods_paid_amount |
用户商品实付,不含后补运费 |
disposition |
未选择、邮寄、自提、代销 |
choice_status |
待选择、用户已选、系统自动选择 |
choice_deadline_at |
选择截止 |
choice_at / choice_operator_type
|
选择时间和操作者 |
freight_status / freight_amount
|
补运费状态和金额 |
pickup_deadline_at |
自提截止时间 |
primary_completed_at |
按邮寄收货、自提核销或代销入批次认定 |
primary_settlement_eligible_at |
首次售后观察期到期时间 |
primary_refund_status / primary_refund_qty
|
首次退款状态与数量 |
fulfillment_order_id |
邮寄/自提履约关联 |
holding_id |
代销时关联用户持仓 |
rule_snapshot |
页面展示所需完整规则 JSON 快照 |
status |
首次明细状态 |
唯一约束:order_product_id 唯一。数据库约束或服务校验确保 disposition 只能有一个值。
邮寄到家时的补运费支付单。
| 关键字段 | 说明 |
|---|---|
freight_order_no |
唯一编号 |
cloud_order_item_id |
云仓首次明细 |
user_id |
付款用户 |
address_snapshot |
地址快照 |
freight_template_id |
CRMEB 运费模板 |
freight_amount |
应付运费 |
paid_amount |
实付运费 |
pay_status / pay_time
|
支付状态 |
expired_at |
补运费支付超时时间 |
refund_status / refund_amount
|
运费退款 |
用户在一个云仓批次中的代销持仓。一个订单明细对应一条持仓;不建议把同批次多订单强行合并,以保留各自规则快照和退款来源。
| 关键字段 | 说明 |
|---|---|
holding_no |
持仓编号 |
user_id |
持仓用户 |
batch_id |
云仓批次 |
cloud_order_item_id |
来源首次订单明细 |
initial_qty |
初始代销数量 |
active_qty |
当前有效参与分摊数量 |
effective_sold_qty |
累计分摊有效售出数量 |
remaining_qty |
最终未售/待售数量 |
buyback_qty |
回购数量 |
unit_principal |
单位本金 |
total_principal |
初始本金 |
returned_principal |
累计已返本金 |
recognized_profit |
累计已确认用户收益 |
settled_profit |
累计已结算收益 |
buyback_amount |
累计回购款 |
settlement_mode / user_profit_rate / buyback_rate
|
规则快照 |
status |
待入批次、代销中、结算中、已完成、冻结 |
索引建议:user_id + status、batch_id + status、cloud_order_item_id 唯一。
连接 CRMEB 普通商品 SKU 与一个或多个云仓批次的二次可售库存桥接表。它只提供普通商城销售入口和库存汇总,不能代替批次库存流水。
| 关键字段 | 说明 |
|---|---|
resale_stock_no |
业务唯一编号 |
resale_product_id / resale_sku_value_id
|
普通商城二次代销商品与规格值 |
resale_sku_unique_snapshot |
映射时规格唯一值快照 |
stock_source |
V1 固定为 cloud_only
|
published_qty |
已从代销批次发布到普通商城的累计数量 |
available_qty |
当前可供普通订单锁定的云仓数量 |
locked_qty |
已创建普通订单但尚未释放/生效的数量 |
effective_sold_qty |
已过二次售后观察期的有效数量 |
returned_qty |
退款、释放或回购后退出二次销售的数量 |
is_visible / is_saleable
|
普通商城展示与下单开关 |
last_reconciled_at |
与 CRMEB SKU 库存最近对账时间 |
version |
并发版本 |
status |
草稿、可售、暂停、到期清理、关闭 |
唯一约束建议:resale_product_id + resale_sku_value_id。V1 禁止同一映射 SKU 同时销售普通库存和云仓库存;普通商城展示库存与本表 available_qty 必须可对账。
把普通 CRMEB 二次零售订单明细分配到云仓批次。
| 关键字段 | 说明 |
|---|---|
secondary_order_id / secondary_order_product_id
|
二次零售订单与明细 |
batch_id |
被分配的云仓批次 |
allocated_qty |
分配数量 |
goods_paid_amount |
该分配对应商品实付金额 |
platform_subsidy_amount |
平台券/补贴加回金额 |
recognized_sales_amount |
售后观察期结束后确认的销售收入 |
refund_qty / refund_amount
|
二次退款影响 |
effective_at |
转为有效代销售出的时间 |
status |
已锁定、履约中、观察期、有效、退款、已释放 |
一个二次订单明细可拆分到多个批次,因此唯一键建议使用 secondary_order_product_id + batch_id。
记录每次累计进度快照,便于审计和重算对比。
| 关键字段 | 说明 |
|---|---|
batch_id |
云仓批次 |
trigger_type / trigger_id
|
二次订单生效、退款、回购、人工复核等 |
effective_sold_qty |
当时累计有效销售数量 |
consign_qty |
冻结代销数量 |
progress_rate |
累计进度 |
confirmed_sales_amount |
累计确认销售收入 |
sold_principal_amount |
累计已售本金 |
distributable_profit |
累计可分配利润 |
reached_milestone |
本次达到的最高节点 |
calculation_version |
计算规则版本 |
idempotency_key |
唯一幂等键 |
用户云仓业务账本,不直接等同于 CRMEB 用户余额流水。
| 关键字段 | 说明 |
|---|---|
ledger_no |
账本编号 |
user_id / holding_id / batch_id
|
结算主体和来源 |
ledger_type |
本金返还、收益、回购款、冲正、冻结、解冻 |
milestone |
0、25、50、75、100、最终 |
principal_amount |
本次本金金额 |
profit_amount |
本次收益金额 |
buyback_amount |
本次回购金额 |
adjustment_amount |
冲正/调整金额 |
total_amount |
本次合计 |
calculation_snapshot |
输入、公式结果和版本 |
status |
待入账、待审核、待结算、结算中、已结算、冻结、冲正、作废 |
settlement_statement_id |
结算单 |
balance_bill_id |
实际入用户余额后的 CRMEB 流水 |
idempotency_key |
批次+持仓+节点+账本类型唯一 |
settled_at |
完成时间 |
| 关键字段 | 说明 |
|---|---|
buyback_no |
回购单号 |
batch_id / holding_id / user_id
|
来源 |
remaining_qty |
用户最终未售数量 |
unit_principal |
用户抢购单价 |
buyback_rate |
快照比例 |
buyback_amount |
回购金额 |
platform_stock_flow_id |
转入平台库存流水 |
ledger_id |
用户回购账本 |
status |
待计算、待审核、待入账、已完成、冻结、作废 |
completed_at |
完成时间 |
商户云仓供货货款账本。
| 关键字段 | 说明 |
|---|---|
ledger_no |
账本编号 |
merchant_id / supply_id / batch_id
|
结算主体和来源 |
cloud_order_item_id |
首次购买明细 |
effective_qty |
有效首次购买数量 |
supply_unit_price |
供货价快照 |
gross_supply_amount |
供货价 × 有效数量 |
refund_deduction |
首次退款扣减 |
merchant_charge_amount |
约定由商户承担的履约扣减 |
settle_amount |
应结算货款 |
warehouse_accepted_at |
入库/验收时间 |
eligible_at |
满足观察期的时间 |
status |
待条件、待结算、结算中、已结算、冻结、冲正、作废 |
merchant_statement_id |
商户结算单 |
idempotency_key |
唯一 |
账本冲正、补记和人工差异修复申请。它保存“申请与审核事实”,最终金额由后端基于目标账本和当前数据重算,不能由前端直接指定后落账。
| 关键字段 | 说明 |
|---|---|
adjustment_no |
唯一申请编号 |
target_type / target_id
|
用户账本、商户账本、回购单等 |
adjustment_type |
冲正、补记、解冻、作废 |
reason / evidence
|
原因和证据 |
preview_snapshot |
申请时差异和公式预览 |
requested_by / requested_at
|
申请人和时间 |
audited_by / audited_at
|
审核人和时间 |
audit_remark |
审核意见 |
executed_ledger_id |
实际生成的差额/冲正账本 |
version |
乐观锁 |
status |
待审核、通过、驳回、执行中、已执行、失败、作废 |
同一申请只能执行一次;申请人与审核人应按高风险权限矩阵分离。
| 表 | 核心字段 |
|---|---|
eb_farm_farm |
名称、地址、经纬度、介绍、封面、负责人、状态 |
eb_farm_zone |
农场 ID、名称、用途、面积、地图/示意图、状态 |
eb_farm_plot |
农场 ID、区域 ID、地块编号、面积、可租面积、土壤/用途、位置、状态 |
地块编号在同一农场内唯一。
物理地块的一次占用周期。
| 关键字段 | 说明 |
|---|---|
plot_id |
真实地块 |
land_order_id |
租地业务订单 |
planting_batch_id |
种植批次 |
allocation_type |
整块、面积份额 |
occupied_area |
占用面积 |
start_at / end_at
|
计划占用时间 |
actual_end_at |
实际释放时间 |
status |
已锁定、使用中、已释放、冻结、取消 |
需要通过事务和容量校验保证同一时间有效占用面积不超过地块可租面积。
| 表 | 核心字段 |
|---|---|
eb_farm_crop |
作物名称、品种、预计周期、单位、图片、状态 |
eb_farm_land_plan |
套餐名称、农场/区域范围、分配方式、面积、周期、价格、交付数量/最低数量、交付单位、邮寄和异常规则、状态、版本 |
套餐与可选作物建议使用关联表 eb_farm_land_plan_crop。
与 CRMEB 订单/订单明细关联的租地业务扩展。
| 关键字段 | 说明 |
|---|---|
land_order_no |
业务编号 |
order_id / order_product_id
|
CRMEB 交易关联 |
user_id / plan_id / crop_id
|
用户选择 |
promised_qty / promised_unit
|
交付承诺快照 |
delivered_qty / refunded_unfulfilled_qty
|
已履约与未履约退款 |
allocated_at |
地块分配时间 |
expected_harvest_at |
预计采收 |
status |
租地订单状态 |
rule_snapshot |
套餐完整快照 |
| 表 | 核心字段 |
|---|---|
eb_farm_adoption_category |
分类名称、分配模式建议、状态 |
eb_farm_breed |
分类、品种、预计周期、预计产出、状态 |
eb_farm_enclosure |
农场、区域、栏舍/蜂场编号、容量、状态 |
eb_farm_animal_asset |
品种、唯一资产编号、耳标、出生/入场日期、栏舍、健康状态、当前状态 |
eb_farm_breeding_batch |
品种、栏舍、总数量、可分配份额、开始/结束时间、状态 |
eb_farm_adoption_plan |
套餐、分配模式、周期、价格、交付数量/最低数量、单位、邮寄和异常规则、版本 |
| 关键字段 | 说明 |
|---|---|
adoption_order_no |
业务编号 |
order_id / order_product_id
|
CRMEB 交易关联 |
user_id / plan_id
|
用户与套餐 |
allocation_mode |
单体、批次份额 |
animal_asset_id |
单体认养时使用 |
breeding_batch_id / share_qty
|
批次份额认养时使用 |
promised_qty / promised_unit
|
交付承诺 |
delivered_qty / refunded_unfulfilled_qty
|
履约汇总 |
allocated_at / expected_output_at
|
分配与预计产出 |
status |
认养订单状态 |
rule_snapshot |
套餐完整快照 |
单体认养需对有效分配关系建立排他约束;批次份额需使用事务校验总份额。
统一承载种植或养殖生产批次,或在技术评审后拆成两张表。
| 关键字段 | 说明 |
|---|---|
batch_no |
生产批次编号 |
production_type |
种植、养殖 |
farm_id / zone_id
|
农场与区域 |
plot_occupancy_id |
种植使用 |
enclosure_id / breeding_batch_id
|
养殖使用 |
crop_id / breed_id
|
作物或品种 |
plan_start_at / plan_end_at
|
计划周期 |
actual_start_at / actual_end_at
|
实际周期 |
expected_output_qty / actual_output_qty
|
预计与实际产出 |
manager_id |
负责人 |
status |
计划、进行中、采收/产出中、完成、异常 |
| 关键字段 | 说明 |
|---|---|
production_batch_id |
生产批次 |
animal_asset_id |
个体事件可选 |
event_type |
播种、浇水、施肥、饲喂、防疫、采收等 |
occurred_at |
发生时间 |
operator_id |
现场操作人 |
material_snapshot |
物料/用量扩展 |
content |
记录内容 |
media |
图片/视频 |
visibility |
内部、用户可见 |
publish_status |
草稿、待审核、已发布、已撤回 |
approved_by / approved_at
|
审核信息 |
version |
发布版本 |
| 关键字段 | 说明 |
|---|---|
output_no |
采收/产出批次编号 |
production_batch_id |
来源生产批次 |
output_type / product_name / spec
|
产出信息 |
total_qty / qualified_qty / loss_qty
|
数量 |
available_qty / allocated_qty
|
可履约与已分配 |
produced_at / expire_at
|
生产与保质期 |
quality_status |
待检、合格、不合格 |
warehouse_location |
入库位置 |
status |
待检、可分配、已分配完、冻结、关闭 |
把实际产出分配到租地/认养订单和普通商品。
| 关键字段 | 说明 |
|---|---|
output_batch_id |
产出批次 |
business_type / business_id
|
租地订单、认养订单、商品批次等 |
allocated_qty |
分配数量 |
fulfillment_id |
邮寄履约关联 |
status |
已分配、已出库、已取消 |
| 关键字段 | 说明 |
|---|---|
fulfillment_no |
履约编号 |
business_type / business_id
|
租地、认养、云仓邮寄等 |
user_id |
收件用户 |
sequence_no |
第几次分批履约 |
planned_qty / shipped_qty
|
本次计划和实际数量 |
address_snapshot |
地址 |
freight_rule_snapshot |
运费规则 |
delivery_type |
快递、自提 |
delivery_id / tracking_no
|
CRMEB 物流关联 |
status |
待分配、待出库、已发货、已签收、售后、完成 |
| 表 | 核心字段 |
|---|---|
eb_farm_trace_archive |
档案编号、档案类型、生产/产出批次、当前发布版本、二维码内容、状态 |
eb_farm_trace_version |
档案 ID、版本号、标题、展示快照、发布状态、审核人与时间 |
eb_farm_trace_material |
档案/版本、材料类型、报告/证书编号、文件、出具机构、有效期 |
eb_farm_trace_link |
档案与商品、SKU、云仓批次、订单明细、履约单之间的关联 |
| 关键字段 | 说明 |
|---|---|
event_no |
异常编号 |
event_type |
减产、绝收、疾病、死亡、延期、品质、包裹、物流等 |
farm_id / production_batch_id
|
生产关联 |
asset_type / asset_id
|
地块、动物、批次等 |
business_type / business_id
|
受影响订单或履约 |
affected_qty |
影响数量 |
reason / evidence
|
原因和证据 |
resolution_type |
补足、替换、延期、补发、退款 |
resolution_detail |
方案 |
approved_by / approved_at
|
审批 |
notified_at |
用户通知 |
resolved_at |
实际处理完成 |
status |
待处理、待审核、处理中、已解决、已关闭 |
资产替换另建关系表或在事件扩展中明确 original_asset_id、replacement_asset_id,不能直接覆盖原资产。
这些表不替代云仓、订单、账本或农业业务表,只保障跨事务流程可恢复、可审计和可对账。
| 关键字段 | 说明 |
|---|---|
scope / actor_type / actor_id
|
接口或命令作用域及操作者 |
request_id |
客户端/调用方幂等键 |
request_hash |
规范化请求摘要 |
response_status / response_snapshot
|
首次处理结果 |
business_type / business_id
|
产生的业务对象 |
locked_until / expired_at
|
执行租约与记录有效期 |
status |
处理中、成功、失败、冲突 |
唯一约束:scope + actor_type + actor_id + request_id。相同键但请求摘要不同必须返回幂等冲突。
| 关键字段 | 说明 |
|---|---|
event_id |
全局唯一事件 ID |
event_type / event_version
|
事件名和版本 |
aggregate_type / aggregate_id
|
聚合定位 |
trace_id / source
|
链路和来源 |
payload |
最小事件载荷 |
occurred_at |
业务事实发生时间 |
published_at / retry_count / next_retry_at
|
投递状态 |
last_error |
最后失败摘要 |
status |
待投递、投递中、已投递、失败、作废 |
唯一约束:event_id。
| 关键字段 | 说明 |
|---|---|
event_id / consumer_name
|
事件和消费者 |
event_type / event_version
|
消费版本 |
started_at / finished_at / duration_ms
|
执行时间 |
retry_count / next_retry_at
|
重试 |
result_business_key |
业务结果幂等键 |
last_error |
错误摘要 |
status |
处理中、成功、待重试、失败、忽略 |
唯一约束:event_id + consumer_name。
| 关键字段 | 说明 |
|---|---|
job_name / run_key
|
任务和本次运行键 |
cursor_value |
本次/下次游标 |
lease_owner / lease_until
|
并发租约 |
scanned_count / success_count / failed_count
|
处理汇总 |
started_at / finished_at
|
运行时间 |
last_error |
失败摘要 |
status |
运行中、成功、部分失败、失败、取消 |
唯一约束:job_name + run_key。
| 关键字段 | 说明 |
|---|---|
template_code / channel
|
通知模板和渠道 |
receiver_type / receiver_id
|
接收人 |
business_type / business_id / business_key
|
业务来源 |
content_snapshot |
实际发送内容快照 |
provider_message_id |
第三方消息 ID |
scheduled_at / sent_at
|
计划和发送时间 |
retry_count / last_error
|
重试与错误 |
status |
待发、发送中、成功、失败、取消 |
唯一约束建议:template_code + channel + receiver_type + receiver_id + business_key。
| 关键字段 | 说明 |
|---|---|
operator_type / operator_id
|
平台、商户、服务人员或系统 |
action_code |
稳定操作码 |
target_type / target_id
|
操作对象 |
before_snapshot / after_snapshot
|
关键字段前后值 |
reason / request_id / trace_id
|
原因和链路 |
ip / user_agent
|
操作来源 |
occurred_at |
发生时间 |
审计日志不可物理删除,不允许通过普通 CRUD 接口修改。
服务端客服、现场人员和仓库人员的数据范围。
| 关键字段 | 说明 |
|---|---|
service_id / merchant_id
|
现有服务人员及所属商户/平台 |
duty_code |
平台客服、现场、仓库等职责 |
scope_type / scope_id
|
农场、区域、仓库、生产批次或商户 |
valid_from / valid_to
|
授权有效期 |
created_by |
授权人 |
status |
有效、停用 |
唯一约束建议:service_id + duty_code + scope_type + scope_id。写接口每次根据当前有效关系校验,不把长期范围只存入 Token。
稳定的业务状态码应在代码常量/枚举和文档中维护,不建议让运营随意新增。以下内容可使用系统字典:
- 作物、认养分类和品种。
- 农事/养殖事件类型。
- 异常事件类型和处理方式。
- 产出单位和规格。
- 报告/证书类型。
以下内容不得仅依赖可删除字典:
- 订单状态。
- 批次状态。
- 账本状态。
- 结算模式。
- 库存池类型。
- 去向类型。
- 首次云仓订单明细只能存在一个最终去向。
- 每个已发布活动 SKU 只能生成一个对应活动批次。
- 活动 SKU、历史订单和批次以独立
activity_sku_id关联,来源规格重建不得改变历史关系。 - 需要补运费的邮寄选择只有在补运费成功后才能成为最终去向。
- 代销批次开始后的持仓不得退回普通首次退款状态。
- 用户收益分成率与平台收益分成率之和必须等于 100%,回购比例必须在
(0, 100%]。 - 代销持仓数量必须等于来源订单明细全部有效数量。
- 批次各库存池数量之和必须与批次总量闭合。
- 二次销售桥接 SKU 的 V1 库存来源必须为
cloud_only,不得与普通库存混合。 - 二次桥接表、批次二次库存和 CRMEB 对外展示库存必须可对账。
- 有效代销售出数量不得超过代销冻结数量。
- 用户持仓累计分摊有效售出数量之和等于批次有效售出数量,允许最后一笔尾差调整。
- 已返本金不得超过已售可返本金与回购款允许范围。
- 用户已结算收益不得超过累计应得收益。
- 回购完成数量不得超过最终未售数量。
- 商户有效首次购买数量不依赖二次零售数量。
- 地块有效占用容量不得超过物理地块可用容量。
- 单体认养资产有效周期内不得重复分配。
- 批次认养有效份额不得超过可分配份额。
- 产出分配数量不得超过合格可用数量。
- 租地/认养累计履约数量、未履约退款数量和剩余权益必须闭合。
- 已发布溯源内容修改时必须新增版本。
- 每个领域事件的同一消费者最多产生一次同业务结果。
- 账本、库存和回购的历史流水不得通过更新原金额代替冲正。
后续技术设计至少为以下操作定义事务和幂等键:
- 抢购下单锁定库存。
- 支付成功转有效付款库存。
- 未付款超时释放库存。
- 用户确认去向。
- 截止时间自动转代销。
- 冻结批次代销数量并创建持仓。
- 发布云仓二次可售库存并同步普通商城映射 SKU。
- 二次零售按最早到期批次锁定库存。
- 二次订单转有效销售。
- 二次退款释放/冲减批次。
- 进度节点生成累计差额账本。
- 到期回购、库存转平台和用户回购款入账。
- 商户首次购买货款生成与冲正。
- 地块/认养资产分配。
- 产出批次向订单分配。
- Outbox 事件与引发事件的业务写入。
- 用户/商户业务账本与 CRMEB 财务映射。
以下问题不改变业务口径,但需要在接口和代码改造设计前确认:
- 活动 SKU 使用独立主键已经明确;仍需验证来源
value_id和unique在商品编辑、复制、删除后的具体变化,用于同步告警而非历史主键。 - 云仓首次购买是否使用独立订单创建服务,还是在现有订单上增加业务扩展编排。
- 邮寄补运费使用 CRMEB 哪类支付订单与退款能力。
- 二次零售已确定在普通订单明细创建事务中锁定批次,支付只推进状态;仍需确定
cloud_only映射 SKU 的建立和上下架流程。 - 用户账本最终进入现有余额还是新增可提现余额子账户。
- 商户供货账本与现有商户结算单如何关联,哪些字段可直接复用。
- 生产批次采用种植/养殖两张表还是统一表加扩展表。
- 当前项目的数据库升级脚本规范、回滚方案和历史数据初始化方式。
- 大数据量下批次进度、用户持仓分摊采用实时计算还是汇总任务。
- 首页
- 项目总览
- 项目立项
- 端与角色
- 供应链经营闭环
- 模块地图
- V1 范围 PRD
- 任务拆解
- 结算与账本
- V1 结算口径
- 云仓秒杀
- CRMEB 底座能力映射
- 当前菜单页面审计
- V1 决策与术语
- 云仓流程与状态机
- 租地认养与溯源 PRD
- V1 数据模型草案
- 开发前设计计划
- V1 信息架构
- 页面与原型规格
- V1 API 契约草案
- 事件任务权限通知
- 五项目代码改造蓝图
- 测试验收发布与手册计划
- CRMEB 视觉基线审计
- G3/G4 决策登记表
- 用户端 uni-app 复用审计
- 开发前主清单
- 自主设计工作指引
- V1 需求追踪矩阵
- G3 技术专项验证报告
- V1 P0 页面矩阵
- 写操作契约注册表
- 事件任务操作注册表
- 状态异常事务矩阵
- 数据库字段字典
- 页面 API 文件追踪
- V1 ER 图
- API 字段契约注册表
- 平台管理员手册
- 商户手册
- 用户帮助
- 服务与现场手册
- 开发任务包
- 测试目录与 Fixtures
- 发布与运维手册
- 设计交付与研发交接