两个开源演示 · 采购审批 与 售后退款
Metratio Lab

两个业务流程,
同一套工程纪律。

这里是两个端到端可运行的开源演示:PurchaseFlow 覆盖采购申请、分角色审批与 Odoo 19 草稿采购单的写后读回核验;ReturnOps-Mini 覆盖电商退货、退款审批与支付对账。它们演示同一种纪律——外部结果要读回核验,副作用要幂等,未知要停下来交给人工。

事务性 Outbox 幂等键 写后读回核验 UNKNOWN 人工接管
PurchaseFlow采购审批与 Odoo 19 草稿核验FastAPI · React · Odoo 19 · n8n
ReturnOps-Mini退货、退款审批与支付对账React · FastAPI · PostgreSQL · n8n
SHARED BASEPostgreSQL · 事务性 Outbox · Mailpit · Docker Compose
项目展示

两个端到端可运行的演示。

各自包含操作台、API、PostgreSQL、n8n 工作流与 Mailpit 邮件接收,Docker Compose 一键本地启动。

PF
采购审批演示

PurchaseFlow

采购申请按部门与金额路由人工审批;获批后由后台 Worker 在真实 Odoo 19 Community 创建草稿采购单并独立读回核对,核验通过才结案。React + TypeScript 工作台、FastAPI、事务性 Outbox、n8n 与 Mailpit。

查看仓库与 README ↗
RF
售后退款演示

ReturnOps-Mini

把退货申请、验货、退款审批(高额双人审批)、退款执行与支付对账放进一条可追踪流程;UNKNOWN 时暂停自动重试,由财务权威核查后结案。React 操作台、FastAPI、PostgreSQL、n8n 与 Mailpit。

查看仓库与演示视频 ↗
BASE
共用工程底座

同一套可靠性机制

事务性 Outbox 与至少一次执行的 Worker、幂等键、写后读回核验、UNKNOWN 时停止盲目重试、追加式审计记录,以及 Docker Compose、Alembic 迁移与 Playwright 验收测试。

GitHub 主页 ↗
工程要点

外部结果不可信时,系统如何自处。

两个演示关注同一类问题:外部系统的结果可能未知,重试不能放大副作用,结案必须有核验证据。

01 · 提交
事务性 Outbox业务事实与对外意图在同一事务里落库,由后台 Worker 至少一次投递。
02 · 重试
幂等键每个外部意图携带稳定幂等键,重复投递不会产生第二次副作用。
03 · 核验
写后读回Odoo 草稿创建后独立读回核对;未核验通过的申请不结案。
04 · 未知
UNKNOWN 处理外部结果未知时暂停自动重试,交人工权威核查后再继续。
05 · 留痕
审计记录审批与状态变化追加式留痕,支持对账与复盘。
演示边界两个演示均使用合成数据:不确认真实采购单、收货、过账或付款,也不发起真实退款。完整范围与限制见各自 README。
仓库入口

开源仓库与文档。

均为公开仓库,README 提供演示视频、流程图与本地启动步骤。