- 自定义模式:分析模型输出 delta 唯一改动指令,生图模板 custom_image_prompt.md({delta} 占位符),不再使用负向提示词;generate_design 按 custom_mode 分支,Pinterest 模式保留原创化指令,两模式互不影响
- 多模态分析 response_format 三级回退(json_schema → json_object → none),兼容 DeepSeek
- 模板导出:details 扩展列(细节1/2/3)、target_audience 扩展列(适用人群1)、固定值风格1=休闲/风格2=运动
- 童装特征库更新 + 标题模板外部化 + 图源映射增强
10 KiB
10 KiB
2026-09-03 工作日志
新增:Inkreach 商城款号爬取脚本 crawl_style_codes.py
- 需求:按【国家 + 品类】爬取款号(如 DG505 / JPTM001 / PLTK005),去重输出。
- 接口探查结论(重要,见 MEMORY.md 已固化):后端走 mapi.sdspod.com(
api.sdspod.com在本机 DNS 解析不到,勿用)。 - 端点:
/products/pageOptionGroup(国家列表 14 国)、/products/page(商品分页)、/categories(品类树 26 顶层)。 - 坑:
overseasArea(国家)与id(品类)筛选参数实测不生效(各国 totalCount 恒为 536)→ 改为全量分页拉取 + 本地聚合。 - 商品
categories标签顺序固定:[国家/工厂标签, 品类, "款号 品名"](如美国工厂直发 | 男士T恤 | DG505 180g男士纯棉长袖),这是国家/品类/款号最可靠的来源。 - 款号提取三个坑及修复:
SFB(墨西哥运动短裤)是纯字母无数字款号 → 改为优先用 categories 的「款号 品名」标签识别,不再强制要求含数字。- 「中东本地工厂直发」属沙特,但正式国名是「沙特阿拉伯」→ 加
COUNTRY_ALIASES别名表(中东→SA、国内工厂→CN)。 - 尺码串(S/M/XL/2XL/3XL)会被旧规则误当款号 → 加
SIZE_WORDS黑名单(US 因此由 60 校正为 56)。
- CN(国内工厂)4 条商品 name 无国家前缀、且本身无款号 → 用
shipmentArea兜底归国家,款号留空。 - 结果:在架商品 540(海外 536 + 国内 4)→ 13 国 / 65 个品类组合 / 150 条;全局去重款号 149 个。
- 产物:
style_codes_by_country.json(按国家→品类→款号)、style_codes_by_country.csv(country_code,country,category,style_code,utf-8-sig)。
数据维护(同日早些时候)
- SPU 表新增
kids_type、kids_age两字段(TEXT,默认 NULL 空),create_db.py已同步;SPU 现 39 字段。备份spu_sku.db.bak_spu_kids。 - SKU:按
PLTK005-WH01复制生成 6 行PLTK005-BL01(6Y/7Y/8Y/9Y/10Y/11-12Y),code 与 color=黑色 覆盖,其余字段照抄;PLTK005 SKU 由 12 → 18。备份spu_sku.db.bak_pltk005_bl01。 - SKU
color规范化(单字 → 「X色」):- 纯「黑」256 + 纯「白」149 = 405 行(备份
spu_sku.db.bak_color_fix)。 - 其余单字 杏68/棕8/灰136/粉23/紫32/红76/绿45/蓝30/黄3 = 421 行(备份
spu_sku.db.bak_color_single)。 - 未动:多字与组合色(
黑色 白色、白色 蓝色 红色 皇家蓝、黑胡椒色、象牙白、米白等)。
- 纯「黑」256 + 纯「白」149 = 405 行(备份
品类白名单过滤(同日追加)
- 需求:只保留 T恤/卫衣/长袖/背心/夹克,删除下装与家居类,对应款号一并删除。
- 实现:
crawl_style_codes.py加常量KEEP_CATEGORY_KEYWORDS = ("T恤","卫衣","长袖","背心","夹克"),在按品类聚合前过滤(品类名含任一关键词才保留);置空该常量即恢复全量输出。 - 剔除 80 条商品,涉及品类:下装(短裤 & 长裤)20、男士短裤 16、女士短裤 14、家居配饰 10、内衣 6、家居 5、桌面用品 2、配饰 2、男士长裤 2、童装短裤 2、印花烫贴 1。
- 结果:13 国 / 10 个品类(女士T恤/女士卫衣/女士背心/男士T恤/男士T恤·GBTM011长袖T/男士卫衣/男士夹克/男士背心/童装T恤/童装卫衣)/ 116 条;全局去重款号 149 → 115。
- 注:此过滤只作用于爬取产物(json/csv),未改动 SQLite 数据库。
按爬取清单清洗数据库(删除非清单款号)
- 备份:
spu_sku.db.bak_before_style_filter(删前状态 SPU 143 / SKU 2864)。 - 规则:以
style_codes_by_country.json的 115 个款号为准,spu.code(UPPER+TRIM)不在清单内的 SPU 及其 SKU 全部删除。 - 结果:删除 37 个 SPU / 476 条 SKU;剩余 SPU 106 / SKU 2388;孤儿 SKU = 0。
- 被删主力:US 的 DG201/202/204/205/206/210(下装)、JSD001~007(短裤)、JSA002/003/007/010(内衣·短裤)、USIU002/005/012(家居)、YSM01/02(配饰);JP 的 JPIU014/020/021(家居配饰)、JPPM011/JPSM018(下装)、JPJF005;PL 的 PLHM011/PLPM014/PLSU025(下装);GB 的 GBIU009/014/015;DE 的 DEPM004;MX 的 SFB。
- 清单有但库里未入库的 9 个款号(本次未补,后续可从 PG 同步):BRTF004、DG505、GBHK007、GBTK012、GBTM010、GBTM011、JPPX012、JPPX013、PLTM031。
- 审计文件:
delete_non_keep_codes.sql(含完整 115 款号 IN 清单,可复核/重放)。
童装T恤款号字段批量更新
- 依据:
style_codes_by_country.csv/json中品类含「童装T恤」的款号共 19 个,库中命中 18 个(GBTK012 尚未入库)。 - 更新 4 个字段:
target_audience='男童'、season='ALL/全球/所有'、kids_type='上衣'、kids_age='12岁及以下',影响 18 行。 - 覆盖国家:US(5000B/DG012/DG014/DG301/DG503/JSA004)、PL(PLHM012/PLHM013/PLTK005/PLTK015/PLTK016)、GB(GBTK005/GBTK008)、JP(JPTK015)、MX(METN001)、SA(SATK004)、ES(ESTK005)、IT(ITTK002);清单国家与库内 country 全部一致。
- 备份:
spu_sku.db.bak_kids_tshirt;审计 SQL:kids_tshirt_update.sql。 - 备注:GBHM002/GBHM003 的 season 早就是 'ALL/全球/所有'(历史值,非本次改动);童装卫衣品类(清单 5 个 / 库中 4 个)本次未改,待用户决定是否同样套用童装字段。
男士卫衣款号字段批量更新
- 依据:清单中品类含「男士卫衣」的款号共 21 个,库中命中 19 个(JPPX012/JPPX013 尚未入库);国家一致性全部 OK。
- 更新 5 个字段:
details='抽绳'、collar_style='连帽'、target_audience='男士'、season='秋/冬'、sleeve_length_type='长袖',影响 19 行。 - 覆盖:US(DF009/DF010/JSB001/JSB002/JSB003)、PL(PLHM002/PLHM003)、GB(GBHM002/GBHM003)、JP(JPHM009/JPHM010)、KR(KRHM002/KRHM003)、ES(ESHM003/ESHM004)、MX(HM01)、CA(CAHM002)、DE(DEHM003)、SA(SAHM003)。
- 备份:
spu_sku.db.bak_men_hoodie;审计 SQL:men_hoodie_update.sql。 - 备注:GBHM002/GBHM003 原 season='ALL/全球/所有'(历史值)已被本次覆盖为 '秋/冬';当前全表 season 分布 = 秋/冬 19 + ALL/全球/所有 18(童装T恤)+ 四季 69。
品类→字段批量套用模板(可复用)
- 数据源固定:
style_codes_by_country.json(按 国家→品类→款号 组织),脚本crawl_style_codes.py可重跑刷新。 - 标准流程:备份 → 从 json 取「品类含关键词」的款号 → 与 spu.code(UPPER+TRIM) 比对(列出命中/缺失/国家是否一致)→ 事务 UPDATE → 验证明细与全表分布 → 审计 SQL 落盘。
- 已套用:童装T恤(18 个,男童/ALL全球/上衣/12岁及以下)、男士卫衣(19 个,抽绳/连帽/男士/秋·冬/长袖)。
新增袖长列 sleeve_length(用户选「加一列」方案)
- 背景:商城无袖长分类字段(见 MEMORY.md 三套分类体系),长袖信息只写在商品 name 里,故按分类筛不出长袖。
- 实现:
crawl_style_codes.py新增guess_sleeve_length(name, category),判定优先级:- name 含「无袖/背心/吊带」或品类含「背心」→ 无袖
- name 含「长袖」→ 长袖
- name 含「短袖」→ 短袖
- 品类含「卫衣/夹克」→ 长袖(推断)
- 其余普通 T 恤 → 短袖(默认)
- 产出:CSV 由 4 列扩为 5 列(country_code, country, category, style_code, sleeve_length);JSON 每个国家下新增
sleeve_length与sleeve_source(判定来源,便于审计修正)。 - 结果:长袖 37(name 标注 9 + 品类推断 28)、短袖 69(name 标注 6 + 默认 63)、无袖 9,合计 115 个款号全覆盖、无空值。
- 注意:63 个「默认短袖」与 28 个「卫衣/夹克推断长袖」属推断值,如需人工校正以
sleeve_source列筛选即可。
袖长回填 SPU.sleeve_length_type(区分长袖)
- 用户需求:「先帮我把长袖给区分出来」→ 把清单 sleeve_length 回填到 SPU 表,让库里能直接筛出长袖。
- 执行:以
style_codes_by_country.csv的 sleeve_length 为准回填全部 106 个款号;更新 20 行:- 12 个 短袖→长袖(藏在 T恤/卫衣/夹克里):DG501/DG502/DG503/DG504/GBHK006/JPTM006/KRTM004/PLHF029/PLHM009/PLHM010/PLJM030/PLTF026
- 8 个 短袖→无袖(背心款):AUTM003/JPTM008/JSA009/TBB001/VS001/VS002/VS003/VS004
- 更新后分布:长袖 31 / 短袖 66 / 无袖 9(=106)。清单长袖 37 − 6 个未入库长袖款(DG505/GBTM011/GBTK012/JPPX012/JPPX013 等)= 31。
- 备份:
spu_sku.db.bak_sleeve_backfill;审计 SQL:sleeve_backfill.sql(106 条逐款 UPDATE)。
长袖T恤细化(品类含 T恤 且 长袖 → season=秋/冬)
- 规则:清单 category 含「T恤」且 sleeve_length='长袖' 的款号 → SPU
sleeve_length_type='长袖'、season='秋/冬'。 - 清单共 8 款(DG502/DG503/DG505/GBTK012/GBTM011/JPTM006/KRTM004/PLTF026),库中命中 5 个(DG505/GBTK012/GBTM011 未入库)。
- sleeve_length_type 上一步回填时已为长袖;本次主要把 season 改「秋/冬」;注意 DG503(童装T恤)season 由「ALL/全球/所有」被覆盖为「秋/冬」(用户指定)。
- 全表 season 分布更新为:秋/冬 24(男士卫衣 19 + 长袖T恤 5)/ ALL/全球/所有 17 / 四季 65。
- 备份:
spu_sku.db.bak_tee_long;审计 SQL:tee_long_update.sql。
童装款 SKU size_type 统一为「欧美尺码年龄码」
- 范围:清单 category 含「童装」的款号 = 童装T恤 19 + 童装卫衣 5 = 24 个;库中命中 22 个(GBHK007/GBTK012 未入库)。
- 更新:22 款对应 508 条 SKU 的
size_type='欧美尺码年龄码'。 - 注意:① JPTK015(JP) 的 size_group 仍为「亚洲尺码」、size_type 现在是「欧美尺码年龄码」——组合不一致,待用户确认是否妥当;② 部分童装款实际 size 是 XS-XL(5000B/METN001/SATK004/DG012 等)或 90~170 体码(DG014/DG503/DG504/JSA004/JPTK015),本次仅统一 size_type 文案、未改 size。
- 备份:
spu_sku.db.bak_kids_sizetype;审计 SQL:kids_size_type_update.sql。
背心款 sleeve_length_type 幂等确认
- 范围:清单品类含「背心」共 9 款(男士背心 AUTM003/JPTM002/JPTM008/TBB001/VS001/VS003;女士背心 JSA009/VS002/VS004),库中全部命中。
- 结果:9 款在「袖长回填」那步已统一为「无袖」,本轮幂等 UPDATE 确认状态正确(值无实际变化)。
- 备份:
spu_sku.db.bak_vest;审计 SQL:vest_update.sql(可复用)。