mypromotion-engine-core:基于 Python 的电商促销计算引擎项目

高性能、高精度电商促销计算引擎(Promotion Engine),促销引擎、营销规则引擎、优惠计算引擎、折扣引擎。 支持满减、满折、阶梯价、固定价、优惠券、积分抵扣、价格保护、退款分摊等复杂电商营销规则计算,支持促销互斥、叠加、优先级与最优优惠决策。适用于电商订单优惠、价格计算、营销活动等场景。

分支1Tags0
e7f3c077创建于 14 小时前29次提交
文件最后提交记录最后更新时间
修改demo页面 提交比较项目 14 小时前
docs(readme): 重写中英文 README,修正安装与示例代码 - 安装方式改为本地源码:git clone + pip install -e . - 修复快速上手示例:qty→quantity,补充 CalculationContext - Demo 启动简化为 python demo/app.py,无需额外 pip - SaaS 功能改为"开源引擎 vs SaaS 平台"对比表格 - 删除不存在的功能:拖拽式编排、插件市场 - 去掉券系统独立分类(辅助功能) - 删除"动态展示推荐"和"同类对比"章节 - 预览图替换为 doc/assets/demo.gif - 新增 8 维度能力对比矩阵 6 天前
feat: Session 隔离 + 退款明细 + 积分抵扣 + UI 优化 核心功能: - 规则库按 Session ID 隔离,每个 Session 最多 5 条规则 - 规则保存创建时间,后端每小时自动清理超过 24 小时的数据 - 订单数据前端 localStorage 按 Session 隔离,加载时清理 24 小时前订单 - 前端所有 API 请求带 X-Session-ID header 退款功能: - 支持多次部分退款,跟踪每 SKU 已退数量 - 已退款订单可查看历史明细(显示多笔退款记录) - 退款弹窗显示剩余可退数量(共 X,已退 Y) - 修复退款策略切换被重置问题 - 修复 original_price 不存在导致退款金额计算错误 - 修复 Decimal 精度导致 remaining_payable 永不为 0 的状态判断问题 积分抵扣: - 计算上下文新增用户积分输入框 - 前后端传递 user_points,PointsDeductAction 读取 context.extra.points UI/UX: - 商品卡片 tooltip 悬停显示 SKU、品类、标签 - 购物车显示 SKU 便于核对 - 修复商品卡片参差不齐(flex 对齐) - 修复订单确认弹窗运费不显示问题 - 规则列表 promotion_code 改为标签样式 - 生效规则去掉选中浅蓝色背景 - 保存规则后不再清空表单 - 初始页面购物车为空 - 添加缺失的中英文翻译 后端修复: - engine.py sum() 返回 Decimal 0 而非整数 0 - calculate() 支持按 Session 加载规则 7 天前
feat: Session 隔离 + 退款明细 + 积分抵扣 + UI 优化 核心功能: - 规则库按 Session ID 隔离,每个 Session 最多 5 条规则 - 规则保存创建时间,后端每小时自动清理超过 24 小时的数据 - 订单数据前端 localStorage 按 Session 隔离,加载时清理 24 小时前订单 - 前端所有 API 请求带 X-Session-ID header 退款功能: - 支持多次部分退款,跟踪每 SKU 已退数量 - 已退款订单可查看历史明细(显示多笔退款记录) - 退款弹窗显示剩余可退数量(共 X,已退 Y) - 修复退款策略切换被重置问题 - 修复 original_price 不存在导致退款金额计算错误 - 修复 Decimal 精度导致 remaining_payable 永不为 0 的状态判断问题 积分抵扣: - 计算上下文新增用户积分输入框 - 前后端传递 user_points,PointsDeductAction 读取 context.extra.points UI/UX: - 商品卡片 tooltip 悬停显示 SKU、品类、标签 - 购物车显示 SKU 便于核对 - 修复商品卡片参差不齐(flex 对齐) - 修复订单确认弹窗运费不显示问题 - 规则列表 promotion_code 改为标签样式 - 生效规则去掉选中浅蓝色背景 - 保存规则后不再清空表单 - 初始页面购物车为空 - 添加缺失的中英文翻译 后端修复: - engine.py sum() 返回 Decimal 0 而非整数 0 - calculate() 支持按 Session 加载规则 7 天前
修改demo页面 提交比较项目 14 小时前
refactor(docker): 去掉 curl 依赖,用 Python 内置方式做健康检查 - Dockerfile: 删除 apt-get install curl,减少构建时间和镜像体积 - docker-compose.yml: healthcheck 改用 Python urllib.request,不依赖外部命令 - deploy.sh: 从 4 步简化为 3 步,去掉容器健康检查等待循环 6 天前
Initial commit9 天前
[docs] README 优化 5 天前
docs 优化 README 4 天前
refactor(docker): 去掉 curl 依赖,用 Python 内置方式做健康检查 - Dockerfile: 删除 apt-get install curl,减少构建时间和镜像体积 - docker-compose.yml: healthcheck 改用 Python urllib.request,不依赖外部命令 - deploy.sh: 从 4 步简化为 3 步,去掉容器健康检查等待循环 6 天前
feat(docker): 使用共享网络 mypromotion,healthcheck 改用 Python - docker-compose.yml: 添加 networks 配置,使用外部网络 mypromotion 与主项目共享网络,使 nginx 可通过服务名访问 promo-demo - docker-compose.yml: healthcheck 改用 Python urllib.request,删除 curl 依赖 6 天前
[conf] 修改nginx 配置 6 天前
docs: 全面重构 README 与 Demo 页面,增强 SEO 与信息准确性 README.md / README.en.md - 开头增加关键词密集的副标题与显式关键词列表,优化 GitHub/Gitee 搜索可见性 - 图片增加含关键词的 alt 文本 - 新增「适用场景 / Use Cases」章节(电商、零售、O2O、SaaS、财务对账) - 新增「与其他方案对比 / Comparison with Alternatives」章节(vs 手写代码、Excel、MyPromotion SaaS) - 新增 FAQ 章节(5 个高频长尾问题:vs if/else、Python 版本、系统集成、退款一致性、生产部署) - 重构「开源引擎 vs SaaS 平台」对比表格: - 增加关系说明(同一团队维护,SaaS 基于本引擎构建) - SaaS 列标题添加链接 https://mp.tooly.run - 新增:支持的促销策略、售后策略、安全 - 删除:消费券(已合并到促销策略) - 精确化:计算方式(规则级叠加控制)、退款追溯、价格保护、监控与集成 - 按功能模块重新排序(规则策略 → 计算定价 → 售后退款 → 业务维度 → 架构 → 运维 → 安全) - 接入成本标注「现阶段免费」 demo/static/index.html - 对比表格同步 README:11 行、顺序、描述完全一致 - 表头 SaaS 列添加外链链接 - 中英文 I18N 全部同步更新 - 新增 Cache-Control 防止浏览器缓存旧版本 pyproject.toml - 扩展 description,增加具体促销类型关键词 - 扩展 keywords(新增 coupon、sale、refund、tiered-pricing、price-protection、checkout、满减、优惠券、促销引擎、电商) 5 天前
feat: 阶梯价 amount 支持、运费/免运费、优惠券计算、前后端参数兼容与边界修复 - tiered_price 支持 amount 键;新增 shipping_fee 与 free_shipping - CouponUsageCalculator 支持 5 种券类型;计算顺序支持三种模式 - 前后端扁平化参数兼容;优惠券 UI 重构;商品扩展至 12 个 - 修复 quantity 字符串、current_time=None、Z 后缀、except_skus 键名、多 action 折扣上限等边界 - 新增 coupon_calculation 测试,扩展 engine 测试 8 天前

mypromotion-engine-core

高性能、高精度电商促销计算引擎(Promotion Engine),促销引擎、营销规则引擎、优惠计算引擎、折扣引擎。

支持满减、满折、阶梯价、固定价、优惠券、积分抵扣、价格保护、退款分摊等复杂电商营销规则计算,支持促销互斥、叠加、优先级与最优优惠决策。适用于电商订单优惠、价格计算、营销活动等场景。

原生 Decimal 精度计算,可插拔架构,零框架依赖。纯 Python 实现,开箱即用。

在线体验 · PyPI

关键词:促销引擎、电商优惠计算、满减计算、折扣引擎、优惠券系统、阶梯价计算、退款分摊、价格保护、Python 电商、Decimal 精度


在线体验

促销引擎演示:支持满减、阶梯价、优惠券、退款模拟等功能的可视化操作界面

🔗 立即访问在线体验


30 秒上手:写一个促销规则

git clone https://github.com/faqtong/mypromotion-engine-core.git
cd mypromotion-engine-core
pip install -e .
from decimal import Decimal
from promotion_engine import Engine, Cart, CartItem, Rule
from promotion_engine.types import CalculationContext

# 创建购物车,添加商品
cart = Cart()
cart.add_item(CartItem(sku="T001", price=Decimal("199.00"), quantity=2))
cart.add_item(CartItem(sku="T002", price=Decimal("89.00"), quantity=1))

# 配置促销规则:满 300 减 50
engine = Engine()
context = CalculationContext(cart_items=cart.items)
result = engine.calculate(context, rules=[Rule.full_reduction(threshold=300, amount=50)])

print(result.payable_amount)  # 437.00
print(result.total_discount)  # 50.00

本地运行

git clone https://github.com/faqtong/mypromotion-engine-core.git
cd mypromotion-engine-core
python demo/app.py

浏览器打开 http://127.0.0.1:8000/demo/

启动后可体验完整的促销规则管理功能:增删改查促销规则、实时促销计算、退款模拟、导出 JSON。


适用场景

  • 电商促销平台:满减、满折、阶梯价、优惠券叠加计算
  • 零售门店:会员折扣、固定价、积分抵扣
  • O2O 外卖:满减配送费、首单优惠、用户分群定向
  • SaaS 促销服务商:多租户促销规则引擎、开放 API 集成
  • 财务对账:退款分摊追溯、计算凭证快照、审计合规

核心特性

特性 说明
Decimal 原生 全链路 Decimal,彻底避免浮点误差
四层互斥 特殊互斥规则 / 白名单黑名单 / 策略互斥组 / 强制叠加
最优序 自动比较先促销后券 vs 先券后促销,选更便宜的
可插拔 条件、动作、范围均通过注册 API 扩展
退款可追溯 按 SKU 分摊折扣,支持比例退还 / 保留优惠 / 全额退

架构

购物车 + 规则列表
    |
    v
范围过滤 --> 互斥检查 --> 条件检查 --> 折扣计算 --> 结果
    |              |             |             |
    v              v             v             v
SKU 命中      跳过原因       通过/拒绝      Decimal 精度

开源引擎 vs SaaS 平台

本开源引擎与 MyPromotion SaaS 平台 由同一团队维护。SaaS 基于本引擎构建,增加了多租户、用户分群、商品池、监控等企业级能力。

能力 开源引擎 SaaS 平台
规则管理 内存规则库,可视化创建 可视化后台,55+ 业务模板
支持的促销策略 满减、固定价、阶梯价等基础策略 15 种核心策略(满减、满折、秒杀、预售、优惠券、积分抵扣等)
计算方式 编码查库,支持顺序/互斥/替换 编码查库,规则级叠加控制(白名单/黑名单/强制叠加/最大叠加数)
价格保护 降价自动退差价,独立价格保护模块
售后策略 3 种分摊策略(比例退还/保留优惠/全额退) 同开源 + 可复用售后策略模板
退款追溯 SKU 级追溯 同开源 + 历史快照归档与审计明细
用户分群 动态人群包,精准投放
商品池管理 动态商品池,黑白名单
多租户 租户隔离,权限分级
监控与集成 基础事件日志,Python SDK 实时仪表盘、开放 API、多语言 SDK
安全 基础鉴权 三级限流、OAuth2 / RBAC、审计合规

与其他方案对比

维度 开源引擎 手写代码 电子表格 MyPromotion SaaS
浮点精度 ✅ Decimal 原生 ❌ float 误差 ❌ 公式错误 ✅ Decimal 原生
规则互斥 ✅ 四层互斥自动检查 ❌ 人工硬编码 ❌ 无法处理 ✅ 四层互斥 + 规则级叠加控制
退款追溯 ✅ SKU 级分摊明细 ❌ 逻辑分散 ❌ 无追溯 ✅ 历史快照 + 审计明细
接入成本 ✅ pip 安装即用 ⚠️ 多人年研发 ⚠️ 维护困难 💰 按需付费(现阶段免费)
数据隐私 ✅ 本地运行 ✅ 自主可控 ❌ 文件泄露风险 ⚠️ 数据上云

常见问题

Q: 这个引擎和直接用 if/else 写满减逻辑有什么区别?

A: 手写代码在规则少时简单直接,但随着规则类型增加(满减、满折、阶梯价、优惠券、积分抵扣),互斥判断、叠加顺序、退款分摊会快速膨胀为难以维护的代码。本引擎把这些逻辑抽象为标准化管线,新增规则类型只需注册插件,无需改动核心代码。

Q: 支持哪些 Python 版本?

A: Python 3.9+,无额外依赖。可选 pip install -e .[demo] 安装 FastAPI 演示依赖。

Q: 能否接入现有电商系统?

A: 可以。引擎核心是纯 Python 库,输入购物车商品列表 + 促销规则列表,输出计算结果。与框架无关,可嵌入 Django、Flask、FastAPI 等任意后端。

Q: 退款计算会重新算一遍吗?会不会和正向结果不一致?

A: 不会。正向计算时生成 trace 凭证,记录每笔商品的分摊明细。退款时直接读取该凭证,按原分摊比例退还,从根本上消除偏差。

Q: 生产环境如何部署?

A: 提供 Docker + Docker Compose 一键部署,含 healthcheck 和日志滚动。详见项目根目录 docker-compose.ymldeploy.sh

测试

pip install pytest
pytest tests/ -q

License

Apache-2.0 © MyPromotion Team

项目介绍

高性能、高精度电商促销计算引擎(Promotion Engine),促销引擎、营销规则引擎、优惠计算引擎、折扣引擎。 支持满减、满折、阶梯价、固定价、优惠券、积分抵扣、价格保护、退款分摊等复杂电商营销规则计算,支持促销互斥、叠加、优先级与最优优惠决策。适用于电商订单优惠、价格计算、营销活动等场景。

定制我的领域

下载使用量

0

项目总下载次数(含Clone、Pull、 zip 包及 release 下载),每日凌晨更新

语言类型

Python99.13%
Shell0.53%
Dockerfile0.34%