docs(tasks): refine T-580 settings cleanup
This commit is contained in:
+28
-12
@@ -1,6 +1,6 @@
|
||||
---
|
||||
id: T-580
|
||||
title: ⑤设置精简:删真实提交闸/关页开关/jpg质量,合并并行为「同时更新虾皮账号(≤5)」,改名Chrome就绪超时
|
||||
title: ⑤设置精简:删真实提交闸/关页开关/jpg质量,合并并行为「同时更新蝦皮账号(≤5)」,改名Chrome就绪超时
|
||||
phase: 7
|
||||
deps: [T-571, T-578]
|
||||
status: TODO
|
||||
@@ -9,7 +9,7 @@ created: 2026-07-10
|
||||
|
||||
## 问题 / 背景
|
||||
|
||||
软件已打包给运营正式使用,⑤设置混装了开发期安全闸、部署项、能被数字蕴含的冗余布尔和运营用不到的技术旋钮,导致「很多设置不知道怎么用」。本任务按定案精简五处。核过的关键事实:
|
||||
软件已打包给运营正式使用,⑤设置混装了开发期安全闸、部署项、能被数字蕴含的冗余布尔和运营用不到的技术旋钮,导致「很多设置不知道怎么用」。本任务按定案精简五处,但必须保留③「开始更新」确认弹窗作为线上提交的唯一显式确认边界。核过的关键事实:
|
||||
|
||||
- `allow_real_submit`(默认 False)是 dry-run 之外点「开始更新」时的第二道闸;`_update_safety_error`(`apply.py`)**只**检查它。
|
||||
- `close_success_tab`(默认 False):T-578 后失败已必关,成功由它决定是否关。
|
||||
@@ -23,40 +23,55 @@ created: 2026-07-10
|
||||
- `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。
|
||||
- `docs/04-architecture.md` / `docs/api.md`:把“安全开关阻断”改成“开始更新确认弹窗阻断”;明确「检查本轮更新」仍是 dry-run/预览,不提交线上。
|
||||
- **不加**开发环境变量兜底(用户明确要纯删除)。
|
||||
|
||||
### 2. 删「成功后关闭本次新开编辑页」,成功也自动关页
|
||||
- `app/gui/tabs/settings.py`:删 `close_success_tab_checkbox` 及保存/加载分支。
|
||||
- `app/appconfig.py`:删 `close_success_tab` key(或保留常量恒 True,实现时择一,验收看行为)。
|
||||
- `app/appconfig.py`:删 `close_success_tab` key;旧配置里出现该 key 时加载不报错,保存后不再写回。
|
||||
- `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` 附近),改为固定成功关闭语义。
|
||||
- 若为减少调用面破坏而临时保留 `apply_task(..., close_success_tab=...)` 参数,只能作为兼容参数存在,不得再由 GUI/config 控制行为;验收以 app 新建 tab 成功/失败都关闭为准。
|
||||
|
||||
### 3. 合并并行为单控件「同时更新虾皮账号」,上限锁 5,**带强制迁移**
|
||||
- `app/gui/tabs/settings.py`:删 `parallel_accounts_checkbox`;`max_parallel_accounts_spin` 的 `setRange(1, 16)` → `setRange(1, 5)`;label「最大并行账号数」→「同时更新虾皮账号」;tooltip 注明「1=逐个更新,不并行」。
|
||||
### 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 账号并行。
|
||||
- `app/appconfig.py`:新默认 `max_parallel_accounts` 改为 **1**;加载/保存时都把 `max_parallel_accounts` 夹紧到 `1..5`,不能只靠 UI 限制。
|
||||
- **强制迁移(必须做,否则事故)**:`app/appconfig.py` 加载/规整 config 时,若旧 config 含 `parallel_accounts`:`==False` → 强制把 `max_parallel_accounts` 置 **1**;`==True` → 保留旧 `max_parallel_accounts` 后夹紧到 `1..5`;处理后丢弃 `parallel_accounts` key。没有这步,已上线的串行用户(`False+2`)升级后会静默变 2 账号并行。
|
||||
- 若旧/手工配置没有 `parallel_accounts`:缺失 `max_parallel_accounts` 时用新默认 1;已有 `max_parallel_accounts` 时只夹紧并保留,避免 T-580 后用户在 UI 设置成 2/3 后下一次启动又被重置。
|
||||
- 保存配置后不再写 `parallel_accounts`;运行分支只认 `max_parallel_accounts > 1`。
|
||||
|
||||
### 4. 「CDP就绪超时(秒)」改名「Chrome就绪超时(秒)」
|
||||
- `app/gui/tabs/settings.py`:改 `cdp_ready_timeout` 对应 label 文案为「Chrome就绪超时(秒)」(避免与 AI/cmhub section 已有的「连接超时(秒)」撞词)。
|
||||
### 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,不删数据默认。
|
||||
- **保留读取逻辑**:`app/appconfig.py` DEFAULT_CONFIG `jpg_quality` 留 90,`ai.py` 各处 `generation_cfg.get("jpg_quality")`/默认 90 不动——只删 UI,不删数据默认;旧配置带 `jpg_quality` 时仍正常读取/保存,不向用户暴露控件。
|
||||
|
||||
### 文档同步
|
||||
- `docs/04-architecture.md`(第七节 CDP tab 生命周期:成功也关 app 页)、`docs/api.md`(`apply_task`/③流程去掉 allow_real_submit 闸、成功关页)、⑤设置相关 UI 文档/svg;⑤ section「蝦皮更新安全 / 执行模式」删掉唯一"安全"项后更名为「蝦皮更新执行」之类(实现定名)。
|
||||
- `docs/routes.md` / 相关 UI 线框图:⑤设置页删除开发期控件,③更新页仍展示最终确认与检查按钮语义。
|
||||
|
||||
## 实施顺序建议
|
||||
|
||||
1. 先改 `app/appconfig.py` 默认值、旧配置迁移、夹紧和保存去旧 key,并补 `tests/test_appconfig.py`。
|
||||
2. 再改⑤设置页 UI 删除控件/改 label,并补 `tests/test_gui.py`。
|
||||
3. 再改③更新页、`ApplyWorker`、`editor` tab 生命周期,并补 `tests/test_editor_login.py` / 相关 GUI worker 测试。
|
||||
4. 最后同步 `docs/04-architecture.md`、`docs/api.md`、`docs/routes.md` 和必要 UI 图;不要把 release 打包或版本号更新混进本任务。
|
||||
|
||||
## 验收要点
|
||||
|
||||
- ⑤不再有「允许真实提交线上商品」「允许更新封面」「成功后关闭本次新开编辑页」「多账号并行更新」「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。单测覆盖两种旧值。
|
||||
- 「同时更新蝦皮账号」spin 范围 1–5;默认值 1;值 1 → 串行(`_run_parallel_by_account` 不触发)、≥2 → 并行到该上限。
|
||||
- **迁移**:旧 config `parallel_accounts=False, max=2` 加载后 `max` 变 1(串行不回归);`parallel_accounts=True, max=3` → max 保留 3;`parallel_accounts=True, max=16` → max 夹紧为 5;加载/保存后 config 不再含 `parallel_accounts` key。单测覆盖上述旧值。
|
||||
- `parallel_accounts` 读取点全部改为 `max>1`:`rg "parallel_accounts"` 仅剩迁移代码,无行为分支残留。
|
||||
- Chrome就绪超时 label 文案更新,功能(`wait_debug_ready` 超时)不变。
|
||||
- Chrome 就绪超时 label 文案更新,功能(`wait_debug_ready` 超时)不变。
|
||||
- jpg 质量删 UI 后,生成图仍按 90 质量保存(`ai.py` 读取默认 90 不回归)。
|
||||
- 配置保存后不再写 `allow_real_submit`、`allow_cover_update`、`close_success_tab`、`parallel_accounts`;旧配置包含这些 key 时加载不报错。
|
||||
- 验证命令(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`
|
||||
@@ -71,6 +86,7 @@ created: 2026-07-10
|
||||
- 不改 AI 生成图保存链路(`_save_jpeg` 仍按传入质量),只锁 UI 默认。
|
||||
- 不改 ①采集/④登录/CDP 选择器/DB schema/cmhub 链路。
|
||||
- 不加开发环境变量兜底(本任务纯删 `allow_real_submit`)。
|
||||
- 不在本任务构建 release、不改 `APP_VERSION`、不处理当前工作区里与 T-580 无关的文件。
|
||||
|
||||
## 执行记录
|
||||
|
||||
|
||||
Reference in New Issue
Block a user