#146 已把三个已处理 Excel 的 2075 个蝦皮商品、33049 条规格导入生产库。由于源文件只有“变种属性值一/二”,没有维度名称,当时严格保留 spec_raw,颜色、尺码为空且 parse_ok=false,因此 Admin 将这些规格显示为“待补”。
spec_raw
parse_ok=false
用户确认本任务采用“只自动转换能够确定的规格,歧义数据继续待补”的原则。不得为追求全量正式化而猜测颜色和尺码。
color
size
parse_ok=true
fill_missing
_test
spec_raw/spec_key
tools/import_catalog_xlsx.py
POST /api/v1/integrations/catalog/batches
is_manual=1
预计修改:
tools/test_import_catalog_xlsx.py
docs/admin/10-商品目录接入接口.md
docs/task/<工单号>-蝦皮规格确定性正式化.md
从仓库根目录执行:
python -m unittest tools.test_import_catalog_xlsx python tools/import_catalog_xlsx.py --dry-run
从 admin/ 使用固定 Go 1.23 执行:
admin/
go build ./... go test ./... -count=1 go vet ./...
使用独立 MySQL 8.4、库名以 _test 结尾验证目录接口补空、人工保护、批次幂等和前后不变量。生产提交命令中的 Token 只从当前进程环境变量读取,不记录明文。
30bdab3
--formalize-specs
xlsx-spec-v1
D:\chengma\cmautobuy_private_backups\autobuy-before-152-20260811T143430.sql.gz
357c54eb21e633cd814e2588fe3bdd6407cb5504abd6689323c93002bd790512
用户已把现有商品目录 Token 临时填写到本地受 Git 忽略的配置中,并要求继续线上转换。生产账号没有创建 _test 库权限,因此本次无法完成独立 MySQL _test 演练;该缺口不通过放宽数据库权限解决。
本任务不涉及 schema 或 Admin 代码部署,生产现有目录接口已完成 #146 的真实 33049 SKU 导入。采用替代门禁:Python 转换测试、Admin Go build/test/vet、现有目录 fill_missing/人工保护测试、真实 Excel dry-run、生产只读基线、完整 mysqldump 备份与 gzip/SHA-256 校验均已通过;正式请求仍逐批事务、幂等、首错停止。提交后必须核对总 SKU=33049、正式=31178、待补=1871、人工=0、规格身份 XOR/SUM 不变且 11 批全部 succeeded。若任一不变量不成立,立即停止并按备份回退,不继续归档。
goods_id/spec_key/spec_raw
1848061991
70664155756801
shopee_products
实现和生产数据修复均已完成,下一步写入 docs/task/152-蝦皮规格确定性正式化.md 并提交归档。独立 MySQL _test 因生产账号无建库权限未执行,已由前一条评论记录替代门禁和理由。
docs/task/152-蝦皮规格确定性正式化.md
feat: 确定性转换蝦皮待补规格 (#152)
2629e41
docs: 归档任务 #152
未验证项已在归档明确记录:未执行独立 MySQL _test 演练、未逐行人工检查全部正式规格、未执行备份恢复演练。
用户于 2026-08-12 明确验收通过。已确认本地归档 docs/task/152-蝦皮规格确定性正式化.md 存在,现关闭工单。
No dependencies set.
The note is not visible to the blocked user.
基本信息
要解决什么
#146 已把三个已处理 Excel 的 2075 个蝦皮商品、33049 条规格导入生产库。由于源文件只有“变种属性值一/二”,没有维度名称,当时严格保留
spec_raw,颜色、尺码为空且parse_ok=false,因此 Admin 将这些规格显示为“待补”。用户确认本任务采用“只自动转换能够确定的规格,歧义数据继续待补”的原则。不得为追求全量正式化而猜测颜色和尺码。
做什么 / 不做什么
color、size并提交parse_ok=true。fill_missing,使用新的转换器版本和批次 ID,保留导入审计、人工字段保护和幂等能力。_test数据库或生产备份副本演练,再提交生产并做只读核对。spec_raw;不改变spec_raw/spec_key、真实 SKU ID、商品/PDD 关联或人工维护字段。已确认的实现方案
tools/import_catalog_xlsx.py中保留现有原文组合逻辑,新增独立、可测试的“商品级规格维度判定”步骤。POST /api/v1/integrations/catalog/batches。fill_missing,不得覆盖is_manual=1。spec_raw/spec_key不变;正式数只增加、待补数按预检减少;人工记录不变;无新增重复规格或失败批次。预计修改:
tools/import_catalog_xlsx.pytools/test_import_catalog_xlsx.pydocs/admin/10-商品目录接入接口.mddocs/task/<工单号>-蝦皮规格确定性正式化.md验收标准
parse_ok=false。spec_raw,不伪造真实 SKU ID,不把歧义规格强制标记为正式。fill_missing只补空字段,人工记录和已有正式字段不被覆盖。_test演练通过,商品/SKU 总数、规格身份和人工字段不变量成立。验证方式
从仓库根目录执行:
从
admin/使用固定 Go 1.23 执行:使用独立 MySQL 8.4、库名以
_test结尾验证目录接口补空、人工保护、批次幂等和前后不变量。生产提交命令中的 Token 只从当前进程环境变量读取,不记录明文。风险和回退
fill_missing不提供自动删除语义。生产执行前必须生成可读备份;若发现系统性误判,暂停后续批次,并用本次备份按审批执行数据库级回退。实施进度(2026-08-11)
30bdab3。--formalize-specs模式;普通原始导入不变。正式化批次只提交确定 SKU,强制fill_missing,歧义商品保持待补。xlsx-spec-v1批次。规格身份校验值已记录。D:\chengma\cmautobuy_private_backups\autobuy-before-152-20260811T143430.sql.gz,4263529 字节,SHA-256357c54eb21e633cd814e2588fe3bdd6407cb5504abd6689323c93002bd790512,已完整解压读取验证。_test库,测试库未创建;此项未完成。生产执行门禁调整
用户已把现有商品目录 Token 临时填写到本地受 Git 忽略的配置中,并要求继续线上转换。生产账号没有创建
_test库权限,因此本次无法完成独立 MySQL_test演练;该缺口不通过放宽数据库权限解决。本任务不涉及 schema 或 Admin 代码部署,生产现有目录接口已完成 #146 的真实 33049 SKU 导入。采用替代门禁:Python 转换测试、Admin Go build/test/vet、现有目录
fill_missing/人工保护测试、真实 Excel dry-run、生产只读基线、完整 mysqldump 备份与 gzip/SHA-256 校验均已通过;正式请求仍逐批事务、幂等、首错停止。提交后必须核对总 SKU=33049、正式=31178、待补=1871、人工=0、规格身份 XOR/SUM 不变且 11 批全部 succeeded。若任一不变量不成立,立即停止并按备份回退,不继续归档。生产执行结果
xlsx-spec-v1批次 succeeded,0 failed、0 processing。goods_id/spec_key/spec_raw身份校验:XOR1848061991、SUM70664155756801,与执行前完全一致。shopee_products总数仍为 5451;正式化请求没有提交商品、PDD 商品或关联。实现和生产数据修复均已完成,下一步写入
docs/task/152-蝦皮规格确定性正式化.md并提交归档。独立 MySQL_test因生产账号无建库权限未执行,已由前一条评论记录替代门禁和理由。完成与归档
30bdab3feat: 确定性转换蝦皮待补规格 (#152)2629e41docs: 归档任务 #152docs/task/152-蝦皮规格确定性正式化.md未验证项已在归档明确记录:未执行独立 MySQL
_test演练、未逐行人工检查全部正式规格、未执行备份恢复演练。用户于 2026-08-12 明确验收通过。已确认本地归档
docs/task/152-蝦皮规格确定性正式化.md存在,现关闭工单。