diff --git a/docs/tasks/T-560.md b/docs/tasks/T-560.md new file mode 100644 index 0000000..83cdccf --- /dev/null +++ b/docs/tasks/T-560.md @@ -0,0 +1,54 @@ +--- +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 交互事实。 + +## 执行记录 + +(做完在此记录:改了哪些文件、跑的验证命令与结果、决策)