fix: capture invalid product toast and close failed tabs

This commit is contained in:
chengma
2026-07-02 21:46:32 +08:00
parent f3e0956cf6
commit b9f614b8e7
11 changed files with 378 additions and 28 deletions
+29 -2
View File
@@ -21,6 +21,21 @@ class TaskTableModel(QAbstractTableModel):
"skipped": "略过",
"cancelled": "已取消",
}
PRODUCT_UNAVAILABLE_MARKERS = (
"商品失效",
"please input correct product id",
"商品不存在",
"商品已删除",
"商品已下架",
"無效商品",
"无效商品",
"無權限",
"无权限",
"product not found",
"item not found",
"invalid product",
"invalid item",
)
def __init__(self, parent=None):
super().__init__(parent)
@@ -72,8 +87,12 @@ class TaskTableModel(QAbstractTableModel):
return self._display_value(task, index.column())
if role == Qt.ForegroundRole and index.column() == 3:
return self._stage_color(task)
if role == Qt.ToolTipRole and self.is_unmatched(task):
return "别名未匹配账号,采集时将略过"
if role == Qt.ToolTipRole:
if self.is_unmatched(task):
return "别名未匹配账号,采集时将略过"
error = getattr(task, "last_error", "") or ""
if error:
return str(error)
return None
def flags(self, index):
@@ -98,9 +117,17 @@ class TaskTableModel(QAbstractTableModel):
return account.account_name
return task.account_name or ""
def _is_product_unavailable(self, task) -> bool:
if getattr(task, "status", "") != "failed":
return False
error = str(getattr(task, "last_error", "") or "").lower()
return bool(error) and any(marker.lower() in error for marker in self.PRODUCT_UNAVAILABLE_MARKERS)
def _stage_text(self, task) -> str:
if self.is_unmatched(task):
return "略过"
if self._is_product_unavailable(task):
return "商品失效"
if task.status in self.STATUS_TEXT and task.status != "pending":
return self.STATUS_TEXT[task.status]
return self.STAGE_TEXT.get(task.stage, task.stage)