大促价格计算引擎 - 题解
一、题目分析
本题要求根据《大促优惠叠加规范 v2.0》计算购物车最终实付金额。规则链路:
- [R.5] 秒杀商品隔离(不参与任何折扣,不计入满减门槛)
- [R.2] 品类直降(图书 5 折,数码 9 折)
- [R.3] 满减券(折后总额 ≥300 减 50,仅一次)
- [R.4] VIP 折上折(95 折)
- 秒杀商品原价加回
- [R.6] 运费(非 VIP 且 <99 元加 6 元,VIP 永远免运费)
输出 total_payment、shipping_fee、applied_discounts 三个字段。
二、难点分析
- 秒杀商品的隔离逻辑:秒杀商品不参与品类折扣、不计入满减门槛、不享受 VIP 折扣,但要计入最终总额。这种"免疫但不消失"的逻辑容易出错
- 满减门槛判断基准:是折后的普通商品总额,不含秒杀商品,模型容易用原价或含秒杀的总价判断
- VIP vs 普通会员:必须是"VIP会员"才打 95 折,"普通会员"不打折,模型容易把普通会员也当 VIP
- 运费的双重条件:VIP 永远免运费(无论金额),非 VIP 看最终金额是否 <99
- 图书半价的大幅折扣:200 元图书→100 元,容易被模型低估折扣力度
三、Prompt 设计思路
3.1 六步流水线设计
将复杂的多层优惠拆成 6 个清晰步骤,关键创新是把秒杀商品在 Step1 就分离出来,Step4 才加回,形成"分离→计算→合并"的流程。
3.2 秒杀隔离的物理分离
在 Step1 就把商品分为"普通商品"和"秒杀商品"两组,subtotal 只累加普通商品。Step2-Step3 只作用于 subtotal。Step4 才把秒杀原价加回。这种物理分离比在每步检查"是否秒杀"更不容易出错。
3.3 显式标注"普通会员≠VIP"
在多个示例中反复强调"普通会员≠VIP→不打折",直接对抗模型将"普通会员"误认为 VIP 的倾向。
3.4 边界值示例覆盖
- 图书 198 元→折后 99 元,恰好 ≥99 不收运费
- 图书 180 元→折后 90 元,<99 收运费 6 元
- 满减门槛边界:300 元恰好满减
- 含秒杀的混合购物车
3.5 applied_discounts 规则明确
逐条说明每个规则编号何时列入,特别指出 [R.5] 只在有秒杀商品时列入,[R.6] 始终列入。
四、关键技巧
- 思维链引导:要求在
<thinking>中按步骤计算 - 品类扩展识别:图书类扩展为"书/教材/画册/工具书",数码类扩展为"键盘/鼠标/耳机"
- 数值强调:用感叹号标注"200元图书→100元!600元图书→300元!",强化半价概念
- 满减条件精确化:
subtotal ≥ 300 → -50,< 300 → 不减,用数学不等式而非自然语言 - 大量完整计算示例:5 个示例覆盖不同会员类型、不同品类组合、不同金额区间
- 输出模板锚定:结尾给出空 JSON 模板统一格式



京公网安备 11010502036488号