From 956fc727be2971e68d92ac17d67c38063ead080c Mon Sep 17 00:00:00 2001 From: chengma Date: Thu, 6 Aug 2026 12:06:49 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BD=92=E6=A1=A3=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?#3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/task/3-拆分页面-ui-模块.md | 60 +++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 docs/task/3-拆分页面-ui-模块.md diff --git a/docs/task/3-拆分页面-ui-模块.md b/docs/task/3-拆分页面-ui-模块.md new file mode 100644 index 0000000..99c10e7 --- /dev/null +++ b/docs/task/3-拆分页面-ui-模块.md @@ -0,0 +1,60 @@ +# 3 拆分 PDD 与设置页面 UI 模块 + +- 类型:重构 +- 父级大工单:#1 +- 所属 MVP / 版本:#2 / MVP +- 状态:已完成 +- 日期:2026-08-06 +- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/3 + +## 背景与目标 + +原来的 `client/src/ui_main.py` 同时包含页面布局和主窗口装配,不方便初级程序员继续维护。本任务把 PDD、设备和设置页面移动到已有的页面模块,让 `ui_main.py` 只负责应用启动、导航和页面装配。 + +## 最终方案 + +- `PDDTaskPage` 移动到 `client/src/pdd_ui.py`。 +- `DevicePage` 和 `SettingsPage` 移动到 `client/src/settings_ui.py`。 +- `client/src/ui_main.py` 使用包内相对导入装配三个页面。 +- 保留全部控件公开属性、页面 `objectName`、导航顺序、窗口标题和现有界面行为。 +- 没有增加业务逻辑、依赖、数据库或接口改动。 + +最终实现与建单方案一致。 + +## 改了哪些 + +- `client/src/pdd_ui.py`:补充 `PDDTaskPage` 页面实现和所需导入。 +- `client/src/settings_ui.py`:补充 `DevicePage`、`SettingsPage` 页面实现和所需导入。 +- `client/src/ui_main.py`:删除具体页面布局,只保留启动、主窗口和导航装配。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| `PDDTaskPage` 只定义在 `pdd_ui.py` | 通过 | +| `SettingsPage` 和 `DevicePage` 只定义在 `settings_ui.py` | 通过 | +| `ui_main.py` 不再包含具体页面布局 | 通过 | +| 页面 `objectName`、控件公开属性和导航装配保持不变 | 通过 | +| 三个文件通过 Python 语法检查 | 通过 | +| 离屏创建 `MainWindow` 并打印 `OK` | 通过 | + +## 测试 + +- 执行的命令: + + ```powershell + C:/Python310/python.exe -m py_compile src/ui_main.py src/pdd_ui.py src/settings_ui.py + ``` + + ```powershell + $env:QT_QPA_PLATFORM="offscreen" + C:/Python310/python.exe -c "from src.ui_main import MainWindow; from PyQt5.QtWidgets import QApplication; app=QApplication([]); w=MainWindow(); assert w.pddTaskPage.objectName() == 'pddTaskPage'; assert w.devicePage.objectName() == 'devicePage'; assert w.settingsPage.objectName() == 'settingsPage'; print('OK'); w.close(); app.quit()" + Remove-Item Env:QT_QPA_PLATFORM + ``` + +- 结果:语法检查通过;离屏测试打印 `OK`。测试环境另外输出 PyQt5 字体目录缺失警告,不影响窗口创建结果。 +- **没验证到的部分**:未进行人工界面对比、真机操作、Windows 多缩放和主题切换测试;本任务没有执行设备连接或自动化。 + +## 相关提交 + +- `5916de4` 拆分页面 UI 模块