零售业务流程转系统需求:从PPT到可落地开发清单的实战方法
简介这份PPT聚焦中国免税品集团总公司中免集团的零售管理流程面向零售运营、门店管理与信息化建设相关从业者帮助梳理免税零售业态差异、特殊业务流程与系统需求。内容覆盖市内店、口岸店、供船店三类业态的客源、商品、销售与提货方式对比并详细拆解市内店顾客卡办理、六联销售单据流转、机场提货与海关核销以及供船店预订单、登船推销、报关出库与代理转账等特殊流程。同时延伸至门店商品计划、采购、收发货退货、运营与财务处理并给出消费者行为分析流程改进要点及POS系统核心需求如客户信息快速录入、VIP与团队客户管理、应收控制账户等。资源包为1个pptx文件约557KB结构紧凑适合作为零售业务流程梳理与系统需求分析的参考材料。目前已有60人学习。1. 零售业务流程与系统需求从一张 PPT 到可落地的需求清单很多零售项目翻车不是因为技术选型错了而是因为一开始就没人把「业务流程」和「系统需求」这两件事对齐。我见过太多团队拿着几十页 PPT 讲门店补货、会员积分、促销引擎讲得头头是道结果开发做完第一版业务方一句「这不是我要的」直接打回重做。问题出在哪出在 PPT 里的流程是给人看的系统需求是给机器执行的中间缺了一层翻译。零售这个场景尤其明显门店、仓储、电商、客服、财务五条线交叉任何一个环节的流程断点都会变成系统里的脏数据。所以这篇笔记要聊的就是怎么把一份零售业务流程 PPT拆成开发能直接照着建表、写接口、配规则的系统需求。适合正在做零售中台、ERP 对接、门店数字化改造的工程师和产品经理尤其是那种「业务方只给了一份 PPT让你两周出方案」的情况。2. 先拆业务流程零售 PPT 里哪些图能直接用哪些是坑2.1 零售业务流程的三条主线与常见画法零售业务不管规模大小流程基本绕不开三条主线商品从采购到上架的供应链主线、顾客从进店到复购的交易主线、钱从流水到对账的财务主线。PPT 里常见的画法是泳道图横轴是角色采购员、仓管、店长、收银、财务纵轴是步骤。这种图看着清楚但直接拿来做系统需求会踩坑因为它把「人工审批」和「系统动作」画在了同一个框里。我一般会先把泳道图里的每个节点标上三种颜色绿色是纯系统自动完成黄色是系统辅助人工决策红色是纯人工线下操作。绿色节点直接对应接口或定时任务黄色节点对应工作流引擎里的待办和规则红色节点要么砍掉要么做成系统里的备注字段。这一步做完你会发现 PPT 里至少三分之一的流程节点根本不需要进系统。2.2 从泳道图到状态机的转换方法零售系统里最核心的抽象是状态机。以采购单为例PPT 上可能只画了「创建→审批→发货→收货→入库」五个框但系统里必须定义清楚每个状态之间的迁移条件、触发角色和超时策略。下面这段 Python 伪代码展示的是我常用的状态机定义方式用字典描述迁移规则方便后续直接生成数据库配置表。# 采购单状态机定义状态 - {触发事件: (目标状态, 允许角色, 超时小时)} purchase_fsm { draft: { submit: (pending_approval, [buyer], None), cancel: (cancelled, [buyer], None), }, pending_approval: { approve: (approved, [manager], 24), # 24小时未审批自动提醒 reject: (draft, [manager], None), }, approved: { ship: (shipped, [supplier], 48), # 48小时未发货触发预警 close: (closed, [buyer], None), }, shipped: { receive: (received, [warehouse], None), return: (returning, [warehouse], None), }, received: { stock_in: (completed, [warehouse], None), }, }这段代码的逻辑是每个状态只暴露有限的合法事件事件触发时校验角色权限超时字段用于生成定时任务。参数上超时小时为None表示不设超时设为数字则会在对应时间后往消息队列推一条提醒。实际落地时我会把这张字典直接存进配置表运营可以在后台改超时时间不用发版。提示状态机里不要出现「其他」「待定」这类模糊状态每个状态必须有明确的进入条件和退出条件否则后期报表统计一定对不上账。3. 系统需求怎么落从流程节点到接口和表的映射3.1 需求条目的四要素写法PPT 里的流程描述是「采购员提交采购申请经理审批后发给供应商」这句话直接给开发开发只能猜。我要求团队里的需求条目必须写成四要素触发条件、输入数据、处理规则、输出结果。上面那句话翻译过来就是触发条件是采购员点击提交输入数据是商品编码、数量、期望到货日处理规则是校验商品编码存在且数量大于零然后生成待审批任务输出结果是采购单号和一个待办消息。这四要素写清楚之后接口的入参出参基本就定了。我习惯用一张 Markdown 表格来管理需求条目字段包括需求编号、关联流程节点、四要素描述、优先级、验收标准。这张表就是后续测试用例的源头验收标准写不清楚的需求一律打回重写。3.2 用 SQL 建表验证需求完整性需求写完不能只靠人眼检查我一般会先建核心表用建表语句反向验证需求有没有遗漏。下面这段 SQL 是零售采购模块的简化版建表重点看字段和约束是否覆盖了前面状态机里的所有状态。CREATE TABLE purchase_order ( id BIGINT PRIMARY KEY AUTO_INCREMENT, order_no VARCHAR(32) NOT NULL UNIQUE COMMENT 采购单号, status VARCHAR(20) NOT NULL DEFAULT draft COMMENT 状态对应状态机, buyer_id BIGINT NOT NULL COMMENT 采购员ID, supplier_id BIGINT NOT NULL COMMENT 供应商ID, expected_date DATE COMMENT 期望到货日, total_amount DECIMAL(12,2) DEFAULT 0.00 COMMENT 总金额, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_status_created (status, created_at), INDEX idx_supplier (supplier_id) ) COMMENT采购单主表; CREATE TABLE purchase_order_item ( id BIGINT PRIMARY KEY AUTO_INCREMENT, order_id BIGINT NOT NULL, sku_code VARCHAR(64) NOT NULL COMMENT 商品编码, quantity INT NOT NULL DEFAULT 0, unit_price DECIMAL(10,2) NOT NULL DEFAULT 0.00, received_qty INT NOT NULL DEFAULT 0 COMMENT 实收数量, INDEX idx_order (order_id), INDEX idx_sku (sku_code) ) COMMENT采购单明细表;建表时我会重点检查三件事状态字段的枚举值是否和状态机完全一致、明细表的received_qty是否支持部分收货、索引是否覆盖了最频繁的查询条件按状态和时间筛选、按供应商筛选。如果 PPT 里提到「支持部分收货」但明细表只有一个总数量字段那就是需求没落到位。3.3 接口清单与流程节点的对齐检查表建好之后把状态机里的每个事件映射成一个接口列成清单。比如submit对应POST /purchase/submitapprove对应POST /purchase/approve。清单里要标注每个接口的调用方前端页面、定时任务、外部系统和幂等要求。零售场景里收货接口经常被仓库的 PDA 重复调用幂等必须做在服务端用order_no sku_code做唯一键去重。这一步做完拿着接口清单和状态机图再对一遍 PPT如果发现某个流程节点找不到对应的接口或表字段要么是 PPT 画了不需要系统做的事要么是需求漏了。我一般会在这个环节揪出三到五个遗漏点比如退货流程里的「质检结果」字段、促销流程里的「分摊金额」字段。4. 避坑与排查零售需求落地时最容易翻车的五个地方4.1 现象库存对不上系统显示有货实际没货原因采购入库和销售出库用了两套库存表或者入库时没扣减在途库存。零售 PPT 里经常只画「入库」一个框但实际系统里在途、在库、锁定三种库存状态必须分开。 解决建一张库存流水表所有库存变动只通过流水记录当前库存由流水汇总得出。入库时增加在库、减少在途销售时增加锁定、减少在库。4.2 现象促销规则上线后订单金额算错原因PPT 里的促销描述是「满100减20」但没定义叠加规则和优先级。多个促销同时命中时系统按什么顺序计算是折上折还是取最优需求里没写。 解决在需求阶段就定义促销引擎的规则模型每条促销带优先级和互斥组计算时按优先级排序互斥组内只取最优。测试用例必须覆盖两两叠加的场景。4.3 现象审批流卡住单据一直挂在待审批原因状态机里定义了审批节点但没定义审批人离职或请假时的代理规则。零售企业人员流动大审批人一换单据就死在那里。 解决审批节点配置里增加代理人和超时自动升级规则超时未审批自动转给上级。定时任务每小时扫一次超时待办。4.4 现象门店和电商订单号重复对账对不上原因不同渠道各自生成单号没有全局唯一约束。零售 PPT 里渠道是分开画的但财务对账需要统一视角。 解决单号生成规则里加渠道前缀或者用全局发号器。数据库层面order_no加唯一索引插入冲突时直接报错而不是静默覆盖。4.5 现象需求评审通过开发说做不了原因需求条目里写了「根据历史销售数据智能推荐补货量」但没定义数据来源、计算频率和兜底策略。这种模糊描述在零售 PPT 里特别常见。 解决把智能推荐拆成可执行的规则比如「取过去四周同星期几的平均销量乘以安全系数1.2向上取整」。数据来源、计算时机、异常兜底全部写进需求条目。5. 用一份检查清单把 PPT 锁死成可开发的需求最后一章说一个我用了三年的习惯每次拿到零售业务流程 PPT先花半小时填一份检查清单填不完就不进开发。清单不长但能挡住八成返工。检查项通过标准常见不通过原因流程节点分类每个节点标了绿/黄/红把人工审批画成了系统自动状态机完整性每个状态有进入/退出条件存在「其他」状态需求四要素触发/输入/规则/输出齐全只写了「系统处理」表字段覆盖状态枚举与状态机一致漏了部分收货、质检结果接口幂等写操作有唯一键去重依赖前端防重异常兜底超时、离职、数据缺失有策略只写了正常流程填完清单我会挑三个最复杂的流程节点手动画一遍数据流转从用户点击到数据库落库中间经过哪些服务、哪些表、哪些消息。画的过程中如果发现某个字段在两个服务里含义不一致比如「数量」在采购服务里是含税数量、在库存服务里是不含税数量那就必须在需求里统一口径否则上线后一定出脏数据。这个习惯帮我省过很多后悔药。有一次促销模块上线前我在检查清单里发现「优惠分摊」字段在订单表和结算表里精度不一样一个是两位小数一个是四位小数差一分钱。就这一分钱财务对账时差了十几万。后来统一用四位小数存储展示时再截断。需求文档不是写完就完了它得能直接翻译成建表语句和接口定义。如果一份零售业务流程 PPT 经过这套流程处理之后开发拿着需求条目就能写代码测试拿着验收标准就能写用例那才算真正落地。希望帮到你。本文还有配套的精品资源点击获取