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:
@@ -501,8 +501,8 @@ class App(tk.Tk):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.title("POD 智能设计 Agent")
|
||||
self.geometry("1280x840")
|
||||
self.minsize(1100, 720)
|
||||
self.geometry("1440x860")
|
||||
self.minsize(1200, 720)
|
||||
self.configure(bg="#F2F4F8")
|
||||
self._q = queue.Queue()
|
||||
self._busy = False
|
||||
@@ -1034,7 +1034,8 @@ class App(tk.Tk):
|
||||
break
|
||||
if ws is None:
|
||||
ws = wb.worksheets[0]
|
||||
# 定位「经营站点」表头所在列(第 1 行),站点名在下一行同列(如 A1=经营站点 → A2=美国站)
|
||||
# 定位「经营站点」表头所在列(第 1 行),站点名从第 2 行起逐行读取(模板可含多个站点,
|
||||
# 如德国站/法国站/意大利站…,只要当前国家命中其中任意一个即视为匹配)
|
||||
site_col = None
|
||||
for c in range(1, 6):
|
||||
v = ws.cell(1, c).value
|
||||
@@ -1042,15 +1043,26 @@ class App(tk.Tk):
|
||||
site_col = c
|
||||
break
|
||||
if site_col is not None:
|
||||
v2 = ws.cell(2, site_col).value
|
||||
if v2:
|
||||
site_name = str(v2).strip()
|
||||
sites = []
|
||||
r = 2
|
||||
while True:
|
||||
v = ws.cell(r, site_col).value
|
||||
if not v or not str(v).strip():
|
||||
break
|
||||
s = str(v).strip()
|
||||
# 已离开元信息区(遇到分组行/列名行/说明文字/数据区层级)→ 停止读取站点
|
||||
if any(k in s for k in ("基础信息", "商品层级", "必填", "spu", "sku")):
|
||||
break
|
||||
sites.append(s)
|
||||
r += 1
|
||||
if sites:
|
||||
site_name = "、".join(sites)
|
||||
wb.close()
|
||||
except Exception: # noqa: BLE001
|
||||
return True, "" # 读不到站点信息 → 放行(不阻塞)
|
||||
if not site_name:
|
||||
return True, "" # 模板无站点信息 → 放行
|
||||
if any(k in site_name for k in allowed):
|
||||
if any(any(k in s for k in allowed) for s in site_name.split("、")):
|
||||
return True, site_name
|
||||
return False, site_name
|
||||
|
||||
|
||||
Reference in New Issue
Block a user