T-584 AI生成提示词区重排

This commit is contained in:
chengma
2026-07-10 11:53:51 +08:00
parent bbd5427748
commit da68f92aa6
5 changed files with 253 additions and 22 deletions
+60
View File
@@ -1792,11 +1792,13 @@ class GuiTests(TempDirMixin, unittest.TestCase):
def test_generate_tab_has_prompt_editors_and_task_table(self):
with self.make_temp_dir() as temp_dir:
title_prompt_path = os.path.join(temp_dir, "title_prompt.txt")
title_templates_dir = os.path.join(temp_dir, "prompts", "title")
cover_prompts_dir = os.path.join(temp_dir, "prompts", "cover")
tab = GenerateTab(
config=self.make_config(temp_dir),
title_prompt_path=title_prompt_path,
cover_prompts_dir=cover_prompts_dir,
title_templates_dir=title_templates_dir,
)
self.addCleanup(tab.close)
@@ -1804,9 +1806,14 @@ class GuiTests(TempDirMixin, unittest.TestCase):
self.assertIsInstance(tab.cover_prompt_edit, QPlainTextEdit)
self.assertIsInstance(tab.task_table, QTableView)
self.assertIsInstance(tab.generate_mode_combo, QComboBox)
self.assertEqual("titleTemplateCombo", tab.title_template_combo.objectName())
self.assertEqual("newTitleTemplateButton", tab.new_title_template_button.objectName())
self.assertEqual("saveTitleTemplateButton", tab.save_title_template_button.objectName())
self.assertEqual("titleTemplateActionsButton", tab.title_template_actions_button.objectName())
self.assertEqual("标题提示词", tab.title_prompt_edit.placeholderText())
self.assertEqual("封面提示词", tab.cover_prompt_edit.placeholderText())
self.assertEqual("保存标题提示词", tab.save_title_button.text())
self.assertEqual("保存模板", tab.save_title_template_button.text())
self.assertEqual("插入旧标题", tab.insert_old_title_button.text())
self.assertEqual("开始生成", tab.generate_button.text())
self.assertEqual("停止", tab.stop_generate_button.text())
@@ -1840,8 +1847,17 @@ class GuiTests(TempDirMixin, unittest.TestCase):
self.assertEqual(1, tab.title_progress_bar.maximum())
self.assertEqual(1, tab.cover_progress_bar.maximum())
self.assertIn("蝦皮台灣站", tab.title_prompt_edit.toPlainText())
self.assertEqual("选择模板", tab.title_template_combo.currentText())
self.assertIn("默认", [tab.title_template_combo.itemText(index) for index in range(tab.title_template_combo.count())])
self.assertEqual("模板操作", tab.title_template_actions_button.text())
self.assertIs(tab.title_template_actions_menu, tab.title_template_actions_button.menu())
self.assertEqual(
["另存为", "重命名", "删除"],
[action.text() for action in tab.title_template_actions_menu.actions()],
)
self.assertEqual("papa1", tab.cover_template_combo.currentText())
self.assertIn("商品标题:{新标题}", tab.cover_prompt_edit.toPlainText())
self.assertEqual("保存模板", tab.save_cover_template_button.text())
self.assertEqual("模板操作", tab.cover_template_actions_button.text())
self.assertIs(tab.cover_template_actions_menu, tab.cover_template_actions_button.menu())
self.assertEqual(
@@ -2449,12 +2465,14 @@ class GuiTests(TempDirMixin, unittest.TestCase):
with self.make_temp_dir() as temp_dir:
cfg = self.make_config(temp_dir)
title_prompt_path = os.path.join(temp_dir, "title_prompt.txt")
title_templates_dir = os.path.join(temp_dir, "prompts", "title")
cover_prompts_dir = os.path.join(temp_dir, "prompts", "cover")
tab = GenerateTab(
config=cfg,
title_prompt_path=title_prompt_path,
cover_prompts_dir=cover_prompts_dir,
title_templates_dir=title_templates_dir,
)
self.addCleanup(tab.close)
@@ -2462,6 +2480,7 @@ class GuiTests(TempDirMixin, unittest.TestCase):
self.assertEqual("papa1", tab.cover_template_combo.currentText())
self.assertIn("商品标题:{新标题}", tab.cover_prompt_edit.toPlainText())
self.assertTrue(os.path.exists(title_prompt_path))
self.assertTrue(os.path.exists(os.path.join(title_templates_dir, "默认.txt")))
self.assertTrue(os.path.exists(os.path.join(cover_prompts_dir, "papa1.txt")))
self.assert_removed(temp_dir)
@@ -2470,8 +2489,10 @@ class GuiTests(TempDirMixin, unittest.TestCase):
with self.make_temp_dir() as temp_dir:
cfg = self.make_config(temp_dir)
title_prompt_path = os.path.join(temp_dir, "title_prompt.txt")
title_templates_dir = os.path.join(temp_dir, "prompts", "title")
cover_prompts_dir = os.path.join(temp_dir, "prompts", "cover")
prompts.save_title_prompt("标题启动回显", title_prompt_path)
prompts.save_title_template("标题基础", "模板标题 {旧标题}", title_templates_dir)
prompts.save_cover_template(
"基础",
"把{旧标题}变成{新标题},商品{商品id},店铺{店铺}",
@@ -2502,10 +2523,13 @@ class GuiTests(TempDirMixin, unittest.TestCase):
status_callback=statuses.append,
title_prompt_path=title_prompt_path,
cover_prompts_dir=cover_prompts_dir,
title_templates_dir=title_templates_dir,
)
self.addCleanup(tab.close)
self.assertEqual("标题启动回显", tab.title_prompt_edit.toPlainText())
self.assertEqual("选择模板", tab.title_template_combo.currentText())
self.assertIn("标题基础", prompts.list_title_templates(title_templates_dir))
self.assertEqual("基础", tab.cover_template_combo.currentText())
self.assertIn("{旧标题}", tab.cover_prompt_edit.toPlainText())
@@ -2518,6 +2542,30 @@ class GuiTests(TempDirMixin, unittest.TestCase):
tab.title_prompt_edit.setTextCursor(cursor)
tab.insert_old_title_placeholder()
self.assertEqual("A{旧标题}B", tab.title_prompt_edit.toPlainText())
self.assertEqual("新标题提示词", prompts.load_title_prompt(title_prompt_path))
tab.title_template_combo.setCurrentIndex(tab.title_template_combo.findData("标题基础"))
self.assertEqual("模板标题 {旧标题}", tab.title_prompt_edit.toPlainText())
tab.title_prompt_edit.setPlainText("标题另存内容")
with mock.patch("app.gui.QInputDialog.getText", return_value=("标题另存", True)):
tab.save_title_template_as_action.trigger()
self.assertEqual("标题另存", tab.title_template_combo.currentText())
self.assertEqual(
"标题另存内容",
prompts.load_title_template("标题另存", title_templates_dir),
)
self.assertEqual("新标题提示词", prompts.load_title_prompt(title_prompt_path))
with mock.patch("app.gui.QInputDialog.getText", return_value=("标题改名", True)):
tab.rename_title_template_action.trigger()
self.assertEqual("标题改名", tab.title_template_combo.currentText())
self.assertIn("标题改名", prompts.list_title_templates(title_templates_dir))
tab.title_prompt_edit.setPlainText("标题模板保存")
tab.save_title_template()
self.assertEqual(
"标题模板保存",
prompts.load_title_template("标题改名", title_templates_dir),
)
tab.cover_prompt_edit.setPlainText("另存模板 {新标题}")
with mock.patch("app.gui.QInputDialog.getText", return_value=("另存", True)):
@@ -2548,6 +2596,10 @@ class GuiTests(TempDirMixin, unittest.TestCase):
tab.delete_cover_template_action.trigger()
self.assertNotIn("改名", prompts.list_cover_templates(cover_prompts_dir))
with mock.patch("app.gui.QMessageBox.question", return_value=gui.QMessageBox.Yes):
tab.delete_title_template_action.trigger()
self.assertNotIn("标题改名", prompts.list_title_templates(title_templates_dir))
self.assert_removed(temp_dir)
def test_cover_gallery_lists_candidates_and_selects_current_cover(self):
@@ -3424,6 +3476,14 @@ class GuiTests(TempDirMixin, unittest.TestCase):
tab._set_generate_running(True)
self.assertFalse(tab.reset_generate_button.isEnabled())
self.assertFalse(tab.title_template_combo.isEnabled())
self.assertFalse(tab.new_title_template_button.isEnabled())
self.assertFalse(tab.save_title_template_button.isEnabled())
self.assertFalse(tab.title_template_actions_button.isEnabled())
self.assertFalse(tab.save_title_template_as_action.isEnabled())
self.assertFalse(tab.rename_title_template_action.isEnabled())
self.assertFalse(tab.delete_title_template_action.isEnabled())
self.assertFalse(tab.cover_template_combo.isEnabled())
tab.generate_thread = object()
tab.reset_generated_result()