feat(ai-studio): add prompt template storage

This commit is contained in:
chengma
2026-07-11 12:35:42 +08:00
parent 1267e0a727
commit 3ebefab91e
6 changed files with 81 additions and 4 deletions
+4
View File
@@ -241,6 +241,10 @@ class AppConfigTests(TempDirMixin, unittest.TestCase):
self.assertEqual(os.path.join(data_root, "title_prompt.txt"), appconfig.title_prompt_path(cfg))
self.assertEqual(os.path.join(data_root, "prompts", "title"), appconfig.title_templates_dir(cfg))
self.assertEqual(os.path.join(data_root, "prompts", "cover"), appconfig.cover_prompts_dir(cfg))
self.assertEqual(
os.path.join(data_root, "prompts", "image_studio"),
appconfig.image_studio_prompts_dir(cfg),
)
self.assertEqual(os.path.join(data_root, "logs"), appconfig.diagnostic_log_dir(cfg))
portable = dict(cfg)
+31
View File
@@ -74,6 +74,37 @@ class PromptTests(TempDirMixin, unittest.TestCase):
self.assert_removed(temp_dir)
def test_image_studio_template_crud_isolated_and_preserves_raw_text(self):
with self.make_temp_dir() as temp_dir:
studio_dir = os.path.join(temp_dir, "prompts", "image_studio")
title_dir = os.path.join(temp_dir, "prompts", "title")
cover_dir = os.path.join(temp_dir, "prompts", "cover")
raw_text = "完整提示词第一行\n第二行:不要拆分\n{商品id}"
prompts.save_image_studio_template("工场模板", raw_text, studio_dir)
prompts.save_title_template("标题模板", "标题", title_dir)
prompts.save_cover_template("封面模板", "封面", cover_dir)
self.assertEqual(["工场模板"], prompts.list_image_studio_templates(studio_dir))
self.assertEqual(raw_text, prompts.load_image_studio_template("工场模板", studio_dir))
self.assertEqual(["标题模板"], prompts.list_title_templates(title_dir))
self.assertEqual(["封面模板"], prompts.list_cover_templates(cover_dir))
prompts.rename_image_studio_template("工场模板", "工场模板2", studio_dir)
self.assertEqual(["工场模板2"], prompts.list_image_studio_templates(studio_dir))
with self.assertRaisesRegex(prompts.PromptError, "提示词模板已存在"):
prompts.rename_image_studio_template("工场模板2", "工场模板2", studio_dir)
with self.assertRaisesRegex(prompts.PromptError, "提示词模板名不能为空"):
prompts.save_image_studio_template("", "x", studio_dir)
with self.assertRaisesRegex(prompts.PromptError, "提示词模板名非法"):
prompts.save_image_studio_template("../bad", "x", studio_dir)
prompts.delete_image_studio_template("工场模板2", studio_dir)
self.assertEqual([], prompts.list_image_studio_templates(studio_dir))
with self.assertRaisesRegex(prompts.PromptError, "提示词模板不存在"):
prompts.load_image_studio_template("工场模板2", studio_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")