关键词:电商风控、促销引擎、互斥组、价格保护、防薅羊毛、凑单退货、动态商品池、规则引擎、预计算

一句话概括:本文从 2024 年拉夫劳伦凑单事件(88VIP大额消费券+高单价凑单品+秒退)出发,拆解电商促销系统中的"不可能三角",并给出基于动态商品池、互斥组引擎与价格保护的三层风控技术方案。

二、凑单风控的"不可能三角"

在促销系统设计中,存在一个隐形的工程约束三角:

  • 低门槛:优惠门槛越低,转化率越高,但凑单退货风险越大
  • 多商品:参与商品越多,GMV 越好看,但风控面越广
  • 低退货率:商家和物流成本可控,但需要限制规则灵活性

三者最多只能满足两个。

从系统架构视角看,这个三角映射到技术层面就是:

业务维度 技术映射 取舍代价
低门槛 规则灵活性高 套利路径增多
多商品 风控覆盖范围广 规则计算复杂度 O(n²) 上升
低退货率 计算确定性高 需要强约束,限制业务创新

平台选择了"低门槛 + 多商品",就意味着必须在系统层引入运行时风控,用技术手段对冲业务灵活性带来的风险。

三、三层风控系统设计方案

凑单退货不是"防"出来的,是规则设计出来的。当高门槛消费券、高单价凑单品、7天无理由退货、秒退款四者叠加,系统就等于公开发了一张套利说明书。想要根治,得在引擎层面动手。

3.1 动态商品池(Dynamic Product Pool)

设计目标:让"凑单神器"进不了活动范围,而不是事后拦截。

系统根据历史订单数据,自动识别哪些商品的"凑单后退货率"异常高。例如:同一订单中,该商品被购买后 72 小时内退货率 > 80%,则自动进入 RISK_PRODUCT 标签池。

# 动态商品池风控标签示例
RISK_RULES = {
    "凑单退货识别": {
        "metric": "order_return_rate_within_72h",
        "threshold": 0.80,
        "action": "exclude_from_cross_shop_promo",
        "scope": ["满减活动", "跨店满减"]  # 正常销售不受影响
    }
}

关键点:不是禁止售卖,而是禁止作为跨店满减的凑单品。商品可正常下单,但在促销规则匹配阶段被过滤。

3.2 互斥组引擎(Mutex Group Engine)

设计目标:防止用户通过规则叠加精准套利。

当跨店满减、店铺券、品类券、运费险可以无限制叠加时,聪明的消费者一定能算出最优套利路径。互斥组引擎在优惠计算前进行规则冲突检测。

核心概念

  • 互斥组(Mutex Group):某些优惠不能同时生效。例如:"跨店满减"和"新客首单礼"互斥。
  • 优先级(Priority):高价值优惠优先。例如:"店铺直降"优先级高于"跨店满减",避免用户为了凑跨店门槛而买不需要的东西。
  • 叠加上限(Stacking Limit):总优惠金额不得超过订单金额的某个比例(如 50%)。

# 互斥组配置示例(config/promotion/mutex_group.yaml)
mutex_groups:
  - name: "基础折扣互斥组"
    priority: 100
    strategies:
      - id: "跨店满减"
        priority: 1
      - id: "店铺满折"
        priority: 2
      - id: "限时特价"
        priority: 3
    stacking_limit: "50%"  # 总优惠不超过订单金额 50%
    conflict_resolution: "highest_priority_win"  # 冲突时高优先级胜出

3.3 价格保护(Price Protection)

设计目标:守住成本底线,防止优惠叠加后到手价低于成本价。

用户凑单时:商品原价 2000 元,跨店满减减 300,店铺券减 200,平台券减 100,再加上 88VIP 折扣,最终到手价可能只有 1200 元。如果成本价是 1500 元,每卖一件亏 300。

价格保护模块需要在计算优惠前,先进行预检(Pre-calculation Check):

# 价格保护预检逻辑(promotion/price_protection.py)
def price_protection_check(order, rules) -> ProtectionResult:
    final_price = calculate_final_price(order, rules)
    
    # 三重保护线
    if final_price < order.product.cost_price:
        return ProtectionResult(
            triggered=True,
            level="COST_LINE",
            action="downgrade_rule",  # 自动降级部分优惠
            message="低于成本价,触发价格保护"
        )
    if final_price < order.product.member_price:
        return ProtectionResult(
            triggered=True, 
            level="MEMBER_LINE", 
            action="reject"
        )
    if final_price < order.product.historical_low:
        return ProtectionResult(
            triggered=True, 
            level="HISTORICAL_LOW", 
            action="manual_review"
        )
    
    return ProtectionResult(triggered=False)

四、系统架构与实现

将上述三层风控集成到促销引擎中,整体架构如下:

在实际项目实践中,上述设计通常落地为以下模块:

模块 职责 关键技术
动态商品池(Product Pool) 按历史退货率、凑单关联度、客单价自动筛选活动商品 Flink 实时计算 + 规则标签
互斥组引擎(Mutex Group) 策略互斥、规则互斥、券互斥三级互斥;冲突时按优先级自动选优 DAG 拓扑排序 + 优先级队列
价格保护(Price Protection) 计算前预检;成本价/会员价/历史最低价三重保护线 预计算管道 + 降级策略
Trace 审计(Audit Trace) 每笔订单计算过程完整记录 结构化日志 + 时序数据库

Trace 凭证示例

{
  "order_id": "ORDER_20241111_001",
  "audit_trail": [
    {
      "step": "product_pool", 
      "action": "excluded_from_cross_shop", 
      "sku": "RL_001"
    },
    {
      "step": "mutex_group", 
      "action": "conflict_resolved", 
      "winner": "店铺直降", 
      "loser": "跨店满减"
    },
    {
      "step": "price_protection", 
      "action": "downgrade_rule", 
      "reason": "COST_LINE"
    }
  ]
}

事后复盘时,可精确统计"因价格保护拦截而避免的损失"。

五、技术总结

凑单退货的本质是促销规则引擎缺少风控闭环。本文提出的三层防御体系:

  1. 动态商品池:事前防御,通过历史数据识别高风险商品,降低套利面
  2. 互斥组引擎:事中控制,通过规则互斥与优先级管理,阻断精准套利路径
  3. 价格保护:兜底机制(实为计算前预检),确保任何规则组合都不会击穿成本线

对于平台运营,建议在跨店满减的门槛设计中加入"退货率预估模型";对于商家,建议在活动上线前用模拟器跑一遍最坏情况。

当平台用"高门槛消费券+多商品"换GMV时,商家的高退货率不是意外,而是规则设计好的成本转移。在线体验:https://mp.tooly.run/demo

下一篇预告:为什么你的促销总在"偷偷亏钱"?三道防线守住负毛利。

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐