fix(product-suite): allow braces in business prompts

This commit is contained in:
chengma
2026-07-22 17:23:20 +08:00
parent a887186280
commit 2f05974a61
7 changed files with 108 additions and 19 deletions
+23 -14
View File
@@ -4766,13 +4766,19 @@ class ProductSuiteTab(QWidget):
if specs is None and not state.prompt.strip():
self._message("商品卖点不能为空", "请填写商品卖点与要求,或使用AI帮写。")
return False
specs = list(specs or product_suite.build_job_specs(
local_assets,
state.prompt,
state.settings,
state.item_id or "未绑定商品",
template_text=template_text,
))
try:
specs = list(specs or product_suite.build_job_specs(
local_assets,
state.prompt,
state.settings,
state.item_id or "未绑定商品",
template_text=template_text,
))
except product_suite.ProductSuitePromptError:
message = "提示词渲染失败,请检查提示词设置中的变量格式。"
self._message("无法生成商品套图", message)
self._status(message, "danger")
return False
if not specs:
self._message("生成数量为0", "请至少把一个套图分类的数量设为1。")
return False
@@ -5044,13 +5050,16 @@ class ProductSuiteTab(QWidget):
except prompts.PromptError:
return False
local_assets = [asset for asset in self._original_assets(state) if _asset_usable(asset)]
current_specs = product_suite.build_job_specs(
local_assets,
state.prompt,
state.settings,
state.item_id or "未绑定商品",
template_text=template_text,
)
try:
current_specs = product_suite.build_job_specs(
local_assets,
state.prompt,
state.settings,
state.item_id or "未绑定商品",
template_text=template_text,
)
except product_suite.ProductSuitePromptError:
return False
return snapshot == self._generation_plan_snapshot(
state,
local_assets,
+1 -2
View File
@@ -338,8 +338,7 @@ def render_product_suite_prompt(template_text, context):
lambda match: values[match.group(1)],
str(template_text),
)
if "{" in rendered or "}" in rendered:
raise ProductSuitePromptError("提示词渲染后仍有未替换变量")
# 模板已在替换前校验完成;业务文本中的花括号不是模板变量。
return rendered.strip()