返回开发日志
飞书多维表同步工具2026-07-10v4.1.1

字段映射表与网页版Excel列名对齐(Task 5+6 数据一致性验证)

bug修复v4.1.1

需求描述

Task 5+6 数据一致性验证:同一时间点分别用领星API方式和网页自动化方式下载"补货建议"和"本地库存"两个报表,对比字段标题(列名)和核心数据值。首次对比发现字段映射表(v2.0)中大量API字段名对应的Excel列名与网页版实际导出的Excel列名不一致,需根据网页版实际列名修正字段映射表,确保API下载的报表字段标题与网页自动化/人工导出的完全一致。

验证方法

  1. API阶段:调用 LingxingAPIDownloader.fetch_data(task) 获取DataFrame,保存为xlsx
  2. 网页阶段:调用 LingxingDownloader.run_task(task) 下载xlsx(基于Playwright)
  3. 对比阶段:读取两个xlsx,对比字段标题(列名集合差异)、行数、核心数据值(按主键ASIN/SKU匹配行,对比共有字段值)

验证数据规模

  • 补货建议:API 2157行26列,网页 3879行98列(网页版含更多维度数据)
  • 本地库存:API 2692行18列,网页 2692行57列(行数完全一致)

改动文件清单

文件类型改动内容
erp/lingxing_field_mapping.py修改补货建议字段映射修正12处(可售数量→可售、FBA可售→FBA库存、本地可用库存→本地可用、在途库存→本地仓在途、7天日均销量→7天日均、30天日均销量→30天日均、预估销量→销量预测、建议采购数量→建议采购量、可售天数→可售天数(总)、FBA可售天数→可售天数(FBA)、断货日期→断货时间、关注→关注标识);本地库存字段映射修正4处(总库存→实际总量、可用库存→可用量、锁定量→可用锁定量、在途库存→待到货量)+去重1处(删除stock_price与stock_cost重复);默认选中字段同步更新
erp/lingxing_api_downloader.py修改_filter_zero_inventory 方法引用的字段名同步更新:本地库存过滤字段"总库存"→"实际总量",补货建议过滤字段"可售数量"→"可售"
gui_sync.py修改版本号 4.1.0→4.1.1

技术要点

  1. 字段映射对齐原则:以网页版实际导出的Excel列名为准,API字段名(点号表示嵌套路径如amazon_quantity_info.amazon_quantity_valid)映射后必须与网页版列名完全一致
  2. API独有字段保留:部分API返回字段在网页版无直接对应(如afn_reserved_quantity→"预留库存"、sc_quantity_oversea_valid→"海外仓可用"、out_stock_flag→"断货标识"、restock_status→"补货状态"、sync_time→"同步时间"、good_lock_num→"好品锁定量"、wid→"仓库ID"),保留映射并在注释中标明"网页版无直接对应"
  3. 重复映射去除:本地库存原映射中stock_cost→"单位库存成本"和stock_price→"单位库存成本"指向同一Excel列名,删除stock_price避免反向映射歧义
  4. 0库存过滤字段同步_filter_zero_inventory方法根据报表类型选择过滤字段,字段名必须与映射表中的Excel列名保持一致,否则会跳过过滤

验证结果

  • 修正前:补货建议仅10/26字段一致(16个不一致),本地库存仅12/18字段一致(6个不一致)
  • 修正后:补货建议22/26字段一致(4个API独有字段网页版无对应),本地库存16/18字段一致(2个API独有字段网页版无对应)
  • 数据值对比:本地库存840共有行0差异(完全一致);补货建议MSKU差异86/947行(API取数组第一个元素的msku,网页版返回多个MSKU用顿号分隔,属设计差异非数据错误)
  • 行数差异说明:补货建议API 2157行 vs 网页3879行,因API按ASIN维度返回(data_type=1),网页版包含更多维度数据(如MSKU/SKU维度展开);本地库存2692行完全一致

踩坑与解决

  • 字段映射表v2.0凭推测设置:初版字段映射表的Excel列名是凭对报表的理解推测设置的(如"可售数量""FBA可售""本地可用库存"等),未与实际网页导出的Excel列名核对,导致大量不一致。解决方法:以网页版实际导出的Excel列名为准逐项修正
  • PowerShell不支持&&命令链:运行 python -m py_compile xxx.py && echo "OK" 报错。解决方法:改用 ; 分隔命令
  • 补货建议行数差异属维度不同:API的data_type=1按ASIN维度返回,网页版导出包含多维度展开数据,非数据缺失

下一阶段规划

  • 领星API下载改造项目(add-lingxing-api-download spec)所有12个Task已完成,checklist全部勾选
  • 后续可考虑:补货建议API支持多维度返回(data_type参数扩展)、本地库存API补充商品名称和仓库名称字段