蝦皮数据模块此前整个是骨架,四个入口全返回 501,excelize 连依赖都没装。 本工单做导入和列表,Save/Delete/Collect 保持 501。 真实样本实测:5195 个商品 / 6092 个 SKU,23 行解析失败。 upsert 白名单式,pdd_goods_url / pdd_goods_id 既不在 INSERT 列清单里 也不在 DO UPDATE SET 里。报表没有这两列,写进去就是写空值——操作员 攒几周的 PDD 链接会被一次导入洗光,而且不报错,等到建采购任务才发现。 有独立测试守着:往 DO UPDATE SET 里加回这一行,测试立刻变红。 按 sheet 名字取「最佳表現商品」,不用第 0 个。工作簿有 5 个 sheet, 另外 4 个是广告报表,连 商品規格ID 列都没有;蝦皮调顺序时按下标 会静默导入一张完全不相干的表。 按列名找索引。40 列里 32 列是统计指标,蝦皮加一列所有列号就错位, 而且不报错——会把「點擊率」当成「商品規格」存进去。 规格解析三种格式:含【】53.4%、逗号+空格 26.4%、只有逗号 20.2%, 只认【】会漏掉 46.6%。括号不配对(21 行)和右半整个被【】包住(2 行) 一律判整体失败,不逐段硬凑——错法不统一,针对每种错法写规则等于在猜, 而且没有人工核对过的正确答案可验证。失败时 color/size/advice 必须全空, 原文存进 spec_raw 交人工补。 不写 DELETE + INSERT 的全量替换,将来手动新增的 SKU 会被删掉。 excelize v2.9.1 的 go 指令正好是 1.23.0,与项目固定版本一致。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
testdata
自动化测试用的脱敏小样本放这里,要提交进 Git。
否则别人拉下仓库跑 go test ./... 会失败。
蝦皮 Excel 导入测试(工单 #38)
没有提交静态的 shopee_sample.xlsx。 固件改成用 excelize 在
admin/service/shopee_import_test.go 里现造(见 buildShopeeWorkbook),
测试跑到时临时生成、测试结束自动清理。
选择现造而不是提交一个二进制文件的原因:xlsx 是二进制格式,PR 里看不出 改了什么,审查只能"信任"文件内容;现造的话,固件长什么样直接写在 测试代码里,一眼能看到覆盖了哪些场景。
覆盖的场景(对应工单 #38 的要求):
- 商品汇总行(
商品規格ID是-); - SKU 行,规格原文用**带【】**的格式,如
黑色,M【建議40-50公斤】; - SKU 行,规格原文用空格分隔的格式,如
卡其色拼黑色,L 建議50-57.5kg; - SKU 行,只有颜色和尺码、没有建议,如
黑色,M; - 颜色自己也带【】的格式,如
黑色 【夏裝單件T恤】,L 【57.5/70公斤】; - 括号不配对的脏数据(真实样本里的 21~23 行),验证
parse_ok=0且不瞎猜; - 表头缺列、sheet 名不对;
- 已有人工填的
pdd_goods_url/pdd_goods_id,验证导入不覆盖; - 已有
is_manual = 1的人工新增 SKU,验证导入不删除; - 同一个文件导入两次,验证不产生重复行。
真实样本 raw_data/蝦皮数据样本.xlsx(需向项目负责人索取,
含商业数据,已在 .gitignore 里排除)仍然用于人工验证,
不用于自动化测试——1.9MB,每次跑测试都读一遍太慢。
相关规定见 docs/admin/06-quality-security.md §2.1。