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

3.3 KiB
Raw Blame History

id, title, phase, deps, status, created
id title phase deps status created
T-697 移除主窗口应用内重复标题 7
T-696
DONE 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。