feat: split generate title and image statuses

This commit is contained in:
chengma
2026-07-08 11:37:34 +08:00
parent 773f528668
commit 4146ab5593
4 changed files with 264 additions and 21 deletions
+120 -3
View File
@@ -209,7 +209,7 @@ class GuiTests(TempDirMixin, unittest.TestCase):
generate_model.set_tasks([generate_task], [account])
self.assertEqual(
"请求生成标题失败:cmhub 上游生成失败",
generate_model.data(generate_model.index(0, 4), gui.Qt.ToolTipRole),
generate_model.data(generate_model.index(0, 5), gui.Qt.ToolTipRole),
)
apply_model = gui.ApplyTaskTableModel()
@@ -1645,11 +1645,128 @@ class GuiTests(TempDirMixin, unittest.TestCase):
self.assertFalse(hasattr(tab, "save_cover_template_as_button"))
self.assertFalse(hasattr(tab, "rename_cover_template_button"))
self.assertFalse(hasattr(tab, "delete_cover_template_button"))
self.assertEqual(["店铺", "商品ID", "旧标题", "新标题", "状态"], tab.model.HEADERS)
self.assertEqual(
["店铺", "商品ID", "旧标题", "新标题", "标题状态", "图片状态"],
tab.model.HEADERS,
)
self.assertEqual("任务 0/0 条", tab.summary_label.text())
self.assert_removed(temp_dir)
def test_generate_table_splits_title_and_cover_statuses_and_widths(self):
with self.make_temp_dir() as temp_dir:
account = SimpleNamespace(alias="papa", account_name="papa 店铺")
tasks = [
SimpleNamespace(
alias="papa",
account_name="papa 店铺",
item_id="1001",
old_title="旧标题1",
new_title="",
new_cover_path="",
stage="imported",
status="failed",
last_error="读标题失败:页面错误",
collect_attempts=1,
generate_attempts=0,
apply_attempts=0,
committed=0,
),
SimpleNamespace(
alias="papa",
account_name="papa 店铺",
item_id="1002",
old_title="旧标题2",
new_title="",
new_cover_path="",
stage="collected",
status="failed",
last_error="请求生成标题失败:cmhub 上游失败",
collect_attempts=1,
generate_attempts=1,
apply_attempts=0,
committed=0,
),
SimpleNamespace(
alias="papa",
account_name="papa 店铺",
item_id="1003",
old_title="旧标题3",
new_title="新标题3",
new_cover_path="",
stage="generated",
status="failed",
last_error="请求生成封面失败:等待 cmhub 返回超时",
collect_attempts=1,
generate_attempts=2,
apply_attempts=0,
committed=0,
),
SimpleNamespace(
alias="papa",
account_name="papa 店铺",
item_id="1004",
old_title="旧标题4",
new_title="新标题4",
new_cover_path="",
stage="generated",
status="success",
last_error="",
collect_attempts=1,
generate_attempts=1,
apply_attempts=0,
committed=0,
),
SimpleNamespace(
alias="papa",
account_name="papa 店铺",
item_id="1005",
old_title="旧标题5",
new_title="新标题5",
new_cover_path="new.jpg",
stage="generated",
status="success",
last_error="",
collect_attempts=1,
generate_attempts=1,
apply_attempts=0,
committed=0,
),
]
model = gui.GenerateTaskTableModel()
model.set_tasks(tasks, [account])
self.assertEqual("采集失败", model.index(0, 4).data())
self.assertEqual("采集失败", model.index(0, 5).data())
self.assertEqual("失败", model.index(1, 4).data())
self.assertEqual("未启用", model.index(1, 5).data())
self.assertEqual("已生成", model.index(2, 4).data())
self.assertEqual("失败", model.index(2, 5).data())
self.assertEqual("已生成", model.index(3, 4).data())
self.assertEqual("未启用", model.index(3, 5).data())
model.set_generate_cover_enabled(True)
self.assertEqual("未开始", model.index(1, 5).data())
self.assertEqual("待生成", model.index(3, 5).data())
self.assertEqual("已生成", model.index(4, 5).data())
tab = GenerateTab(config=self.make_config(temp_dir))
self.addCleanup(tab.close)
tab.task_table.resize(600, 240)
tab.task_table.show()
QApplication.processEvents()
tab._apply_task_table_column_widths()
header = tab.task_table.horizontalHeader()
self.assertLess(header.sectionSize(1), header.sectionSize(0))
self.assertAlmostEqual(
header.sectionSize(4),
header.sectionSize(5),
delta=5,
)
self.assertGreater(header.sectionSize(4), header.sectionSize(0))
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)
@@ -3858,7 +3975,7 @@ class GuiTests(TempDirMixin, unittest.TestCase):
tab.status_filter.setCurrentIndex(tab.status_filter.findData("all"))
tab.batch_filter.setCurrentIndex(tab.batch_filter.findData(batch_b))
self.assertEqual(1, tab.model.rowCount())
self.assertEqual("生成失败", tab.model.index(0, 4).data())
self.assertEqual("失败", tab.model.index(0, 4).data())
self.assert_foreground(tab.model, 0, 4, gui.COLOR_DANGER)
self.assertEqual(
"生成失败",