v89-v91 模板增强 + 图源映射 + 多模态提示词可配置化

- 图源映射统一:热点采集与 Pinterest 模式均走 config.product.mark_dirs 配置,按任务序号随机抽模特图/平铺图
- 商品产地固定:统一为「中国大陆」+「产地省份=广东省」(不再读站点/字典映射)
- 模板 SKU 字段检测:按建议售价同一套路检测 SKU分类/SKU数量/SKU数量单位,必填时填入单品/1/件
- 多模态分析提示词可配置:prompts/pinterest_analyze_system.md + user.md,支持国家覆盖,不丢文件回退内置
- 自定义图片模式:新增 pinterest_custom_load_node,图片数量硬校验,选品清单 ≤ 有效图片数
- 模板导出优化:写入前按货号末 3 位升序排序,不再产生空白 xlsx
- 修复 v90 project review 10 项(503 致命终止、线程安全、原子写入等)
This commit is contained in:
2026-08-28 16:24:50 +08:00
parent 2a96ec0870
commit 71a48e4ed5
40 changed files with 780 additions and 200 deletions
+20 -3
View File
@@ -39,8 +39,13 @@ seed_provider_cfg:
# 按需搜索:每次只生成 1 个搜索词,用完(爬取成功)才标记已用;简报不足时循环再搜,直到满足 SPU 数量。
pinterest:
enabled: true
mode: "scrape" # Pinterest 模式:scrape=在线爬图引用(原流程);custom=自定义本地图片文件夹直接送多模态分析
# custom 模式:无需采集/搜索,把 custom_image_dir 文件夹内所有有效图片直接进多模态分析,沿用 Pinterest 后续所有步骤
custom_image_dir: "" # 自定义模式图片文件夹路径(必须填写;文件夹内所有有效图片 jpg/jpeg/png/webp 都会进入分析)
# 数量校验:有效图片数必须 ≥ 选品清单(spu_tasks 展开后)总数,否则任务不启动
provider: openai # 搜索词/图片分析用 LLM 提供商(openai / mock
search_mode: direct # 搜索词生成方式:direct=跳过LLM,直接搜「种子词 t-shirt design」;llm=LLM按需生成搜索词
search_mode: direct # 搜索词生成方式:direct=跳过LLM,直接搜「种子词+后缀」;llm=LLM按需生成搜索词
search_term_suffix: " t-shirt design" # Pinterest 搜索词自动追加的自定义后缀(可编辑;留空=不追加),保证 Pinterest 返回真正的印花图
search_terms_per_run: 1 # 每次搜索词数量(direct 模式=从种子池随机取 N 个直接拼后缀;llm 模式=每次生成 1 个)
max_search_rounds: 0 # 搜索轮次上限(0=自动:目标 SPU 数×2,至少 5;防网络故障无限循环)
seed_sample: 40 # 每次从国家种子池随机抽取多少个种子词给 LLM
@@ -57,7 +62,7 @@ pinterest:
headless: false # 爬取时是否无头(false=显示 Chrome 窗口,首次需手动登录)
proxy: "" # 图片下载代理(空=自动探测系统代理/VPN,默认走代理;配了如 http://127.0.0.1:7890 则用指定代理)
login_check: true # 爬取前静态检测 Pinterest 登录态(只读 .chrome_session cookies,不启动 Chrome;未登录则跳过本轮爬取并告警)
login_wait: false # 运行时检测到未登录时:false=跳过并告警(不阻塞);true=弹出 Chrome 等待手动登录
login_wait: true # 运行时检测到未登录时:false=跳过并告警(不阻塞);true=弹出 Chrome 等待手动登录
# 跨源融合权重(按 source 标签,无需和为 1)
# 已下调 gt_trending(泛国家热点只作微弱信号),主力偏向 style+related(可印花型词)。
@@ -205,7 +210,19 @@ product:
db_path: "db/spu_sku.db"
basemap_dir: "basemap"
material_library_dir: "material_library"
model_category: "T-shirt" # 模特目录优先品类;为空/无图时取 material_library 第一个有图的子目录;SPU.mark==1 才启用模特试穿
model_category: "T-shirt" # 备用模特目录优先品类;为空/无图时取 material_library 第一个有图的子目录;SPU.mark==1 才启用试穿/平铺合成
# 三方关系映射:SPU.mark → material_library 下的图文件夹 + 对应提示词。
# 每个 mark 可配置两个图源(模特图文件夹 / 平铺图文件夹),运行时在「有图的文件夹」间随机抽图:
# - 抽到 model_dir(模特图)→ 用 model_prompt(模特三图:图1模特+图2印花+图3底图)
# - 抽到 flat_dir(平铺图) → 用 flat_prompt(平铺三图:图1平铺实拍+图2印花+图3底图)
# model_prompt/flat_prompt 留空则用内置默认提示词(MODEL_WEAR_PROMPT / FLAT_LAY_PROMPT)。
# 该映射完全可配置、不写死在代码里。
mark_dirs:
"1":
model_dir: "模特图" # 模特图文件夹名(material_library 下)
flat_dir: "平铺图" # 平铺图文件夹名(material_library 下)
model_prompt: "" # 留空=内置模特三图提示词 MODEL_WEAR_PROMPT
flat_prompt: "" # 留空=内置平铺三图提示词 FLAT_LAY_PROMPT
brief_index: 0 # 用第几个 safe 简报的提示词生成(0=第一个)
spu_code: "" # 款号(留空自动选第一个有本地底图的)
sku_code: "" # 颜色编码(留空自动选该款第一个有底图的);多个颜色用逗号分隔(如 "DG015-VT01,DG015-DARK HEATHER"