Files
cmshoppe/docs/ux-review.md
T

105 lines
9.0 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.
# 产品与 UI 评估(模块 / 组件合理性)
> 立场:以**产品经理(工作流 / 业务逻辑)+ UI 设计师(布局 / 组件 / 信息层级)**双视角,评估当前 5 Tab GUI 的所有模块与组件是否合理,并给出优化方案。
> 基线:`docs/routes.md` 界面结构 + `docs/current-state.md` 当前实现快照(2026-07-01)。
> 性质:评估与建议,不改代码。落地项见文末优先级清单,可转 `docs/06-tasks.md` 正式任务。
## 当前状态说明(2026-07-01)
本文保留当时的产品/UI评估原文,但部分 P0 项已在后续任务中落地:T-509 已支持②「新标题」列本地微调;T-508 已把③「重置更新状态」移到任务表右键菜单,并强化「开始更新」主操作;T-510 已把用户可见「预览本轮更新」统一为「检查本轮更新」。继续落地时,不要把这些历史问题重复建任务;当前剩余可执行项以 `docs/06-tasks.md` 的 T-511 及之后任务为准。
## 总判断
整体架构成熟、克制、内部一致:5 Tab 流水线映射 `imported → collected → generated → applied` 四阶段;worker/QThread、`run_logs` 运行日志、Excel 回写重试、安全二次确认在各 Tab 高度统一;安全红线(③二次确认、`committed` 提示、批次软删除)落得扎实。**定位是"给熟练运营重复使用"的桌面工具,作为日常工具是合理的。**
问题不在 bug,而在设计取舍留下的**体验债**——集中在下面 4 个结构性问题与若干 Tab 级问题。
---
## 一、信息架构层(最高优先)
### 1. Tab 顺序与真实依赖顺序矛盾——首次用户逆流
Tab 排列 `①采集 → ②生成 → ③更新 → ④账号 → ⑤设置`(工作流优先),但流程导航第一步是"④账号管理(首次必做)",③之前还要"⑤设置配置安全开关"。**前置条件被放在最后两个 Tab。**
- 熟练用户:账号早配好,高频①②③在前 → 正确。
- 首次用户:①点采集被拦、③点更新被拦,需反向跳④⑤ → 逆流。
取舍可接受,但代价是首次引导必须极强。现状是被动拦截(按钮禁用 + 执行前提示去④)。
**优化方案**:①②③在"无账号 / 未登录"时,用**显式空状态引导卡片**替代灰按钮,例如「第一步:前往『④账号管理』配置并登录账号 →」并带跳转按钮;账号就绪后卡片消失,老用户无感。
### 2. ③ 的安全开关藏在 ⑤,是隐性耦合
"允许真实提交""允许更新封面"是 ③ 能否工作的闸门,却住在 ⑤。为安全(不易误触)这样分是对的,但**发现性差**:首次真实更新被拦截时,用户未必知道去⑤开哪个开关。
**优化方案**:③ 的安全拦截弹窗**写明被哪个具体开关拦下**(如"未允许真实提交"),并提供「前往设置」深链按钮直接跳到 ⑤ 对应分区。
### 3. 缺批次级总览——多批次场景盲区
现在每个 Tab 各自按批次筛选看自己的列表,**没有任何地方一眼看到"批次X:导入5 / 已采集5 / 已生成3 / 已更新0"**。软删除上线后批次持续累积,运营管理多批次只能在①②③间来回数数。这是随规模暴露的缺口。
**优化方案**:加一个轻量**批次进度总览**(各阶段计数)。落点可选:①顶部按选中批次显示阶段进度条,或独立"概览"区/弹窗。数据可由 `db.list_tasks(batch_id=...)` 按 `stage/status` 聚合,无需新表。
---
## 二、逐 Tab 评估
### ① 导入采集
- **PM**:导入汇总栏(文件/行/有效/匹配/未匹配可点筛)是亮点,把校验关口前置,专业。
- **UI**:筛选弱于②③——只有"批次 + 全部/未匹配",缺"店铺/商品ID/状态"四联筛,量大时难定位单店铺,与②③不一致。
- **优化**:① 对齐②③的店铺/商品ID/状态筛选(至少店铺筛选),保持三个列表页筛选心智一致。
### ② AI生成
- **PM(历史问题,已由 T-509 解决)**:原评估时新标题不可编辑、只能重生成/重置;当前②已支持本地微调 `new_title`,继续保留该能力。
- **当前处理**:该项已由 T-509 落地,后续不要重复建“标题编辑”任务;只在回归测试中确认编辑后进入③仍走同样确认。
- **UI**:左侧 1/4 窄列塞了标题提示词 + 封面模板(下拉 + 新建/保存/另存为/重命名/删除 6 按钮)+ 插入/预览,密度过高。
- **优化**:封面模板的低频管理动作(另存为/重命名/删除)收进图标菜单或右键;或评估把模板管理移入⑤,左栏只留"选模板 + 编辑 + 预览"。
### ③ 更新shopee
- **PM**:逻辑最重也最严谨——预览→安全开关→确认→就绪预检→分批→回写→汇总,闭环完整,风险控制到位,保留。
- **UI(历史问题,已由 T-508/T-510 解决)**:原评估时按钮行 `[预览][开始更新][停止][重置更新状态][回写Excel]` 5 连排;当前「检查本轮更新」文案已统一,`重置更新状态` 已移到任务表右键菜单,后续只需继续做语义色和风险视觉强化。
- **当前处理**:重置入口与文案统一已由 T-508/T-510 落地;剩余只做 `开始更新` 的风险视觉强化、`回写Excel` 次级化等 T-512/T-513 范围内的颜色/层级调整。
### ④ 账号管理
- **PM**:密码本地明文"仅参考"、不自动登录、人工登录 + 程序检测——安全取舍正确且清醒。
- **UI**:表格 + 按钮组清晰,●登录状态指示好,`检测登录`手动触发(不擅自开浏览器)对。基本无异议。
### ⑤ 设置
- **PM**:内容过载,AI模型 master-detail + 角色参数 + 路径端口 + Shopee安全 + 执行模式 5 类混在一页。几乎不改的基础设施(Chrome路径/端口/DB路径)和高频安全开关(允许提交)混排。
- **UI**:已在做 3 列响应式优化,方向对;但残留 `test_item_id`、`dry_run` 兼容字段是 UI 技术债。
- **优化**:视觉分区——"每次可能要动的"安全开关/执行模式一组,"装完不碰的"基础设施一组;清理或彻底隐藏 `test_item_id`/`dry_run` 兼容入口。
---
## 三、跨切面问题
- **"重置"系列(②③)是开发联调工具(T-404a 明说"联调重试辅助")泄漏进生产 UI**。对非技术运营,"退回 collected/generated"语义会困惑。
- **优化**:先明确它服务谁。若面向运营,改文案为"退回重做"并收进右键/高级区;若纯开发用,考虑加开关默认隐藏。
- **一致性做得好(保留)**:worker 模式、`run_logs` 全 Tab 统一、①③回写重试按钮对称、批次为统一枢轴。
- **容器选型合理(保留)**:线性流水线用 Tab 而非 Wizard 是对的——熟练用户要能任意跳转、重跑单阶段,Tab 支持这点。
- **状态栏提示色(建议)**:左下角状态栏可按语义轻量上色,但只改文字色、不做大面积背景。普通/就绪保持 muted 或默认;进行中用 info;成功用 success;需要用户处理但可恢复的问题用 warning;失败/阻断用 danger。状态栏只是辅助反馈,不能替代弹窗、空状态、运行日志和按钮禁用。
---
## 四、优先级清单(可转 `docs/06-tasks.md`)
| 优先级 | 问题 | 建议动作 | 涉及 |
| --- | --- | --- | --- |
| **已落地** | ②新标题不可编辑直推线上 | T-509 已开放行内编辑 `new_title` | `app/gui.py` ②、`app/db.py` |
| **已部分落地** | ③按钮行主次不分、重置误触 | T-508 已将单行"重置"移行右键菜单;视觉强化继续由 T-512/T-513 承接 | `app/gui.py` ③ |
| **P1** | 首次用户逆流撞墙 | ①②③无账号时做显式空状态引导卡片,替代灰按钮 | `app/gui.py` ①②③ |
| **P1** | ③安全开关藏⑤、发现性差 | ③拦截弹窗写明具体开关 + "去设置"深链 | `app/gui.py` ③⑤ |
| **P1** | 缺批次级总览 | 加批次阶段计数总览(聚合现有 `list_tasks`) | `app/gui.py`、`app/db.py` |
| **P2** | ⑤设置过载 + 兼容字段技术债 | 安全开关 vs 基础设施分区;清理隐藏兼容字段 | `app/gui.py` ⑤ |
| **P2** | ①筛选弱于②③ | ①对齐"店铺/商品ID/状态"筛选 | `app/gui.py` ① |
| **P2** | ②左栏组件密度过高 | 已由 T-518 落地:封面模板低频动作折叠进②本页「模板操作」,第一版不移入⑤ | `app/gui.py` ② |
| **P3** | 状态栏提示缺少语义层级 | 依据 `docs/ui-color-design.md` 的状态栏语义色建议,后续统一 `MainWindow.show_status(message, level)` 并逐步替换直接 `statusBar().showMessage(...)` | `app/gui/main_window.py`、各 Tab |
> 落地顺序建议:P0 中已落地项只做回归;剩余事项以 `docs/06-tasks.md` 的 T-511 及之后任务为准,按防误操作/首次可用性/体验打磨的收益排序推进。每条落任务时补现状/方案/验收要点,并遵守 `docs/05-coding-rules.md` 验证清单。