⑤设置精简五处:删真实提交闸(默认允许)+关页开关(成功也自动关页)+ jpg质量(锁90);多账号并行合并为「同时更新虾皮账号」上限5,含强制 迁移(旧串行用户 False+2 → max=1,防静默变并行)+改4处读取点; CDP就绪超时改名 Chrome就绪超时避免与AI连接超时撞词。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6.7 KiB
6.7 KiB
id, title, phase, deps, status, created
| id | title | phase | deps | status | created | ||
|---|---|---|---|---|---|---|---|
| T-580 | ⑤设置精简:删真实提交闸/关页开关/jpg质量,合并并行为「同时更新虾皮账号(≤5)」,改名Chrome就绪超时 | 7 |
|
TODO | 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_updatekey。- 不加开发环境变量兜底(用户明确要纯删除)。
2. 删「成功后关闭本次新开编辑页」,成功也自动关页
app/gui/tabs/settings.py:删close_success_tab_checkbox及保存/加载分支。app/appconfig.py:删close_success_tabkey(或保留常量恒 True,实现时择一,验收看行为)。app/editor.py:_close_applied_product简化为——app 新建的 tab(created_by_app=True)成功失败都关;复用的用户页永不关。成功关闭保留time.sleep(2)渲染缓冲;失败不等待(T-578 口径)。app/gui/workers.pyApplyWorker不再从 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_accountskey。只认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.pyDEFAULT_CONFIGjpg_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_accountskey。单测覆盖两种旧值。 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_aipython -m ruff check app tests main.pypy -3.10 -m compileall app main.pypy -3.10 -m unittest discover -s testsgit diff --check
边界(不改什么)
- 不改③「开始更新」确认弹窗(红线,仍是真实提交唯一守闸)、「检查本轮更新」dry-run、其余③按钮。
- 不改
wait_debug_ready/CDP 就绪判断逻辑本身,只改 label。 - 不改 AI 生成图保存链路(
_save_jpeg仍按传入质量),只锁 UI 默认。 - 不改 ①采集/④登录/CDP 选择器/DB schema/cmhub 链路。
- 不加开发环境变量兜底(本任务纯删
allow_real_submit)。
执行记录
(做完在这里写:改了什么文件、跑了什么验证命令及结果、遇到的阻塞、关键决策。)