v106-v109 童装支持 + 标题模板外部化 + 模板导出增强

- 新增男童/女童检测(gender_from_category 优先判童装)与童装场景图生成
  (configs/kids_features.yaml:模特/场景/服装风格,同一商品固定同一组)
- 童装 SPU 字段映射:kids_type→SPU商品属性-类型、kids_age→适用年龄段、
  target_audience 按性别映射、kids_type_map 女童「上衣」→「针织上衣」
- 标题生成提示词外部化:prompts/title_prompt_{1,2,3}.md + config.yaml 路由表
- 模板多站点匹配:经营站点可配多个,命中任意一个即匹配
- 种草图生成失败自动重试(seed_shot.retries,换场景/模特/风格)
- 模板导出新增 Preview 文件夹(成功产品 _composite.oss.jpg + result.xlsx)
- 修复 SKU 尺码未按从小到大排序(_size_rank 支持单一年龄码 6Y/10Y)
This commit is contained in:
2026-09-01 17:24:23 +08:00
parent 3dc594cf57
commit d68cc3b9e3
20 changed files with 826 additions and 136 deletions
+39 -68
View File
@@ -185,6 +185,22 @@ pattern_map:
female:
印花: 卡通
# 适用人群值映射表(童装模板专用):key=db target_audience 值,value=模板下拉框精确选项。
# 女童模板遇到「男童」→「女童」;男童模板遇到「女童」→「男童」(内置默认,可在此覆盖/新增)。
# 成人男/女装模板保留 db 原值(不查此表,不在此配置)。
target_audience_map:
kids:
girl_kids:
男童: 女童
boy_kids:
女童: 男童
# kids_type 值映射表(童装模板专用):key=db kids_type 值,value=模板「SPU商品属性-类型」下拉框精确选项。
# 仅女童模板映射(女童遇到「上衣」→「针织上衣」);男童模板保留 db 原值(不查此表)。
kids_type_map:
girl_kids:
上衣: 针织上衣
# 合规黑名单(全局,生效于所有国家;各国专属侵权盲区写在 prompts/<country>/aesthetics.yaml 的 extra_blacklist
blacklist:
- disney
@@ -313,6 +329,7 @@ oss:
seed_shot:
enabled: true
count: 1 # 每个产品选取几张种草图(从三合一主图中随机取,传入数量即可)
retries: 3 # 单张失败重试次数(图像 API 偶发安全拦截 400 时自动换一组场景/模特/风格重试)
size: "1536x2048" # 种草图生成尺寸(3:4,与合成图一致)
# —— 第四阶段 product:热点 → SPU/颜色选品 → 底图 → 三图合成(图1模特+图2设计稿+图3底图)→ 模板 ——
@@ -326,80 +343,18 @@ product:
basemap_dir: "basemap"
material_library_dir: "material_library"
model_category: "T-shirt" # 备用模特目录优先品类;为空/无图时取 material_library 第一个有图的子目录;SPU.mark==1 才启用试穿/平铺合成
# 三方关系映射:SPU.mark → material_library 下的图文件夹 + 对应提示词
# 三方关系映射: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)。
# - 抽到 model_dir(模特图)→ 用模特三图提示词(图1模特+图2印花+图3底图)
# - 抽到 flat_dir(平铺图) → 用平铺三图提示词(图1平铺实拍+图2印花+图3底图)
# 三图合成提示词模板已迁移到独立 md 文件(不再在此配置):
# prompts/model_prompt.md 模特三图提示词;prompts/flat_prompt.md 平铺三图提示词
# 读取优先级:运行根(exe 旁)prompts/ > 数据根 prompts/;文件缺失/留空回退代码内置默认。
# 该映射完全可配置、不写死在代码里。
mark_dirs:
"1":
model_dir: "模特图" # 模特图文件夹名(material_library 下)
flat_dir: "平铺图" # 平铺图文件夹名(material_library 下)
model_prompt: "" # 留空=内置模特三图提示词 MODEL_WEAR_PROMPT
flat_prompt: |-
**你是一个专业的电商AI视觉合成工具**,核心任务是执行"高保真印花与色彩移植/印花替换"。
## 1. 图片角色定义
* **图1 (基底图):** 衣服平铺实拍图。
* **功能:** 仅提供版型、轮廓、褶皱形态、光影结构、拍摄角度与构图。
* **限制:** 输出必须保留图1的摆放角度、背景和光影逻辑,但**彻底摒弃**其原有的面料颜色。
* **图2 (设计稿):** 纯印花设计稿。
* **功能:** 仅提供“图案元素”(线条、色号、比例)。
* **限制:** 提取图案时必须**完全去除**图2自带的背景色。
* **图3 (底图):** 平铺衣服底图。
* **功能:** 仅作为“皮肤”,提供衣服的**唯一基底颜色**与面料材质纹理。
* **限制:** 忽略其背景/场景,100%保留其衣服底色与质感。
## 2. 核心任务
构建一张最终合成的平铺图,必须同时满足:
1. **结构:** 保留图1的版型与褶皱细节。
2. **底色:** 强制应用图3的颜色与材质。
3. **图案:** 叠加图2的印花设计。
**最终效果 = 图1版型光影 + 图3底色材质 + 图2印花图案**
## 3. 执行规则 (严格执行,权重由高到低)
### 0. 禁止人物
* 严禁出现任何人体、模特、头颈、手臂或穿着效果。
* 必须保持纯平铺俯拍商品图形式。
### 1. 底色强制锁定 (Color Lock - 最高优先级)
* **基底替换:** 必须强制使用**图3的颜色**作为衣服的**唯一**基底色。
* **100%覆盖:** 彻底清除图1原有的面料颜色,严禁图1旧底色透出、混合或泛灰。
* **色调一致性:** 最终成衣的固有色必须与图3肉眼完全一致,不得因光影合成而发生色相偏移。
### 2. 纯印花剥离与叠加
* **去底处理:** 从图2中**仅提取**设计元素、线条、色块,**完全丢弃/移除**图2自身可能存在的任何背景色或画布底色。
* **叠加逻辑:** 将提取的纯图案,以“纹理融合”的方式叠加在图3的底色之上。印花必须依附于图3的底色,不可遮盖或改变图3的底色范围。
### 3. 印花尺寸适配
* 将提取的印花居中印在胸/背/衣身主体区域。
* 印花面积占比严格控制在衣身主体的30%-45%。
* 四周必须留白,严禁印花过大撑满衣服,或过小(<20%)。
### 4. 主体遮罩重建
* 精准识别图1的衣服本体完整区域(包含领口到下摆、袖子)。
* 用“图3底色+图2印花”合成出的新面料,完全覆盖图1的原有面料区域。
* 清除原区域的所有旧色和旧图案,只保留图1的边缘轮廓形态。
### 5. 精准形态贴合
* 合成后的面料必须严格遵循图1的平铺形态。
* 领口、袖口、下摆、侧缝等结构必须清晰。
* **自然变形:** 印花在遇到褶皱、翻折处时,必须随面料纹理发生自然的拉伸、挤压和变形,杜绝僵硬的“贴纸感”。
### 6. 光影重塑与色相锁定
* **借用光影:** 仅借用图1的光照方向、明暗对比度和投影位置。
* **色相锁定:** 在应用明暗变化时,只调整亮度和对比度,**严禁改变色相(Hue)**。
* 确保阴影处依然是图3颜色的深色版,高光处是图3颜色的亮色版,保持投影与图1完全一致。
### 7. 纯净输出
* 仅输出一张最终合成的平铺图。
* 背景环境、桌面、构图、拍摄角度必须与图1保持100%一致。
* 画面中不得出现人像、肢体、人台。
#留空=内置平铺三图提示词 FLAT_LAY_PROMPT
brief_index: 0 # 用第几个 safe 简报的提示词生成(0=第一个)
spu_code: "" # 款号(留空自动选第一个有本地底图的)
sku_code: "" # 颜色编码(留空自动选该款第一个有底图的);多个颜色用逗号分隔(如 "DG015-VT01,DG015-DARK HEATHER"
@@ -412,3 +367,19 @@ product:
template_path: "templates/商品上传模版.xlsx" # 商品上传模板(可改为自由上传)
concurrency: 5 # Pinterest 模式 pipeline 总并发(设计生成→三合一→种草图→标题 同一管道串行,总并发=此值)
# —— 商品标题生成(多模态:分析服装图片 → SEO 标题)——
# 国家 → 提示词模板编号路由(TITLE_TEMPLATE_ROUTE);模板内容存 prompts/title_prompt_<编号>.md(可自由编辑)。
# 模板 1:英语市场(US/GB/AU/MX)→ en_title + cn_title
# 模板 2:日本市场(JP)→ en_title + cn_title + ja_title
# 模板 3:西班牙市场(ES)→ es_title + cn_title
# 读取优先级:运行根(exe 旁)prompts/ > 数据根 prompts/;文件缺失/留空回退代码内置默认。
# 新增国家/改路由只需在此配置;模板内可用 {year}/{month}/{season} 占位符(运行时自动替换为当前时间)。
title_templates:
route:
US: "1"
GB: "1"
JP: "2"
AU: "1"
MX: "1"
ES: "3"