feat(product-suite): add category targets and prompt compatibility
This commit is contained in:
@@ -33,7 +33,8 @@ class PackagingTests(unittest.TestCase):
|
||||
self.assertIn("COLLECT(", spec)
|
||||
self.assertIn('name="cmshopee"', normalized)
|
||||
suite_prompt = self.read_text("app/default_prompts/product_suite/base.txt")
|
||||
self.assertIn("{套图名称}", suite_prompt)
|
||||
self.assertIn("{生成目标}", suite_prompt)
|
||||
self.assertNotIn("套图名称:", suite_prompt)
|
||||
self.assertIn("{尺寸与长图规则}", suite_prompt)
|
||||
|
||||
def test_build_script_blocks_user_data_in_release_output(self):
|
||||
|
||||
@@ -12,7 +12,10 @@ class ProductSuiteTests(unittest.TestCase):
|
||||
def test_defaults_and_per_image_total(self):
|
||||
settings = product_suite.default_suite_settings()
|
||||
|
||||
self.assertEqual(["白底图", "场景图", "卖点图"], product_suite.category_order(settings))
|
||||
self.assertEqual(
|
||||
["白底图", "场景图", "模特场景图", "细节说明图", "卖点图"],
|
||||
product_suite.category_order(settings),
|
||||
)
|
||||
self.assertEqual(5, product_suite.suite_total_count(settings, 3))
|
||||
|
||||
settings["per_image_primary"] = True
|
||||
@@ -34,7 +37,10 @@ class ProductSuiteTests(unittest.TestCase):
|
||||
)
|
||||
|
||||
self.assertEqual("3:4", settings["ratio"])
|
||||
self.assertEqual(["白底图", "场景图", "卖点图", "尺寸图"], product_suite.category_order(settings))
|
||||
self.assertEqual(
|
||||
["白底图", "场景图", "模特场景图", "细节说明图", "卖点图", "尺寸图"],
|
||||
product_suite.category_order(settings),
|
||||
)
|
||||
self.assertEqual(5, product_suite.suite_total_count(settings, 1))
|
||||
|
||||
def test_recent_settings_only_keep_allowed_dropdown_values(self):
|
||||
@@ -108,8 +114,14 @@ class ProductSuiteTests(unittest.TestCase):
|
||||
spec["prompt"].splitlines()[-1].startswith("本次生成比例:4:3")
|
||||
)
|
||||
|
||||
self.assertIn("套图名称:白底图,白底主图", specs[0]["prompt"])
|
||||
self.assertIn("套图名称:场景图,生活化场景", specs[1]["prompt"])
|
||||
self.assertIn(
|
||||
"生成目标:生成 Shopee 台灣商品白底主圖,純白背景,商品清晰置中,不添加多餘文字。",
|
||||
specs[0]["prompt"],
|
||||
)
|
||||
self.assertIn(
|
||||
"生成目标:生成生活化使用場景圖,展示商品在真實情境中的用途與氛圍,畫面自然可信。",
|
||||
specs[1]["prompt"],
|
||||
)
|
||||
white_prompt = specs[0]["prompt"]
|
||||
self.assertLess(white_prompt.index("重要尺寸要求"), white_prompt.index("重要禁用内容"))
|
||||
self.assertLess(white_prompt.index("重要禁用内容"), white_prompt.index("价格信息规则"))
|
||||
@@ -153,9 +165,33 @@ class ProductSuiteTests(unittest.TestCase):
|
||||
"draft_hidden",
|
||||
)
|
||||
rendered = product_suite.render_product_suite_prompt(default_text, context)
|
||||
self.assertIn("套图名称:尺寸图", rendered)
|
||||
self.assertIn("生成目标:生成自定义分类图片:尺寸图。", rendered)
|
||||
self.assertNotIn("draft_", rendered)
|
||||
self.assertNotIn("白底主图", rendered)
|
||||
self.assertNotIn("套图名称:", rendered)
|
||||
|
||||
legacy_template = default_text.replace(
|
||||
"生成目标:{生成目标}",
|
||||
"套图名称:{套图名称}{补充描述}",
|
||||
)
|
||||
self.assertEqual([], product_suite.product_suite_prompt_errors(legacy_template))
|
||||
legacy_rendered = product_suite.render_product_suite_prompt(legacy_template, context)
|
||||
self.assertIn("套图名称:尺寸图,生成自定义分类图片:尺寸图。", legacy_rendered)
|
||||
|
||||
def test_category_descriptions_are_fixed_and_custom_name_is_explicit(self):
|
||||
expected = {
|
||||
"白底图": "生成 Shopee 台灣商品白底主圖,純白背景,商品清晰置中,不添加多餘文字。",
|
||||
"场景图": "生成生活化使用場景圖,展示商品在真實情境中的用途與氛圍,畫面自然可信。",
|
||||
"模特场景图": "生成模特或手持使用情境圖,畫面自然可信,商品為主角。",
|
||||
"细节说明图": "生成商品細節特寫說明圖,突出材質、做工、接口、紋理或關鍵細節。",
|
||||
"卖点图": "生成賣點詳解圖,使用繁體中文短文案呈現核心優勢,版面乾淨。",
|
||||
}
|
||||
for category, description in expected.items():
|
||||
self.assertEqual(description, product_suite.category_description(category))
|
||||
|
||||
self.assertEqual(
|
||||
"生成自定义分类图片:结构展示。",
|
||||
product_suite.category_description("结构展示"),
|
||||
)
|
||||
|
||||
def test_product_suite_optional_item_and_reference_variables(self):
|
||||
template = prompts.load_default_product_suite_prompt() + (
|
||||
|
||||
@@ -330,7 +330,10 @@ class ProductSuiteGuiTests(TempDirMixin, unittest.TestCase):
|
||||
|
||||
self.assertEqual("白底图", dialog.category_combo.currentData())
|
||||
self.assertTrue(dialog.preview_edit.isReadOnly())
|
||||
self.assertIn("套图名称:白底图,白底主图", dialog.preview_edit.toPlainText())
|
||||
self.assertIn(
|
||||
"生成目标:生成 Shopee 台灣商品白底主圖,純白背景,商品清晰置中,不添加多餘文字。",
|
||||
dialog.preview_edit.toPlainText(),
|
||||
)
|
||||
self.assertIn("40小时续航", dialog.preview_edit.toPlainText())
|
||||
sizes = dialog.splitter.sizes()
|
||||
self.assertLessEqual(abs(sizes[0] - sizes[1]), 12)
|
||||
@@ -462,6 +465,8 @@ class ProductSuiteGuiTests(TempDirMixin, unittest.TestCase):
|
||||
expected = {
|
||||
"白底图": (1, "白底主图,多角度呈现商品细节"),
|
||||
"场景图": (2, "生活化场景展示商品使用方式"),
|
||||
"模特场景图": (0, "模特或手持场景展示商品真实使用"),
|
||||
"细节说明图": (0, "突出材质、做工和关键细节"),
|
||||
"卖点图": (2, "突出核心卖点和差异化优势"),
|
||||
}
|
||||
self.assertEqual(list(expected), list(tab.category_rows))
|
||||
|
||||
Reference in New Issue
Block a user