T-575 优化AI生成图片失败反馈

This commit is contained in:
chengma
2026-07-09 16:45:53 +08:00
parent 87648e89d5
commit cbb14bb678
3 changed files with 210 additions and 9 deletions
+84
View File
@@ -2048,6 +2048,90 @@ class GuiTests(TempDirMixin, unittest.TestCase):
self.assert_removed(temp_dir)
def test_generate_cover_progress_bar_marks_failed_segment(self):
with self.make_temp_dir() as temp_dir:
tab = GenerateTab(config=self.make_config(temp_dir))
self.addCleanup(tab.close)
tab._update_generate_progress(
{
"total": 13,
"title_total": 13,
"title_done": 13,
"cover_total": 13,
"cover_done": 11,
"failed": 2,
"generate_cover": True,
}
)
self.assertEqual("图片 11/13,失败 2", tab.cover_progress_label.text())
self.assertEqual((11, 2, 13), tab.cover_progress_bar.segments())
self.assertEqual(13, tab.cover_progress_bar.maximum())
self.assertEqual(13, tab.cover_progress_bar.value())
self.assert_removed(temp_dir)
def test_generate_finished_shows_chinese_summary_for_failed_images(self):
with self.make_temp_dir() as temp_dir:
tab = GenerateTab(config=self.make_config(temp_dir))
self.addCleanup(tab.close)
tab._title_elapsed_seconds = 120
tab._cover_elapsed_seconds = 372
payload = {
"total": 13,
"title_total": 13,
"title_done": 13,
"cover_total": 13,
"cover_done": 11,
"failed": 2,
"generate_cover": True,
}
with mock.patch.object(tab, "refresh_tasks"), \
mock.patch("app.gui.tabs.generate.QMessageBox.warning") as warning, \
mock.patch("app.gui.tabs.generate.QMessageBox.information") as information:
tab._on_generate_finished(payload)
warning.assert_called_once()
information.assert_not_called()
self.assertEqual("AI生成完成,有失败任务", warning.call_args[0][1])
self.assertIn("标题 13/13", warning.call_args[0][2])
self.assertIn("图片 11/13", warning.call_args[0][2])
self.assertIn("失败 2", warning.call_args[0][2])
self.assertIn("用时 492 秒", warning.call_args[0][2])
self.assert_removed(temp_dir)
def test_generate_cancelled_shows_chinese_summary_dialog(self):
with self.make_temp_dir() as temp_dir:
tab = GenerateTab(config=self.make_config(temp_dir))
self.addCleanup(tab.close)
tab._title_elapsed_seconds = 80
tab._cover_elapsed_seconds = 100
payload = {
"total": 13,
"title_total": 13,
"title_done": 8,
"cover_total": 13,
"cover_done": 5,
"failed": 1,
"generate_cover": True,
"cancelled": True,
}
with mock.patch.object(tab, "refresh_tasks"), \
mock.patch("app.gui.tabs.generate.QMessageBox.warning") as warning:
tab._on_generate_cancelled(payload)
warning.assert_called_once()
self.assertEqual("AI生成已停止", warning.call_args[0][1])
self.assertIn("标题 8/13", warning.call_args[0][2])
self.assertIn("图片 5/13", warning.call_args[0][2])
self.assertIn("未完成任务可再次点击开始生成继续处理", warning.call_args[0][2])
self.assert_removed(temp_dir)
def test_generate_tab_shows_cmhub_balance_and_billing_error(self):
with self.make_temp_dir() as temp_dir:
cfg = self.make_config(temp_dir)