下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/cangxiaodie--retaidiy-packgoods-merge.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @cangxiaodie/retaidiy-packgoods-merge。根据商品的国标条码信息补齐供应商自编采购码信息,适合使用热店云ERP的海外用户。用户只需提供一张报表,本 skill 用内置组合关系库按商品条码(编码兜底)查对应关系,把「供应商进货码」「进货包装」两列追加到表格末尾。支持 csv/xlsx、GBK/UTF-8 编码,表头与标题行位置自动识别。
阅读全文 (展开查看完整说明)
概述
补齐报表的供应商自编采购码
Overview
用户只丢进一张报表,本 skill 用内置组合关系库按商品的国标条码自动匹配,在表格的最后面追加两列:供应商进货码、进货包装。
原有字段的顺序和内容完全不变,行数不变。
匹配规则:条码优先,编码兜底
| 优先级 | 输入表列 | 查关系库的 |
|---|---|---|
| 1 | 条码 / 商品条码 / 条形码 | 子商品条码 |
| 2 | 编码 / 商品编码 / 商品代码 | 子商品编码 |
条码查不到时才用编码。两列都查不到则留空,不报错。
两个键有哪个用哪个:表里只有条码也能跑,只有编码也能跑,两个都有则条码优先。列名支持常见别名(条码、商品条码、条形码 / 编码、商品编码、商品代码)。
内置组合关系库
固化在 assets/packgoods_db.csv,不需要用户每次提供 pack goods 表。
- 四列:
子商品编码, 子商品条码, 组合商品条码, 组合商品单位 - 3367 条记录,UTF-8,约 106 KB
- 以子商品条码为唯一主键去重(原 pack 表 3823 行,456 条重复取第一条)
- 假设该库当前已足够完整,不需要每次跟热电云重新同步
实测校验:条码键与编码键在库存表上的命中集合完全一致、结果无冲突,因此兜底不会引入错误数据。
工作流程
1. 确认输入
只需要一个文件。.csv / .xlsx 都支持,UTF-8 / GBK 编码都支持。表头行位置、标题行位置自动识别,列顺序任意。
若用户同时丢了两张表,先说明内置库已够用,只用商品表跑即可;仅在他明确要求时才走 --pack。
2. 运行脚本
python3 scripts/merge_packgoods.py <商品表> <输出路径.xlsx>依赖 openpyxl。先检查 python3 -c "import openpyxl",缺失则 pip install openpyxl。
省略输出路径时,自动生成 <原文件名>_含组合商品信息.xlsx 放在原表旁边。
临时换库:
python3 scripts/merge_packgoods.py <商品表> <输出xlsx> --pack <组合商品表>脚本行为:
- 自动识别表头行、标题行、编码格式;脏数据(首尾空格、尾部制表符如
" 137489t")统一清洗 - 数字型条码/编码自动转字符串,不会因 Excel 存成数字而匹配失败
- 末尾「合计」小计行自动剥离到明细区之外(空行隔开、黄底加粗),不污染筛选
- 表头冻结在前两列,全表开启筛选
- 两列未命中时留空
3. 汇报结果
脚本会打印匹配列、匹配方式分布(条码命中 / 编码兜底)、匹配率和未匹配清单。
必须向用户说明:匹配率、条码命中与编码兜底各多少行、以及未匹配的具体清单(格式为 条码(编码),方便用户定位是条码错还是库里缺)。用 present_files 展示输出文件。
若匹配率低于 95%,主动提示可能是内置库缺少这些商品,并说明可用 --pack 传最新 pack 表重跑。
关键注意点
- 条码/编码必须当字符串处理。热电云导出的字段普遍带首尾空格和尾部制表符,Excel 里也常被存成数字。脚本已用
norm()/num()清洗,不要绕过它自己写匹配逻辑。 - 不要用 pandas。GBK 编码 + 制表符脏数据用标准库
csv模块更可控,且能减少环境依赖。 - 不要用
inspect.py作为临时脚本文件名,会与标准库冲突导致 openpyxl 导入失败。 - 参数位置不要靠扩展名猜。曾因"第二个 .xlsx 当 pack 表"把输出文件误判为输入而报错,现已改为显式
--pack标记。 - 更新内置库的方法(用户要求时):从新的 pack goods 表按
子商品编码, 子商品条码, 组合商品条码, 组合商品单位四列重建assets/packgoods_db.csv,以子商品条码为唯一主键取第一条,保持 UTF-8。
输出格式
| 位置 | 内容 |
|---|---|
| A 至倒数第 3 列 | 原表全部字段,顺序不变 |
| 倒数第 2 列 | 供应商进货码(新列,橙色表头) |
| 最后一列 | 进货包装(新列,橙色表头) |
| 末尾 | 空行 + 黄色「合计」行(筛选区外,若原表有) |