T-583 标题提示词模板数据层
This commit is contained in:
@@ -45,14 +45,49 @@ class PromptTests(TempDirMixin, unittest.TestCase):
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
|
||||
def test_generic_template_crud_and_title_cover_directories_are_independent(self):
|
||||
with self.make_temp_dir() as temp_dir:
|
||||
title_dir = os.path.join(temp_dir, "prompts", "title")
|
||||
cover_dir = os.path.join(temp_dir, "prompts", "cover")
|
||||
|
||||
prompts.save_template("基础", "通用模板", title_dir)
|
||||
prompts.save_title_template("标题A", "标题模板", title_dir)
|
||||
prompts.save_cover_template("封面A", "封面模板", cover_dir)
|
||||
|
||||
self.assertEqual(["基础", "标题A"], prompts.list_title_templates(title_dir))
|
||||
self.assertEqual(["封面A"], prompts.list_cover_templates(cover_dir))
|
||||
self.assertEqual("通用模板", prompts.load_template("基础", title_dir))
|
||||
self.assertEqual("标题模板", prompts.load_title_template("标题A", title_dir))
|
||||
self.assertEqual("封面模板", prompts.load_cover_template("封面A", cover_dir))
|
||||
|
||||
prompts.rename_template("基础", "基础2", title_dir)
|
||||
self.assertEqual(["基础2", "标题A"], prompts.list_templates(title_dir))
|
||||
|
||||
with self.assertRaisesRegex(prompts.PromptError, "提示词模板已存在"):
|
||||
prompts.rename_template("基础2", "标题A", title_dir)
|
||||
with self.assertRaisesRegex(prompts.PromptError, "提示词模板名非法"):
|
||||
prompts.save_title_template("../bad", "x", title_dir)
|
||||
|
||||
prompts.delete_title_template("标题A", title_dir)
|
||||
self.assertEqual(["基础2"], prompts.list_title_templates(title_dir))
|
||||
self.assertEqual(["封面A"], prompts.list_cover_templates(cover_dir))
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
|
||||
def test_ensure_default_prompts_seeds_empty_user_prompt_files(self):
|
||||
with self.make_temp_dir() as temp_dir:
|
||||
title_path = os.path.join(temp_dir, "title_prompt.txt")
|
||||
title_templates_dir = os.path.join(temp_dir, "prompts", "title")
|
||||
cover_dir = os.path.join(temp_dir, "prompts", "cover")
|
||||
|
||||
prompts.ensure_default_prompts(title_path, cover_dir)
|
||||
|
||||
self.assertIn("蝦皮台灣站", prompts.load_title_prompt(title_path))
|
||||
self.assertEqual(["默认"], prompts.list_title_templates(title_templates_dir))
|
||||
self.assertEqual(
|
||||
prompts.load_title_prompt(title_path),
|
||||
prompts.load_title_template("默认", title_templates_dir),
|
||||
)
|
||||
self.assertEqual(["papa1"], prompts.list_cover_templates(cover_dir))
|
||||
self.assertIn(
|
||||
"商品标题:{新标题}",
|
||||
@@ -64,13 +99,20 @@ class PromptTests(TempDirMixin, unittest.TestCase):
|
||||
def test_ensure_default_prompts_does_not_overwrite_user_prompts(self):
|
||||
with self.make_temp_dir() as temp_dir:
|
||||
title_path = os.path.join(temp_dir, "title_prompt.txt")
|
||||
title_templates_dir = os.path.join(temp_dir, "prompts", "title")
|
||||
cover_dir = os.path.join(temp_dir, "prompts", "cover")
|
||||
prompts.save_title_prompt("用户标题提示词", title_path)
|
||||
prompts.save_title_template("用户标题模板", "用户标题模板内容", title_templates_dir)
|
||||
prompts.save_cover_template("用户模板", "用户封面提示词", cover_dir)
|
||||
|
||||
prompts.ensure_default_prompts(title_path, cover_dir)
|
||||
|
||||
self.assertEqual("用户标题提示词", prompts.load_title_prompt(title_path))
|
||||
self.assertEqual(["用户标题模板"], prompts.list_title_templates(title_templates_dir))
|
||||
self.assertEqual(
|
||||
"用户标题模板内容",
|
||||
prompts.load_title_template("用户标题模板", title_templates_dir),
|
||||
)
|
||||
self.assertEqual(["用户模板"], prompts.list_cover_templates(cover_dir))
|
||||
self.assertEqual(
|
||||
"用户封面提示词",
|
||||
@@ -79,6 +121,19 @@ class PromptTests(TempDirMixin, unittest.TestCase):
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
|
||||
def test_ensure_default_prompts_accepts_explicit_title_templates_dir(self):
|
||||
with self.make_temp_dir() as temp_dir:
|
||||
title_path = os.path.join(temp_dir, "custom", "title_prompt.txt")
|
||||
cover_dir = os.path.join(temp_dir, "custom", "cover")
|
||||
title_templates_dir = os.path.join(temp_dir, "other", "title_templates")
|
||||
|
||||
prompts.ensure_default_prompts(title_path, cover_dir, title_templates_dir)
|
||||
|
||||
self.assertEqual(["默认"], prompts.list_title_templates(title_templates_dir))
|
||||
self.assertFalse(os.path.exists(os.path.join(temp_dir, "custom", "prompts", "title")))
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
|
||||
def test_render_prompt_replaces_known_variables(self):
|
||||
task = {
|
||||
"old_title": "舊T恤",
|
||||
|
||||
Reference in New Issue
Block a user