2026-07-23 14:47:36 +08:00
|
|
|
|
---
|
|
|
|
|
|
id: T-698
|
|
|
|
|
|
title: 会员信息移入 Windows 原生标题栏
|
|
|
|
|
|
phase: 7
|
|
|
|
|
|
deps: [T-697]
|
2026-07-23 14:51:05 +08:00
|
|
|
|
status: DONE
|
2026-07-23 14:47:36 +08:00
|
|
|
|
created: 2026-07-23
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 问题 / 背景
|
|
|
|
|
|
|
|
|
|
|
|
T-697 已移除 Tabs 上方重复的应用名称,但仍保留一整行应用内会员状态栏。用户希望把账号、套餐和有效期直接加载到 Windows 原生窗口标题的应用名称后面,不再在 Tabs 上方占用独立区域。
|
|
|
|
|
|
|
|
|
|
|
|
该调整会让会员摘要同时出现在窗口标题、任务栏和 Alt+Tab 中;这是本次需求明确接受的展示范围。API Key、接口地址、原始错误和支付信息仍不得进入窗口标题。
|
|
|
|
|
|
|
|
|
|
|
|
## 方案
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 原生窗口标题
|
|
|
|
|
|
|
|
|
|
|
|
- 默认、正在检测、未配置、无订阅、到期、撤销、账号禁用、Key 无效、网络异常和旧服务兼容状态,窗口标题只显示 `display_name()`。
|
|
|
|
|
|
- 订阅有效时显示:`应用名称 | 账号名 · 套餐名 · 有效至日期`。
|
|
|
|
|
|
- 宽限期显示:`应用名称 | 账号名 · 套餐名 · 宽限至日期`。
|
|
|
|
|
|
- 账号、套餐文本只使用 `SubscriptionStatus` 已归一化的安全字段;标题不得包含 API Key、`manage_url`、`notice_id`、接口路径或原始响应。
|
|
|
|
|
|
- 状态从有效切换为异常、重新检测或配置变更时,立即恢复纯应用名称,避免显示陈旧会员信息。
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 删除 Tabs 上方状态行
|
|
|
|
|
|
|
|
|
|
|
|
- 删除 `subscriptionStatusLabel`、`appHeader` 及其布局;中央区域直接从六个 Tabs 开始,不保留空白占位。
|
|
|
|
|
|
- 保留 Windows 原生窗口标题、图标、窗口拖动、任务栏和 Alt+Tab 行为。
|
|
|
|
|
|
- 检测中、观察模式异常、正式门禁原因和设置保存反馈统一由现有底部状态栏显示中文信息。
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 订阅行为不变
|
|
|
|
|
|
|
|
|
|
|
|
- T-696 继续保持“真实检测、观察模式不限制使用”;本任务不启用正式门禁。
|
|
|
|
|
|
- 启动异步检查、保存设置后重查、陈旧回调隔离、新提交放行和 `notice_id` 模态框抑制逻辑不变。
|
|
|
|
|
|
- 标题更新只在 GUI 主线程处理,不让 Worker 直接操作窗口。
|
|
|
|
|
|
|
|
|
|
|
|
## 验收要点
|
|
|
|
|
|
|
|
|
|
|
|
- 初始窗口标题仅为当前 `display_name()`,Tabs 上方不再存在 `appHeader` 或 `subscriptionStatusLabel`。
|
|
|
|
|
|
- 有效“测试”套餐返回后,窗口标题包含账号、套餐“测试”和有效期。
|
|
|
|
|
|
- 宽限状态使用“宽限至”;异常或重新检测时立即恢复纯应用名称。
|
|
|
|
|
|
- 检测中和异常原因仍能在底部状态栏看到,观察模式下所有工作流继续可用。
|
|
|
|
|
|
- 窗口标题不包含 API Key、接口地址、会员中心地址、通知标识或原始错误。
|
|
|
|
|
|
- 自动验证:
|
|
|
|
|
|
- 主窗口原生标题与订阅状态定向 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 原生标题栏,不实现无边框窗口。
|
|
|
|
|
|
- 不修改 cmhub 订阅接口、状态解析、套餐、支付、会员中心或服务端授权。
|
|
|
|
|
|
- 不启用客户端正式门禁,不修改六个业务 Tab、CDP 或蝦皮流程。
|
|
|
|
|
|
- 不在底部状态栏重复长期展示有效账号和套餐;有效摘要以窗口标题为准。
|
|
|
|
|
|
|
|
|
|
|
|
## 执行记录
|
|
|
|
|
|
|
2026-07-23 14:51:05 +08:00
|
|
|
|
- 2026-07-23:删除 `subscriptionStatusLabel`、`appHeader` 及其布局,主窗口中央区域直接从六个 Tabs 开始,不保留顶部空白状态行。
|
|
|
|
|
|
- 新增主线程原生标题更新方法:有效状态显示“应用名称 | 账号 · 套餐 · 有效至日期”,宽限状态显示“宽限至日期”;账号、套餐和日期做单行空白归一化。开始重新检测及任一非有效状态会立即恢复纯应用名称。
|
|
|
|
|
|
- 检测中、观察模式异常和正式门禁原因继续由底部状态栏展示;T-696 的真实查询、观察放行、保存后重查、陈旧结果隔离和通知抑制逻辑不变。窗口标题不读取或显示 API Key、接口/会员中心地址、通知标识和原始错误。
|
|
|
|
|
|
- 更新架构、路由和 GUI 回归测试,覆盖顶部状态行不存在、有效/宽限标题、异常重置、检测中反馈及敏感字段不进入标题。
|
|
|
|
|
|
- 验证通过:主窗口定向 GUI 测试 5 项、`py -3.10 -m unittest discover -s tests`(683 项)、`py -3.10 -m ruff check app tests main.py`、`py -3.10 -m compileall app main.py`、`git diff --check`。
|