feat: auto-prepare chrome for collection

This commit is contained in:
chengma
2026-07-08 17:25:17 +08:00
parent 574074ebfb
commit 95170ec4aa
8 changed files with 325 additions and 53 deletions
+33 -2
View File
@@ -200,8 +200,8 @@ class CollectTab(QWidget):
def _show_account_guide(self, message):
full_message = (
f"{message}\n\n"
"本轮采集已中止,不会自动打开账号 Chrome。\n"
"请先到「④ 账号管理」配置账号、启动对应账号 Chrome,并确认已人工登录蝦皮。"
"本轮采集已中止。\n"
"请先到「④ 账号管理」检查账号配置、Chrome 路径和登录状态。"
)
QMessageBox.warning(self, "账号未就绪", full_message)
self._set_status(full_message.replace("\n", " "))
@@ -647,6 +647,7 @@ class CollectTab(QWidget):
skipped=payload.get("skipped", 0),
failed=payload.get("failed", 0),
)
self._show_collect_account_summary(payload, message)
if payload.get("collected", 0) > 0:
batch_id = self._active_batch_id()
if batch_id and self._start_write_back(batch_id, auto=True):
@@ -674,6 +675,12 @@ class CollectTab(QWidget):
"以下账号 Chrome 未启动或调试端口不可访问:"
+ "、".join(self._account_label(item) for item in not_running)
)
launch_failed = payload.get("launch_failed") or []
if launch_failed:
lines.append(
"以下账号 Chrome 启动失败:"
+ "、".join(self._account_label(item) for item in launch_failed)
)
logged_out = payload.get("logged_out") or []
if logged_out:
lines.append(
@@ -682,6 +689,30 @@ class CollectTab(QWidget):
)
self._show_account_guide("\n".join(lines))
def _show_collect_account_summary(self, payload, message):
launched = payload.get("launched_accounts") or []
reused = payload.get("reused_accounts") or []
login_required = payload.get("login_required_accounts") or []
if not launched and not reused and not login_required:
return
lines = [message]
if launched:
lines.append(
"本轮已自动启动账号 Chrome:"
+ "、".join(self._account_label(item) for item in launched)
)
if login_required:
lines.append(
"以下账号需要补登录:"
+ "、".join(self._account_label(item) for item in login_required)
)
lines.append("采集结束后不会自动关闭账号 Chrome,请按需自行关闭。")
text = "\n".join(lines)
if login_required:
QMessageBox.warning(self, "采集完成", text)
else:
QMessageBox.information(self, "采集完成", text)
def _account_label(self, item):
if isinstance(item, dict):
name = item.get("account_name") or item.get("alias") or ""