Files
cmshoppe/docs/tasks/T-627.md
T

82 lines
6.2 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-627
title: 压缩商品套图顶部空间并重排上下文操作栏
phase: 7
deps: [T-622]
status: TODO
created: 2026-07-14
---
## 问题 / 背景
⑥「商品套图」已在 T-622 落地,但当前顶部控件占用空间偏大,操作入口分散:
- 内部「套图任务」使用 `QTabBar`,会继承主窗口 `TAB_STYLE` 的 `min-height: 34px`、上下 `padding: 8px` 等大导航样式,作为二级任务标签显得过高。
- 账号下拉框和商品 ID 输入框当前最小宽度分别为 180px、150px;账号、商品 ID 位于左侧,「拉取蝦皮主图」单独靠右,未形成连续的任务上下文操作组。
- 「添加图片」位于商品原图标题栏,「历史生成」「打开文件夹」位于生成结果工具栏,常用项目操作分散。
- 生成设置通过 `_prefixed_combo()` 把字段名重复写进每个选项,如「平台 Shopee」「国家 中国台湾」。信息可识别,但视觉重复。
顾客希望压缩顶部高度和输入控件宽度,将常用操作集中,并去掉四个下拉选项中的字段名前缀。
百分比按以下可用性边界解释,不直接做不可读的机械缩放:
- 「任务列表高缩小到 33%」按**缩小约 33%、保留约 67% 高度**处理;若只保留当前高度的 33%,任务文字和关闭按钮会被裁切。
- 账号宽度可按当前 180px 的约 66% 起步,但须允许长账号名查看完整内容。
- 商品 ID 不按当前 150px 的 60% 固定成 90px;Shopee 商品 ID 常为 11~13 位,90px 无法完整展示。
本任务是 T-622 的后续 UI 决策:**覆盖 T-622 的 P2「下拉值内联前缀」展示规则和 P4 的具体宽度建议**,但不改变四项设置的真实值、保存方式和生成上下文语义。
## 方案
### 1. 压缩二级任务标签
- 仅为 `suiteTaskTabs` 增加对象级局部样式,不修改主窗口模块标签的全局 `TAB_STYLE`。
- 二级任务标签的最终可视总高度控制在 32~36px,文字、选中态、关闭按钮均不得裁切。
- 「新建套图任务」按钮与任务标签同行对齐;关闭按钮及新增按钮的有效点击区域不小于 24~28px。
- 保留任务标签可切换、可拖动、可关闭及新增任务行为。
### 2. 统一顶部操作栏
把现有上下文条整理为左右两个连续操作组:
- 左侧项目操作:`历史生成` → `打开结果文件夹` → `添加图片`。
- 右侧任务上下文:`账号` → 账号下拉框 → `商品ID` → 商品 ID 输入框 → `拉取蝦皮主图`。
- 在左右操作组之间加入弹性空间,使账号、商品 ID 和拉取按钮整体靠右,而不是只让拉取按钮靠右。
- 「打开文件夹」改名为「打开结果文件夹」,明确其打开当前生成批次目录的语义。
- 从商品原图标题栏和生成结果工具栏移除迁移后的重复按钮;商品原图标题栏保留标题和图片数量,生成结果工具栏保留标题、汇总、撤销及更多操作。
- 按钮迁移只调整视觉位置,不重新创建业务逻辑:历史切换的选中状态、打开目录、添加本地图片等原信号与行为保持不变。
- 保持键盘 Tab 顺序与视觉顺序一致;图标按钮如被采用,必须提供中文 tooltip 和 `accessibleName`。
### 3. 控件宽度与长文本处理
- 账号下拉框:最小宽度 120px、推荐宽度约 140px、最大宽度 160px;长账号显示受限时,通过当前项及下拉项 tooltip 提供完整账号信息。
- 商品 ID 输入框:按 13 位数字和控件内边距通过字体度量确定宽度,并限制在约 120~140px;不得固定为 90px。
- 商品 ID 输入框在正常窗口和 Windows 100% / 125% / 150% 显示缩放下,应完整展示常见 11~13 位数字;已有外部「商品ID」标签时,placeholder 可缩短为「输入商品ID」。
- 窗口变窄时优先压缩弹性空白,不允许操作组重叠、按钮文字截断或控件移出可视区域。
### 4. 简化生成设置下拉内容
- 保留当前两列两行布局,为四个字段增加紧凑、常驻的独立标签:`平台`、`站点`、`语言`、`比例`。
- 下拉框选项只显示真实值,如 `Shopee`、`中国台湾`、`繁体中文`、`1:1`,不再在每个选项中重复「平台 / 国家 / 语言 / 比例」。
- 不允许通过“截掉前两个字符”的字符串切片实现;应直接以真实值作为显示文本。
- 每个选项的 `itemData` 继续保存原始业务值,配置保存/恢复及 `build_suite_prompt()` 获得的值不得变化。
- 四个控件补充中文 tooltip 和无障碍名称;仅改变显示层,不改变平台、站点、语言和比例的选项集合。
## 验收要点
- 二级套图任务栏明显降低,但任务名称、关闭按钮、新增按钮显示完整;①~⑥主模块标签高度和样式不变。
- 顶部操作栏左侧依次为「历史生成 / 打开结果文件夹 / 添加图片」,右侧账号、商品 ID、拉取按钮连续排列并整体靠右。
- 「历史生成」切换状态和结果刷新正常;打开结果文件夹、添加图片、拉取蝦皮主图行为与改版前一致,界面中无重复入口。
- 长账号名可查看完整文本;11~13 位商品 ID 在常用字体和缩放比例下不被裁切。
- 四个下拉框只显示值,独立标签能明确字段含义;切换、保存、恢复后 `currentData()` 及生成提示词中的业务值与改版前一致。
- 在最小支持窗口、常规窗口以及 Windows 100% / 125% / 150% 显示缩放下检查:无文字重叠、无横向溢出、无按钮被遮挡,键盘 Tab 顺序正确。
- 自动验证:`py -3.10 -m unittest discover -s tests`、`python -m ruff check app tests main.py`、`py -3.10 -m compileall app main.py`、`git diff --check` 全绿。
## 边界(不改什么)
- 不修改商品套图项目、图片资产、生成任务的数据结构和数据库 schema。
- 不修改 cmhub 生图请求、轮询、下载、重试、并发和计费逻辑。
- 不修改拉取蝦皮主图的 CDP 流程、选择器或 Chrome 前台切换策略。
- 不修改①~⑤模块 UI,不修改主窗口全局标签样式。
- 不新增平台、站点、语言或比例选项,不改变现有配置值的含义。