docs: add T-562 quiet collection
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
---
|
||||
id: T-562
|
||||
title: ①采集打开商品页不主动切换 Chrome 前台
|
||||
phase: 2
|
||||
deps: [T-203, T-205b, T-560]
|
||||
status: TODO
|
||||
created: 2026-07-08
|
||||
---
|
||||
|
||||
## 问题 / 背景
|
||||
|
||||
运行①「导入采集」时,每采集一个商品都会打开或复用对应账号 Chrome 的商品详情页,并把该 Chrome/标签页切到前台。批量采集多店铺、多商品时,用户正在操作其它窗口会被频繁抢焦点,体验很差。
|
||||
|
||||
代码原因:
|
||||
|
||||
- `app/editor.py::open_product()` 在打开/复用商品页后固定执行 `Page.bringToFront`,这是 Chrome DevTools Protocol 明确的前台激活命令。
|
||||
- `open_product()` 同时服务①采集和③更新。早期强制前台便于调试和观察更新动作,但①采集是只读流程,不需要每条都切前台。
|
||||
- 新建商品 tab 使用 `app/cdp.py::create_tab_info()` 的 `Target.createTarget`。Chrome 新建 tab 本身也可能激活标签页;可尝试传 `background=true` 降低新建 tab 抢焦点概率。
|
||||
|
||||
## 方案
|
||||
|
||||
1. **给打开商品页增加前台控制参数**
|
||||
- `editor.open_product(account, item_id, on_step=None, bring_to_front=True)` 增加参数,默认保持旧行为。
|
||||
- 仅当 `bring_to_front=True` 时执行 `Page.bringToFront`。
|
||||
- ③ `apply_task()` 继续使用默认 `True`,避免影响改标题、换封面、上传、拖拽和 Shopee 确认框稳定性。
|
||||
- ① `collect()` 调用 `open_product(..., bring_to_front=False)`,采集不主动把页面带到前台。
|
||||
|
||||
2. **新建 tab 尽量后台创建**
|
||||
- `cdp.create_tab_info(url, host=None, background=False)` 增加 `background` 参数。
|
||||
- 当 `background=True` 时,`Target.createTarget` 参数中带 `background: true`。
|
||||
- `open_product(..., bring_to_front=False)` 新建商品 tab 时传 `background=True`;复用已有 tab 时不激活。
|
||||
- 如果 Chrome 版本忽略 `background`,仍至少不再执行 `Page.bringToFront`。
|
||||
|
||||
3. **测试**
|
||||
- editor 单测覆盖:采集调用不发送 `Page.bringToFront`,更新调用仍发送。
|
||||
- cdp 单测覆盖:`create_tab_info(background=True)` 会把 `background: true` 传给 `Target.createTarget`。
|
||||
- 保持失败时自动关闭本轮新建 tab、复用用户已有 tab 不关闭的原语义。
|
||||
|
||||
## 验收要点
|
||||
|
||||
- ①采集每个商品详情页时不再主动调用 `Page.bringToFront`。
|
||||
- ①采集新建商品 tab 时尽量后台创建,降低 Chrome 抢焦点概率。
|
||||
- ③更新蝦皮仍保持默认前台行为,不改变上传、拖拽、点击更新和确认框处理。
|
||||
- 商品失效/打开失败时,本轮自动新建 tab 仍会关闭;复用用户已有 tab 不关闭。
|
||||
- `python -m ruff check app tests main.py`、`py -3.10 -m compileall app main.py`、`py -3.10 -m unittest discover -s tests`、`git diff --check` 通过。
|
||||
|
||||
## 边界(不改什么)
|
||||
|
||||
只改①采集打开商品页的前台激活策略和 CDP 新建 tab 参数;不改标题/封面采集逻辑、不改商品详情页选择器、不改③更新流程、不改 DB schema、不改 Excel、AI、cmhub、账号登录检测或 Shopee 提交逻辑。
|
||||
|
||||
## 执行记录
|
||||
|
||||
Reference in New Issue
Block a user