feat: 完成Tab①导入汇总栏
在 CollectTab 增加导入汇总栏,展示文件数、解析行数、有效/无效、匹配与未匹配数量。 TaskTableModel 支持全部/未匹配过滤,未匹配按钮可筛出别名未匹配账号的任务。 补充 GUI 单测覆盖汇总文本、匹配明细和未匹配筛选;同步任务看板、API 合约、当前状态与 progress。
This commit is contained in:
+58
-1
@@ -197,10 +197,57 @@ class GuiTests(TempDirMixin, unittest.TestCase):
|
||||
self.assertEqual("Excel副店", tab.model.index(1, 0).data())
|
||||
self.assertEqual("missing", tab.model.index(1, 1).data())
|
||||
self.assertEqual("略过", tab.model.index(1, 3).data())
|
||||
self.assertIn("2 行", tab.summary_label.text())
|
||||
self.assertIn("有效2/无效0", tab.summary_label.text())
|
||||
self.assertIn("匹配1", tab.summary_label.text())
|
||||
self.assertIn("未匹配1", tab.summary_label.text())
|
||||
self.assertIn("主店1", tab.match_detail_label.text())
|
||||
self.assertIn("未匹配", tab.empty_label.text())
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
|
||||
def test_collect_tab_can_filter_unmatched_tasks_from_summary_bar(self):
|
||||
with self.make_temp_dir() as temp_dir:
|
||||
cfg = self.make_config(temp_dir)
|
||||
accounts.create_account("主店", "alias-a", debug_port=9222, config=cfg)
|
||||
batch_id = db.create_batch(["input.xlsx"], path=cfg["db_path"])
|
||||
db.insert_tasks(
|
||||
batch_id,
|
||||
[
|
||||
{
|
||||
"source_file_abs": os.path.join(temp_dir, "input.xlsx"),
|
||||
"source_sheet": "商品",
|
||||
"source_row": 2,
|
||||
"account_name": "Excel主店",
|
||||
"alias": "alias-a",
|
||||
"item_id": "51100639510",
|
||||
},
|
||||
{
|
||||
"source_file_abs": os.path.join(temp_dir, "input.xlsx"),
|
||||
"source_sheet": "商品",
|
||||
"source_row": 3,
|
||||
"account_name": "Excel副店",
|
||||
"alias": "missing",
|
||||
"item_id": "51100639511",
|
||||
},
|
||||
],
|
||||
path=cfg["db_path"],
|
||||
)
|
||||
tab = CollectTab(config=cfg)
|
||||
self.addCleanup(tab.close)
|
||||
|
||||
tab.show_unmatched_tasks()
|
||||
|
||||
self.assertEqual(1, tab.model.rowCount())
|
||||
self.assertEqual("missing", tab.model.index(0, 1).data())
|
||||
self.assertEqual("略过", tab.model.index(0, 3).data())
|
||||
|
||||
tab.show_all_tasks()
|
||||
|
||||
self.assertEqual(2, tab.model.rowCount())
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
|
||||
def test_collect_tab_import_button_imports_excel_and_refreshes_tasks(self):
|
||||
with self.make_temp_dir() as temp_dir:
|
||||
cfg = self.make_config(temp_dir)
|
||||
@@ -229,7 +276,13 @@ class GuiTests(TempDirMixin, unittest.TestCase):
|
||||
return {
|
||||
"batch_id": batch_id,
|
||||
"rows": [],
|
||||
"stats": {"valid": 1, "invalid": 0, "inserted": 1},
|
||||
"stats": {
|
||||
"files": 1,
|
||||
"total": 2,
|
||||
"valid": 1,
|
||||
"invalid": 1,
|
||||
"inserted": 1,
|
||||
},
|
||||
}
|
||||
|
||||
with mock.patch.object(
|
||||
@@ -242,6 +295,10 @@ class GuiTests(TempDirMixin, unittest.TestCase):
|
||||
import_tasks.assert_called_once_with([excel_path], path=cfg["db_path"])
|
||||
self.assertEqual(1, tab.model.rowCount())
|
||||
self.assertEqual("alias-a", tab.model.index(0, 1).data())
|
||||
self.assertIn("1 文件", tab.summary_label.text())
|
||||
self.assertIn("2 行", tab.summary_label.text())
|
||||
self.assertIn("有效1/无效1", tab.summary_label.text())
|
||||
self.assertIn("匹配1", tab.summary_label.text())
|
||||
self.assertIn("入库1", statuses[-1])
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
|
||||
Reference in New Issue
Block a user