外卖系统源码交付争议,多半不在代码质量,而在「/app 与 /data 是否一起交权」。本文用目录约定与验收清单说明如何把归属一次说清。
结论
交付清单宜写明源码目录与业务数据目录分离,测试单号贯穿下单与导出。财务签字应在客户 VPC 内完成导出空跑,而不是只看供应商屏幕演示。
/delivery/ app/ # 可编译源码与配置模板 data/ # 运行时订单库(客户云账号) backup/ # 定时快照与 binlog 策略 export/ # 导出产物与 cron 说明一、app 层交付物
源码仓库、构建脚本、环境变量模板(无生产密钥)、迁移脚本。禁止把生产连接串提交进 Git。交付演示在客户 fork 上编译通过,并说明升级回滚步骤。
app 层变更不应要求财务重新学导出;若发版影响导出列,应走映射版本流程并单独通知财务,而不是混在功能 release note 里一笔带过。
二、data 层交付物
库实例 ID、读写账号、只读导出账号、备份策略文档。客户 root 或 RAM 主账号下创建,供应商协助配置后移交。只读账号权限应可审计,避免日后误授 UPDATE。
备份恢复演练宜在非高峰做,确认恢复后导出任务仍能执行、路径未变。恢复后重复导同一测试单号,断言 CSV 列与金额仍正确。
三、export 层验收
固定 order_id 走 API 或后台导出,断言列与后台查询一致。定时任务位于客户账号函数计算或 ECS,不绑供应商个人账号。
部分退样本宜在试跑期造出,别等真实退款周才第一次测负向行。负向行与正向行宜在同一模板,避免财务维护第二套退款专用表。
四、压测与连接池
下单服务与导出 Worker 分连接池;高峰导出改异步。压测报告写清峰值 TPS 与数据库 CPU,供客户选型规格。
压测宜先模拟下单峰值,再决定先升数据库还是先加应用副本。只加 ECS 而 RDS 已饱和,扩容预算会白花。
五、光合同城边界
源码私有化交付含上述清单模板;定制报表另里程碑。商务规则由客户确定;系统侧不抽成客户平台订单。
交付邮件抄送财务与运维,三方同日签字,比只有开发确认更能防扯皮。第二城复制时宜带走 export schema 与测试单模板。
六、小结
一次说清 app、data、export 三份归属,比事后迁库、改定时任务便宜一个数量级。加盟纠纷复盘时,订单快照与导出模板版本号是最硬的证据链。
改价或改配送规则后,宜抽进行中单与新单各三笔对照快照是否符合预期,并把结果写入变更记录。源码升级窗口内重复跑 golden 导出 diff,若列缺失在切换流量前回滚。交接邮件把库账号、备份路径、导出 RAM 子账号写进同一表格,法务尽调不必再向供应商要第二遍材料。
私有化客户宜在 CI 里每周跑一次 export 回归,防止运维误改连接串后 silently 缺列。第二城复制时带走 app/data/export 三份清单模板,禁止口头约定列名与 cron 路径。招标附件宜直接粘贴交付清单五页模板,减少签约后再补「导出权限算不算源码」的争议。
实施方退场前宜完成一次财务主导的导出课,开发可在旁答疑,但不应代替财务点击导出按钮。库归属答案应是客户云账号下的实例 ID,而不是供应商 SaaS 租户号。