
海外版外卖源码私有化部署后导出能力往往是「有接口、无验收」开发知道 URL财务从未在客户环境空跑。本文用固定测试单说明导出接口验收步骤与常见漏项。结论导出应独立 Worker、只读账号、异步写文件验收用固定 order_id 断言后台、文件、用户端三处一致。交付验收不是开发自测通过即可财务必须在客户 VPC 内亲手拉到文件并与后台订单页逐字段对照签字后才算导出能力移交完成。defexport_order_csv(order_id:str,out_path:str)-None:roworder_repo.get_readonly(order_id)withopen(out_path,w,encodingutf-8-sig)asf:writercsv.DictWriter(f,fieldnamesEXPORT_COLUMNS)writer.writeheader()writer.writerow(row.to_export())一、只读库账号与写库分离导出 Worker 使用只读 replica 或只读用户避免与下单争抢锁。生产写账号不应出现在导出脚本配置里。验收时检查连接串权限对 orders、refunds 表仅有 SELECT无 DROP、UPDATE。建议在交付文档附 SQL 权限截图财务与 DBA 各存一份避免后人误授写权限给导出脚本。压测导出与压测下单应分环境执行防止导出慢查询拖垮写库。二、异步任务与对象存储大表导出走队列完成后把文件落到对象存储并返回 signed URL而不是 HTTP 同步阻塞。验收关注任务失败是否重试、重复点击导出是否幂等、文件保留天数是否符合财务审计要求。任务 ID 应可查询状态前端轮询超时时运维能根据 ID 在日志里定位而不是用户重复点击产生多份不一致文件。对象存储生命周期策略要与周结保留期对齐避免自动删档后无法补导历史周。三、字段映射与部分退导出列应含 refund 关联字段部分退为负向行。验收用一笔「下单—部分退—再下单」序列断言行数与金额符号。通道账单若只有总额映射表宜书面维护并版本化。映射表变更应 bump 版本号与财务签字绑定开发私下改列顺序会导致历史周结无法对比。负向行与正向行宜在同一 CSV 模板里避免财务维护第二套退款专用表。四、鉴权与限流API Key 或 mTLS 二选一限流 per key防止试跑被扫。日志记录导出人与时间范围满足后续审计。禁止无鉴权全量导出接口暴露在公网。密钥轮换宜有双 Key 过渡期避免财务夜班导表时 Key 刚好失效。安全组规则变更后应重新跑导出空跑确认内网财务跳板机仍能访问导出服务。五、备份恢复回归恢复昨日备份后重新触发导出同一 order_id断言文件仍生成且路径正确。定时任务与环境变量常在恢复后丢失这一项最易漏。恢复演练宜写进季度运维日历不是「上线前做一次就忘」。恢复后除了导出还应抽测支付 notify 是否仍指向正确回调地址避免只验导出、忽略链路半断。六、光合同城边界海外版源码交付含导出说明与样本脚本定制报表另议。商务规则由客户确定系统侧不抽成客户平台订单。样本脚本在客户 CI 里每周跑一次 golden export diff防止升级后 silently 缺列。第二城复制时宜带走 export schema 版本与测试单模板禁止分站私改列名导致总部无法汇总。七、小结部署后导出验收等于只读账号、异步任务、固定单号三处对照再加备份后回归不是「curl 能返回 200」。上线后每次大版本升级宜重复跑同一 golden order 导出 diff若列缺失或金额列错位在升级窗口内回滚比开业后才发现少一列更可控。