#226 为三个已处理 Excel 对应的 PDD 规格回填了正式价格,并按用户要求把商品标记为已采集;但这些规格原本来自 shopee_backfill 骨架,available 仍为空、availability_status 仍为 unknown。SYB 详情只把 available=true 的 SKU 作为可购买规格,因此出现“PDD 详情有规格和价格,SYB 却没有可购买规格组合”的状态矛盾。
shopee_backfill
available
availability_status
unknown
available=true
生产示例:SYB 订单 2608139P0EJWFD、蝦皮商品 56664206910 关联 PDD 934053028134,有 8 个完整 SKU 且价格均为 6120 分,但可购买 SKU 数为 0,无法保存规格映射并创建采购任务。
2608139P0EJWFD
56664206910
934053028134
用户确认这批 PDD 商品不再通过 Client 采集,三个 Excel 中已确认的完整规格和正式价格直接作为采购候选;Client 真正下单时仍必须按既有门禁核对商品、���格、数量和价格,不自动付款。
qwg8fkb044
spec_source=shopee_backfill
availability_status=unknown
skus_json
available=true/false
skus_json/collect_status/updated_at
admin/cmd/confirm-backfilled-pdd-availability/
admin/service/
admin/repository/
collect_status
从 admin/ 执行:
admin/
go test ./... -count=1 go vet ./... go run ./cmd/confirm-backfilled-pdd-availability -dir ../raw_data go run ./cmd/confirm-backfilled-pdd-availability -dir ../raw_data -apply
生产执行前先完整备份数据库并 dry-run;应用后使用只读 SQL 核对候选数、可购买 SKU 数、字段未变化,以及指定 SYB 详情的规格候选。
abc37db
fix: 确认回填PDD规格可用于采购 (#227)
4d6ee8c
docs: 归档任务 #227
docs/task/227-确认回填PDD规格可用于采购.md
GOTOOLCHAIN=go1.23.0
go test ./... -count=1
go vet ./...
CGO_ENABLED=0
collected
cmautobuy-admin
/opt/cmautobuy/backups/autobuy-before-227-20260814T090931Z-notablespaces.sql.gz
0600
/tmp/cmautobuy_xlsx_availability_backup_484364457.json
/opt/cmautobuy/maintenance/227-abc37db/
未使用登录后的浏览器人工打开 SYB 详情;采购员尚未保存示例订单的规格映射,未创建真实采购任务,也未执行 Client 真机下单或付款。
No dependencies set.
The note is not visible to the blocked user.
基本信息
要解决什么
#226 为三个已处理 Excel 对应的 PDD 规格回填了正式价格,并按用户要求把商品标记为已采集;但这些规格原本来自
shopee_backfill骨架,available仍为空、availability_status仍为unknown。SYB 详情只把available=true的 SKU 作为可购买规格,因此出现“PDD 详情有规格和价格,SYB 却没有可购买规格组合”的状态矛盾。生产示例:SYB 订单
2608139P0EJWFD、蝦皮商品56664206910关联 PDD934053028134,有 8 个完整 SKU 且价格均为 6120 分,但可购买 SKU 数为 0,无法保存规格映射并创建采购任务。用户确认这批 PDD 商品不再通过 Client 采集,三个 Excel 中已确认的完整规格和正式价格直接作为采购候选;Client 真正下单时仍必须按既有门禁核对商品、���格、数量和价格,不自动付款。
做什么 / 不做什么
qwg8fkb044对应的 PDD 商品。spec_source=shopee_backfill、商品已采集、SKU 选项完整、正式价格大于 0、available为空且availability_status=unknown的 SKU 写入available=true,并删除过期的availability_status标记。skus_json和状态,使用单事务及原值乐观锁更新,应用后复核目标订单能够出现规格候选。available=true/false的真实结果;不修改价格、规格选项、库存、列表价和商品关联;不自动保存规格映射、不创建采购任务、不下单、不付款;不新增字段或表。怎么做
skus_json,整件商品必须满足安全条件后才纳入候选;任一 SKU 有真实可售值、空选项、非正价格或结构异常时整件跳过并统计原因,避免形成半修复数据。available=true,删除availability_status;保留spec_source=shopee_backfill作为来源标记。skus_json/collect_status/updated_at乐观锁更新,任一冲突整批回滚。admin/cmd/confirm-backfilled-pdd-availability/、admin/service/、admin/repository/及测试;不修改页面、数据库结构或 Client 接口。验收标准
qwg8fkb044的关联 PDD。shopee_backfillSKU 被确认为available=true。available=true/false、异常 JSON、空规格、非正价格、非目标来源和非目标商品不被修改。collect_status保持不变。934053028134的 8 个规格成为可购买候选,SYB 订单2608139P0EJWFD详情不再显示“没有可购买的规格组合”。怎么验证
从
admin/执行:生产执行前先完整备份数据库并 dry-run;应用后使用只读 SQL 核对候选数、可购买 SKU 数、字段未变化,以及指定 SYB 详情的规格候选。
风险和回退
skus_json,并再次核对采购链路。实施完成,待用户验收
abc37db(fix: 确认回填PDD规格可用于采购 (#227))4d6ee8c(docs: 归档任务 #227)docs/task/227-确认回填PDD规格可用于采购.md验证结果
GOTOOLCHAIN=go1.23.0的go test ./... -count=1:通过GOTOOLCHAIN=go1.23.0的go vet ./...:通过CGO_ENABLED=0构建:通过available=true且价格非空;available空值和availability_status残留均为 0934053028134:保持collected,8 个规格选项非空、均为available=true、价格均为 6120 分cmautobuy-admin保持运行,登录页返回 HTTP 200备份与清理
/opt/cmautobuy/backups/autobuy-before-227-20260814T090931Z-notablespaces.sql.gz,权限0600,gzip 完整性检查通过/tmp/cmautobuy_xlsx_availability_backup_484364457.json,1,735 项,权限0600/opt/cmautobuy/maintenance/227-abc37db/未验证
未使用登录后的浏览器人工打开 SYB 详情;采购员尚未保存示例订单的规格映射,未创建真实采购任务,也未执行 Client 真机下单或付款。