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:
@@ -179,6 +179,42 @@ def design_md5_ok(image_path: str) -> bool:
|
||||
_IMG_EXTS = (".jpg", ".jpeg", ".png", ".webp", ".gif", ".bmp")
|
||||
|
||||
|
||||
def list_valid_images(folder: Any) -> List[Path]:
|
||||
"""返回文件夹内所有有效图片文件(扩展名匹配,含子目录递归),用于自定义模式。
|
||||
|
||||
供图源目录/自定义模式统计「有效图片数量」与注册图池使用;空/不存在返回空列表。
|
||||
"""
|
||||
d = Path(folder)
|
||||
if not d.is_dir():
|
||||
return []
|
||||
out: List[Path] = []
|
||||
for f in sorted(d.rglob("*")):
|
||||
if f.is_file() and f.suffix.lower() in _IMG_EXTS:
|
||||
out.append(f)
|
||||
return out
|
||||
|
||||
|
||||
def validate_custom_images(folder: Any, target: int) -> tuple:
|
||||
"""自定义模式数量校验:返回 (ok, valid_n, message)。
|
||||
|
||||
folder 未填/不存在/无有效图片 → 失败;有效图片数 < 选品清单总数 target → 失败
|
||||
(「选品清单不得大于有效图片数」硬校验)。供 UI/入口 fail-fast 与节点安全网复用。
|
||||
"""
|
||||
folder_s = str(folder or "").strip()
|
||||
if not folder_s:
|
||||
return False, 0, "自定义图片文件夹未填写(pinterest.custom_image_dir / UI 选择上传文件夹)"
|
||||
if not Path(folder_s).is_dir():
|
||||
return False, 0, f"自定义图片文件夹不存在:{folder_s}"
|
||||
imgs = list_valid_images(folder_s)
|
||||
n = len(imgs)
|
||||
if n == 0:
|
||||
return False, 0, f"自定义图片文件夹「{folder_s}」中没有有效图片(jpg/jpeg/png/webp)"
|
||||
if target > n:
|
||||
return False, n, (f"选品清单数量({target})大于自定义图片有效数量({n}):"
|
||||
f"选品清单不得大于有效图片数,请补充图片或减少选品")
|
||||
return True, n, f"自定义图片校验通过:有效图片 {n} 张 ≥ 选品清单 {target}"
|
||||
|
||||
|
||||
def image_pool_path(output_dir: str, country: str) -> Path:
|
||||
return Path(output_dir) / "pinterest_ref" / country / "image_pool.json"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user