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

52 lines
3.3 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-697
title: 移除主窗口应用内重复标题
phase: 7
deps: [T-696]
status: DONE
created: 2026-07-23
---
## 问题 / 背景
主窗口当前同时使用 `setWindowTitle(display_name())` 设置 Windows 原生标题栏,并在六个 Tabs 上方通过 `QLabel(display_name())` 再显示一次相同应用名称。两个标题上下相邻,信息语义完全重复,占用桌面工作台的垂直空间,也削弱右侧会员状态的层级。
Windows 原生标题必须保留,用于窗口识别、任务栏/Alt+Tab 展示和系统窗口操作。应用内顶部区域还需要承载 T-696 的会员账号、套餐和有效期,因此不能整体删除,只应改为轻量会员状态栏。
## 方案
- 保留 `MainWindow.setWindowTitle(display_name())` 和现有窗口图标,不修改 Windows 原生标题栏或窗口拖动行为。
- 删除应用内 `_header_title_label`、`appHeaderTitle` 对象和对应字体样式,不用其他品牌文字、图标或占位标签替代。
- 保留 `appHeader` 容器与右侧 `subscriptionStatusLabel`;会员有效、观察中、异常和验证中状态逻辑不变。
- 状态栏继续右对齐,并适当收紧上下边距;不设置固定高度,让中文长套餐、系统字体放大和高 DPI 下仍可自然撑开。
- 这是单个标签和间距的局部调整,不改变导航模型、业务流程或交互状态,因此不新增 HTML/SVG 原型。
- 更新 `docs/routes.md`,明确顶部区域只承载会员状态,应用名称以 Windows 原生标题栏为准。
## 验收要点
- Windows 原生标题仍显示当前 `display_name()`,任务栏和窗口标题行为不变。
- Tabs 上方不再出现第二个“蝦皮圈優化助手”应用名称。
- 顶部会员账号、套餐、有效期和观察状态仍正常显示并保持右对齐。
- 顶部区域高度较原布局收紧,但在 Qt 字体/DPI 自适应时不会裁切文字。
- 订阅观察模式、设置保存后重查、六个 Tab 和状态栏功能不受影响。
- 自动验证:
- 主窗口标题与顶部会员状态定向 GUI 测试
- `py -3.10 -m unittest discover -s tests`
- `py -3.10 -m ruff check app tests main.py`
- `py -3.10 -m compileall app main.py`
- `git diff --check`
## 边界(不改什么)
- 不自定义、隐藏或替换 Windows 原生标题栏。
- 不移动会员状态到系统标题栏、TabBar 或底部状态栏。
- 不修改 T-696 订阅查询、观察/强制开关、接口或门禁逻辑。
- 不修改六个业务 Tab、主题色、按钮、表格、CDP 或蝦皮业务流程。
## 执行记录
- 2026-07-23:保留 `MainWindow.setWindowTitle(display_name())` 与窗口图标,移除应用内 `_header_title_label`、`appHeaderTitle` 和对应字体样式,Tabs 上方不再重复显示应用名称。
- `appHeader` 改为只承载右对齐会员状态的轻量区域,增加“会员状态栏”无障碍名称;上下边距从 `8/4` 收紧为 `4/2`,不设置固定高度,保留字体和 DPI 自适应。
- 更新路由文档和 GUI 回归测试,覆盖系统窗口标题、重复标题不存在、会员状态标签保留、状态栏对象语义与边距。
- 验证通过:主窗口定向 GUI 测试 3 项、`py -3.10 -m unittest discover -s tests`(682 项)、`py -3.10 -m ruff check app tests main.py`、`py -3.10 -m compileall app main.py`、`git diff --check`。