Files
cmshoppe/docs/tasks/T-580.md
T
chengmaandClaude Opus 4.8 81247b54e3 docs(tasks): add T-580 settings simplification (remove submit-gate/close-toggle/jpg, merge parallel<=5, rename timeout)
⑤设置精简五处:删真实提交闸(默认允许)+关页开关(成功也自动关页)+
jpg质量(锁90);多账号并行合并为「同时更新虾皮账号」上限5,含强制
迁移(旧串行用户 False+2 → max=1,防静默变并行)+改4处读取点;
CDP就绪超时改名 Chrome就绪超时避免与AI连接超时撞词。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 09:39:51 +08:00

78 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
id: T-580
title: ⑤设置精简:删真实提交闸/关页开关/jpg质量,合并并行为「同时更新虾皮账号(≤5)」,改名Chrome就绪超时
phase: 7
deps: [T-571, T-578]
status: TODO
created: 2026-07-10
---
## 问题 / 背景
软件已打包给运营正式使用,⑤设置混装了开发期安全闸、部署项、能被数字蕴含的冗余布尔和运营用不到的技术旋钮,导致「很多设置不知道怎么用」。本任务按定案精简五处。核过的关键事实:
- `allow_real_submit`(默认 False)是 dry-run 之外点「开始更新」时的第二道闸;`_update_safety_error`(`apply.py`)**只**检查它。
- `close_success_tab`(默认 False):T-578 后失败已必关,成功由它决定是否关。
- `parallel_accounts`(bool,默认F) + `max_parallel_accounts`(int,默认2,范围1-16):`workers.py:674` 判定 `parallel_accounts and max>1`。**`max` 在 bool 关时是沉睡默认值 2**——已上线用户刻意关并行的 config 是 `False+2`。
- `cdp_ready_timeout`(默认60)管的是 `chrome.wait_debug_ready(port,timeout)`(`accounts.py:286`)——Chrome 启动后等调试端口就绪的超时。
- `jpg_quality` 默认本就是 90(`appconfig.py:97`、`ai.py:200`),多处 `generation_cfg.get("jpg_quality")` 读取。
## 方案(改哪个文件、改成什么)
### 1. 删「允许真实提交线上商品」,默认允许提交
- `app/gui/tabs/settings.py`:删 `allow_real_submit_checkbox` 及保存/加载分支;连带删已隐藏的 `allow_cover_update_checkbox`(死控件)。
- `app/gui/tabs/apply.py`:删 `_update_safety_error`(删后恒 None,是死代码)、`_show_update_safety_error`、`_start_update` 里的安全拦截调用。真实提交守闸只保留「开始更新」确认弹窗(红线弹窗不变)。
- `app/appconfig.py`:从 DEFAULT_CONFIG 删 `allow_real_submit`、`allow_cover_update` key。
- **不加**开发环境变量兜底(用户明确要纯删除)。
### 2. 删「成功后关闭本次新开编辑页」,成功也自动关页
- `app/gui/tabs/settings.py`:删 `close_success_tab_checkbox` 及保存/加载分支。
- `app/appconfig.py`:删 `close_success_tab` key(或保留常量恒 True,实现时择一,验收看行为)。
- `app/editor.py`:`_close_applied_product` 简化为——**app 新建的 tab(`created_by_app=True`)成功失败都关;复用的用户页永不关**。成功关闭保留 `time.sleep(2)` 渲染缓冲;失败不等待(T-578 口径)。
- `app/gui/workers.py` `ApplyWorker` 不再从 config 读 `close_success_tab` 传参(`workers.py:939` 附近),改为固定成功关闭语义。
### 3. 合并并行为单控件「同时更新虾皮账号」,上限锁 5,**带强制迁移**
- `app/gui/tabs/settings.py`:删 `parallel_accounts_checkbox`;`max_parallel_accounts_spin` 的 `setRange(1, 16)` → `setRange(1, 5)`;label「最大并行账号数」→「同时更新虾皮账号」;tooltip 注明「1=逐个更新,不并行」。
- `app/gui/workers.py:674`、`app/gui/tabs/apply.py:285,500`、`workers.py:595/636/1106/1128` 等**所有读 `parallel_accounts` 的分支改为 `max_parallel_accounts > 1` 单条件**(串行/并行日志同步)。
- **强制迁移(必须做,否则事故)**:`app/appconfig.py` 加载/规整 config 时,若旧 config 含 `parallel_accounts`:`==False` → 强制把 `max_parallel_accounts` 置 **1**;`==True` → 保留原值;处理后丢弃 `parallel_accounts` key。**只认 `max_parallel_accounts`**。没有这步,已上线的串行用户(`False+2`)升级后会静默变 2 账号并行。
### 4. 「CDP就绪超时(秒)」改名「Chrome就绪超时(秒)」
- `app/gui/tabs/settings.py`:改 `cdp_ready_timeout` 对应 label 文案为「Chrome就绪超时(秒)」(避免与 AI/cmhub section 已有的「连接超时(秒)」撞词)。
- 只改显示文案,不改 config key `cdp_ready_timeout`、不改 `wait_debug_ready` 语义。
### 5. 删「jpg质量」控件,锁定 90
- `app/gui/tabs/settings.py`:删 `jpg_quality_spin` 及保存/加载分支(从 `ai_form` 移除该行)。
- **保留读取逻辑**:`app/appconfig.py` DEFAULT_CONFIG `jpg_quality` 留 90,`ai.py` 各处 `generation_cfg.get("jpg_quality")`/默认 90 不动——只删 UI,不删数据默认。
### 文档同步
- `docs/04-architecture.md`(第七节 CDP tab 生命周期:成功也关 app 页)、`docs/api.md`(`apply_task`/③流程去掉 allow_real_submit 闸、成功关页)、⑤设置相关 UI 文档/svg;⑤ section「蝦皮更新安全 / 执行模式」删掉唯一"安全"项后更名为「蝦皮更新执行」之类(实现定名)。
## 验收要点
- ⑤不再有「允许真实提交线上商品」「允许更新封面」「成功后关闭本次新开编辑页」「多账号并行更新」「jpg质量」控件。
- 点「开始更新」不再被安全开关拦截,直接进确认弹窗;`_update_safety_error` 相关死代码已删净(`rg allow_real_submit` 无残留)。
- 应用成功:app 新建 tab 关闭(含 2 秒渲染缓冲);应用失败:app 新建 tab 关闭(不等待,T-578 不回归);复用的用户 tab 成功/失败均不关。
- 「同时更新虾皮账号」spin 范围 1–5;值 1 → 串行(`_run_parallel_by_account` 不触发)、≥2 → 并行到该上限。
- **迁移**:旧 config `parallel_accounts=False, max=2` 加载后 `max` 变 1(串行不回归);`parallel_accounts=True, max=3` → max 保留 3;加载后 config 不再含 `parallel_accounts` key。单测覆盖两种旧值。
- `parallel_accounts` 读取点全部改为 `max>1`:`rg "parallel_accounts"` 仅剩迁移代码,无行为分支残留。
- Chrome就绪超时 label 文案更新,功能(`wait_debug_ready` 超时)不变。
- jpg 质量删 UI 后,生成图仍按 90 质量保存(`ai.py` 读取默认 90 不回归)。
- 验证命令(unittest,不引入 pytest):
- `py -3.10 -m unittest tests.test_gui tests.test_appconfig tests.test_editor_login tests.test_ai`
- `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`
## 边界(不改什么)
- 不改③「开始更新」确认弹窗(红线,仍是真实提交唯一守闸)、「检查本轮更新」dry-run、其余③按钮。
- 不改 `wait_debug_ready`/CDP 就绪判断逻辑本身,只改 label。
- 不改 AI 生成图保存链路(`_save_jpeg` 仍按传入质量),只锁 UI 默认。
- 不改 ①采集/④登录/CDP 选择器/DB schema/cmhub 链路。
- 不加开发环境变量兜底(本任务纯删 `allow_real_submit`)。
## 执行记录
(做完在这里写:改了什么文件、跑了什么验证命令及结果、遇到的阻塞、关键决策。)