本地生活平台搭建交付后,财务能否独立导出核对,取决于 export schema 是否版本化、权限是否与改价分离。未版本化的列名变更会导致历史周结无法复算。
结论
导出任务异步生成文件,读取订单快照字段;改价只影响新单,进行中单以 snapshot_json 为准。
defbuild_export_row(order:Order)->dict:snap=order.snapshotor{}return{"order_id":order.id,"business_line":order.business_line,"amount":snap.get("pay_amount",order.amount),"finished_at":order.finished_at,"is_test":order.is_test,}snapshot_json 宜在下单时写入 pay_amount、delivery_fee、discount 明细,导出只读 snapshot,避免事后改价影响历史。
实施时建议固定 golden 样本单号,在预发与生产各留用户端、后台、导出三处截图;列名或状态枚举变更走书面版本号,避免财务周结时才发现对不上历史单。
一、权限模型
导出权限 role 与改价 role 分离。财务账号可 download_export,不可 edit_price。审计日志记录导出人、时间范围、过滤条件。
role_export 与 role_pricing 分离;审计表记录 ip、operator、filter_json。
实施时建议固定 golden 样本单号,在预发与生产各留用户端、后台、导出三处截图;列名或状态枚举变更走书面版本号,避免财务周结时才发现对不上历史单。
二、测试单过滤
is_test 或 order_id 前缀标记试跑单。报表 API 默认WHERE is_test = false,运营专项查询可显式包含。
SELECT*FROMordersWHEREcreated_atBETWEEN?AND?ANDis_test=0ANDstatus='finished';is_test 在 create order API 层校验前缀或白名单用户。
实施时建议固定 golden 样本单号,在预发与生产各留用户端、后台、导出三处截图;列名或状态枚举变更走书面版本号,避免财务周结时才发现对不上历史单。
三、多业务列
business_line 列必选,财务按类型 pivot。新增业态不新增文件格式,只扩展枚举值。列名变更 bump schema_version,旧文件保留 sample 供对账。
schema_version 表驱动 CSV 列头;migration 脚本保留旧版 mapper。
实施时建议固定 golden 样本单号,在预发与生产各留用户端、后台、导出三处截图;列名或状态枚举变更走书面版本号,避免财务周结时才发现对不上历史单。
四、异步导出与幂等
大日期段导出走队列,同一 request_id 重复点击返回同一文件 URL。避免财务连点生成多份不一致文件。
export job 幂等键 request_id;失败重试不生成第二文件。
实施时建议固定 golden 样本单号,在预发与生产各留用户端、后台、导出三处截图;列名或状态枚举变更走书面版本号,避免财务周结时才发现对不上历史单。
五、私有化验收
导出任务跑在客户环境,对象存储或本地路径可配置。交付时空跑一次全量导出,核对行数与后台 count 一致。
私有化 bucket 路径可配置;交付空跑全量 export 对 count。
实施时建议固定 golden 样本单号,在预发与生产各留用户端、后台、导出三处截图;列名或状态枚举变更走书面版本号,避免财务周结时才发现对不上历史单。
六、光合同城边界
国内综合版含基础导出与多业务字段;定制列映射、ERP 对接单列。商务结算规则由客户确定,系统侧不抽成客户平台订单。
ERP 适配器读 export 文件或 API,不直连改订单表。
实施时建议固定 golden 样本单号,在预发与生产各留用户端、后台、导出三处截图;列名或状态枚举变更走书面版本号,避免财务周结时才发现对不上历史单。
七、回归用例与 CI 建议
在 CI 中固定一笔 golden order_id:创建订单后断言 snapshot_json 含 pay_amount;mock 支付后 status=paid;触发 export job 后断言 CSV 列头与 schema_version 一致。每次改 export mapper 或改价逻辑都跑该 job,diff 仅允许预期列变化。财务签字样本文件存入 docs/finance/sample_v3.csv,作为生产切换依据。
私有化环境 export 文件落盘路径、保留天数、权限 ACL 宜在交付清单写明。运营误删导出文件不应影响库内订单,但会影响对账,故下载记录与文件 hash 建议留存 ninety 天。大促前重复跑 export 压测,确认队列不会拖垮下单接口。
八、小结
导出能否自己核对,看 schema 版本、测试单过滤、快照金额三件套。上线前财务签字 sample CSV,后续变更走书面流程。
退款单宜单独 status 与 export 标识,避免与完成单重复计营收。多站点导出加 region 过滤,防止分站误拉全平台数据。导出失败重试应告警,避免财务以为无单实为任务挂掉。
退款行 export status=refunded 单独标识,避免与 finished 双计。