feat: complete T-105b account login reuse

This commit is contained in:
chengma
2026-07-06 15:01:50 +08:00
parent 7ac0dcd00e
commit 0dad4151ef
12 changed files with 276 additions and 30 deletions
+1
View File
@@ -42,6 +42,7 @@
| T-104 | PySide6 五 Tab 主窗口骨架(`QMainWindow` + `QTabWidget`,5 Tab 空壳) | T-002 | 五个 Tab 按顺序可切换;启动不阻塞;基础状态栏可用 | DONE |
| T-104b | PySide6 worker 基类与线程启动工具(`BaseWorker` + `QThread` 包装) | T-104 | signals: progress/log/row_updated/failed/finished/cancelled;取消标记可用;worker 不直接操作 QWidget | DONE |
| T-105 | Tab④ 账号增删改(账号名/别名/端口/密码本地明文仅参考)+ 启动登录 + 检测登录 + 顶部 Tab 栏防误点样式 | T-104, T-101, T-103 | 增删改入库、建目录;密码字段 UI 打码;状态列刷新;不自动登录/填密码;5 个 Tab 有足够宽度/间距与当前态高亮,不易误点 | DONE |
| T-105b | ④「启动登录」复用已打开 Chrome,防止同账号重复开窗口 | T-105, T-102, T-523 | Bug:同一账号已打开 Chrome 后再次点击「启动登录」,当前链路仍从 `AccountsTab.launch_login()` → `accounts.launch_for_login()` → `chrome.launch_chrome()` → `subprocess.Popen()`,没有先检查该账号 `debug_port` 是否已有 CDP 响应;`login_statuses[alias]="已启动"` 只是界面显示,不是幂等保护。方案:把④启动入口改为幂等流程,先调用 `chrome.is_running(account.debug_port)`;若端口已响应,不再 `Popen`,通过现有 CDP 能力复用该账号 Chrome,优先激活/打开 `https://<region_host>/portal/` 或卖家中心登录 tab,并写 `run_type=chrome_launch` 事件 `result=reused`,状态栏提示“该账号 Chrome 已打开,已复用现有窗口”;若端口未响应,才调用 `chrome.launch_chrome()` 并等待 CDP 就绪,事件 `result=launched`。不得自动填写密码、不得绕过登录/验证码、不得影响①/③账号预检“不自动启动 Chrome”的规则。测试覆盖:端口已运行时不调用 `subprocess.Popen`,端口未运行时仍启动;GUI 重复点击同账号不会新增 Chrome 进程,run log/status 文案区分复用与新启动 | DONE |
| T-106 | 可选:为账号生成桌面快捷方式 | T-102 | `.lnk` 目标含该账号参数;双击进对应账号 | DONE |
## Phase 2 · 导入采集(①)