This skill looks up active promotions and calculates final prices. It always shows its work (calculation steps) so customers trust the answer.
Depends on: promotions[] in knowledge base + membership{} config.
QueryExampleAction"What promotions are active?""现在有什么活动?"List all active promos"How much will I pay?""买两件怎么算?"Calculate total"Is this on sale?""这款打折吗?"Check promo applicability"How do I get the best deal?""怎么买最划算?"Optimize purchase strategy"Can I stack promos?""会员折扣和满减可以一起用吗?"Check stackability
Always show calculation steps. Customers distrust "magic numbers."
For each item in the cart/query:
promotions[] for active promos (not expired)applicable_to scope (does this product qualify?)excluded list (is this product excluded?)Use scripts/calculate_promotion.py for accurate computation.
Promotion types:
TypeRule formatExamplethreshold满X减Y满300减50discountX折 or X% off8折, 20% offbundle买X件享Y价买2件第2件半价gift满X赠品满200赠小样member_price会员专属价VIP价¥199
Check stackable field on each promotion.
stackable: true → can combine with othersstackable: false → use highest-value single promoShow original price → applicable promos → final price → total savings.
text
这款连衣裙 原价:¥399
✨ 夏日大促:满300减50
会员折扣:9折(VIP专享)
最终价格:¥309(节省¥90)
text
您的购物清单:
白色连衣裙 ×1 ¥399
条纹衬衫 ×1 ¥259
小计:¥658
✨ 满300减50 → -¥50
✨ 满600再减80 → -¥80(两件合计超过600!)
最终合计:¥528(节省¥130 🎉)
text
目前[产品/全场]暂无特别优惠活动。
当前售价:¥[price]
Conflicting promos: Always apply the rule that benefits the customer most. State which was applied.
Expired promo mentioned by customer: "这个活动已于[date]结束了,目前[有/没有]新的优惠。"
Promo not in KB but customer claims it exists: "我目前没有查到这个活动的信息,建议向店员确认一下,以免信息有误。"
Membership tier unknown: "您的会员等级我暂时查不到,建议核实后,会员专属折扣会自动应用。"
Use scripts/calculate_promotion.py for accurate numeric calculation.
Reference: promo-rules-guide.md — detailed rule parsing.