Files
cmshoppe/docs/tasks/T-560.md
T

55 lines
4.6 KiB
Markdown

---
id: T-560
title: ① 采集前批量确保账号 Chrome 就绪 + 登录预检(自动开、不自动登录)
phase: 2
deps: [T-203, T-205, T-105b, T-103b, T-523]
status: TODO
created: 2026-07-08
---
## 问题 / 背景
需求(客户要求):① 导入采集点「采集」后,让程序**自动**把本批**匹配到账号的**各店铺 Chrome 一个个确保就绪、逐账号检查蝦皮登录态,未登录的账号标记并跳过其任务、最后弹窗汇总要补登录的账号;避免运营在几百个任务前**逐个手动开 Chrome、逐个肉眼确认登录**。用户机器日常已能并发开 ~10 个店铺 Chrome,资源可承受。
**这与现有明文规则冲突**:当前 ①③ 预检**"不自动启动 Chrome、不无提示批量启动所有账号"**(T-205/T-402),未就绪就中止并引导去④手动处理。本任务是**有意在①采集侧推翻该规则**(③更新侧不改,形成有意的不对称)。
**架构选择(已定)**:方案 A——预检期把本批需要的账号 Chrome 都**开着保留**(不关),采集复用;不做逐账号懒开懒关。**预检 ≠ 保证**:几百任务可能跑数小时,登录会中途失效,采集期必须逐任务/逐账号处理掉登录。
## 方案(settled 一句话)
点采集 → 对本批**匹配到的每个账号**:确保其 Chrome 在跑(已开则复用、没开才启动;开失败则中止+弹窗)→ 就地查蝦皮登录 → 未登录账号标记、其任务整组跳过 → **全部保持开着** → 挨个采集(复用这些 Chrome)→ 中途掉登录 = 该账号剩余任务 skip 记因 → 结束弹窗汇总(哪些账号要补登录)+ 提示用户自行关闭 Chrome。
## 验收要点(7 条约束)
1. **确保就绪=幂等**:先 `chrome.is_running(debug_port)`,已响应则**复用**现有 Chrome(沿用 T-105b),没开才 `launch`;绝不为已开账号重复开窗/撞端口。
2. **中途掉登录=账号级跳过**:采集期某账号被判掉登录,**把该账号剩余任务整组标 `skipped`、记原因("采集中途掉登录")**,不逐任务撞死刷一屏失败。
3. **两类跳过合并汇总**:预检未登录的账号 + 中途掉登录的账号,在结束弹窗里一起列出,提示"这些账号要补登录"。
4. **开 Chrome 失败=中止+弹窗**:端口冲突、Chrome 路径错、OOM、CDP 未就绪等任一开失败 → 中止本轮采集并弹窗说明(沿用/扩展现有端口冲突阻断口径)。
5. **不自动关**:采集结束**不关 Chrome**,弹窗提示用户自行关闭;不得关闭用户日常开着的窗口。
6. **只为匹配账号开 Chrome**:未匹配账号的别名照旧逐行 `skipped` 记原因,不为其开浏览器。
7. **不自动登录/不绕过风控**:全程只**检测**登录、不自动填密码、不绕验证码;未登录只标记引导人工去④补登录。
## 文档同步(推翻 T-205 规则,必须一起改)
- 更新 `AGENTS.md`、`docs/current-state.md`、`docs/routes.md`、`docs/04-architecture.md` 里"①③预检不自动启动 Chrome"的表述:**①采集改为自动确保就绪**;否则代码与文档打架、后续 agent 会照旧文档把本功能当 bug 改回去。
- **明确 ①③ 不对称**:① 采集自动开 Chrome、③ 更新仍需手动就绪(T-402 不改)——写清这是有意设计,不是遗漏。
- 归档任务 T-205 状态不改(历史),但在上述现状文档里注明"① 采集就绪策略已由 T-560 改为自动"。
## 单测点(`tests/test_gui.py` + 相关)
- 预检:某账号 Chrome 已在跑 → 复用、不调用 `launch`;没跑 → 调用 `launch`。
- 预检开 Chrome 失败(端口冲突/启动异常)→ 中止、不进入采集、弹窗提示。
- 某账号预检未登录 → 其任务整组 `skipped` 记因、其余账号照常采集。
- 采集中途某账号掉登录 → 该账号剩余任务 `skipped` 记因、不逐任务重复失败、其余账号继续。
- 结束汇总:未登录 + 中途掉登录的账号都出现在汇总提示里。
- 未匹配别名仍逐行 `skipped`、不为其开 Chrome。
- 不自动登录/不填密码(沿用现有断言口径)。
## 边界(不改什么)
只改 ① 采集就绪/登录预检链路(`CollectWorker` + `accounts`/`chrome` 就绪、`editor` 登录检测复用)、① 结束汇总弹窗、相关现状文档、单测;不改 ③ 更新侧就绪规则(T-402 保持手动)、不改 CDP 选择器/采集读取逻辑本身、DB schema、AI、Excel、Shopee 交互事实。
## 执行记录
(做完在此记录:改了哪些文件、跑的验证命令与结果、决策)