Conversation
[变更性质] - 此提交是上位机 GUI 的功能升级,不是缺陷修复或纯样式微调。 - 此提交将旧的单文件界面重构为模块化界面,并补齐实时波形监测所需的数据层与 mock 预览入口。 [新增功能] - 此提交新增基于 pyqtgraph 的实时波形显示、值卡、日志面板和拼贴式监测布局。 - 此提交新增 DeviceManager、MonitorStore 和 SamplePoint,用于接收周期采样流、缓存时序数据并向界面分发。 - 此提交新增 sparam-gui-mock 入口与周期推流模拟,支持在无硬件时预览界面与数据流。 [实现方案] - 此提交将 host/gui.py 拆分为 host/gui/ 包,按主窗口、侧栏、顶部栏、波形、值卡、日志和样式分离职责。 - 此提交在测试中的 Socket 模拟设备上补充周期推流能力,并新增监测缓冲测试,覆盖持续采样与 ring buffer 行为。 - 此提交补充 pyqtgraph GUI 依赖与 lockfile 更新,使 mock 预览和正式界面走同一套渲染路径。 [影响范围] - 影响 host/gui、host/sparam 和 host/tests 相关模块,以及 host/pyproject.toml 与 host/uv.lock。 - 运行方式新增 uv run sparam-gui-mock,原有 sparam-gui 入口继续保留。 - 已验证 cd host && uv run --extra test pytest -q 通过,现有主机侧测试保持绿色。
[变更性质] - 此提交是主机侧工程的维护性建设,不是新功能开发或缺陷修复。 - 此提交在项目仍然较小时引入统一的 lint、format 与 type-check 工具链,并同步清理现有代码。 [维护内容] - 此提交新增 Ruff、Mypy、.editorconfig、VS Code 任务与 README 开发说明。 - 此提交补充 host 目录的格式化、静态检查、类型检查与测试命令,并完善缓存目录忽略规则。 - 此提交将 host 侧现有模块补齐必要类型标注,修正连接抽象、GUI 方法签名与测试模拟类型。 [实现方案] - 此提交在 host/pyproject.toml 中增加 dev extra,并集中配置 Ruff 与 Mypy 规则。 - 此提交更新 .vscode/tasks.json、host/README.md 与 .gitignore,使本地开发、验证与编辑器入口保持一致。 - 此提交调整 cli.py、host/gui、host/sparam 与 tests 中的类型边界与异常处理,确保工具链在现有代码上直接可用。 [影响范围] - 影响 host 目录全部 Python 模块、开发配置文件与 lockfile。 - 本地质量门禁已验证通过:ruff format、ruff check、mypy、pytest 全部绿色。 - 运行时行为保持兼容,新增的是开发规范与静态质量保障能力。
[变更性质] - 此提交是上位机界面的结构性重构,不是新增协议能力或缺陷修复。 - 此提交将现有监测界面从表单式工具布局调整为更适合实时调参的工作台布局,并同步收敛视觉层级。 [重构动机] - 旧界面的色块层级过于平均,左侧表单、波形、值卡和日志之间缺少明确主次。 - 当前布局更像通用桌面工具,不能充分突出波形主视图,也没有形成稳定的 inspector 区域。 - mock 预览缺少界面骨架约束,后续继续调样式时容易把结构做散。 [重构方案] - 此提交将主窗口重组为左侧控制栏、中央信号工作区、右侧 inspector 三段式结构,并将值卡区收敛为更轻的 signal stats strip。 - 此提交重写 GUI 样式色阶,区分页面底、壳层、面板、卡片和输入控件层级,同时收敛按钮、chip、图表网格和语义色的视觉权重。 - 此提交调整 toolbar、sidebar、waveform、value card、log panel 与 mock preview 的细节,并新增 GUI 布局测试钉住 workspaceShell、inspectorPanel 和 signalStatsStrip 三个关键锚点。 [影响范围] - 影响 host/gui 下的主窗口、样式和主要部件,以及 host/tests/test_gui_layout.py。 - 界面行为保持兼容,监测、导出、mock 预览和现有数据链路仍按原方式工作。 - 本地已验证 ruff、mypy、offscreen pytest 全绿,mock 预览离屏实例化正常。
|
/gemini review |
There was a problem hiding this comment.
Code Review
This pull request significantly refactors the host tools, modularizing the GUI into a more maintainable structure and introducing a DeviceManager and MonitorStore for improved signal monitoring. It also enhances code quality by adding comprehensive type hints, configuring ruff and mypy, and providing VS Code tasks for development workflows. Review feedback suggests ensuring the "host quality" task executes the full suite of checks and recommends using explicit exception chaining and specific exception types in the ELF parser for better debugging and robustness.
| "type": "shell", | ||
| "command": "echo Host quality checks done", |
There was a problem hiding this comment.
当前 sparam: host quality 任务的 command 只是打印一条消息,并没有实际执行质量检查。为了确保此任务能够完整运行所有质量检查,建议将其 command 更新为按顺序执行 format、lint、type-check 和 test 任务的命令。
| "type": "shell", | |
| "command": "echo Host quality checks done", | |
| "command": "uv run --extra dev ruff format . && uv run --extra dev ruff check . && uv run --extra dev mypy cli.py gui sparam tests && QT_QPA_PLATFORM=offscreen uv run --extra gui --extra test pytest -q", |
| except ImportError as exc: | ||
| raise ImportError("pyelftools is required: pip install pyelftools") from exc |
| except Exception: | ||
| continue |
Closes #1
这次做了什么
这次把
issue #1的主体需求完整落到了 host GUI 上,范围一共分成三块:Minimal Signal Lab风格GUI / 监控侧改动
第一阶段:实时波形监控能力落地
host/gui.py拆成host/gui/包结构pyqtgraph,波形支持实时刷新、多变量叠加、时间窗口切换、暂停、PNG/CSV 导出QTimer做单次轮询,而是接到设备周期上传的数据流DeviceManager和MonitorStore,用于管理监测回调、缓存样本和驱动界面更新sparam-gui-mock,在没有硬件时也能直接看界面和假数据效果第二阶段:工作台布局重构
signal stats stripPreview协议、mock 与测试侧改动
workspaceShell、inspectorPanel和signalStatsStrip三个骨架锚点Python 质量工具链
host/pyproject.toml里新增devextraruff负责 format / lintmypy做静态类型检查.editorconfig.gitignore,清理__pycache__、.pytest_cache、.venv等本地噪音.vscode/tasks.json,补上 format / lint / type-check / test / quality 任务host/README.md,把开发、mock 预览和质量检查命令写清楚如何运行
1. 安装依赖
2. 运行真实 GUI
3. 运行 mock 预览窗口
不接硬件时建议先跑这个:
它会直接注入模拟变量和持续变化的波形数据,用来确认界面布局、图表、值卡、右侧 inspector 和日志区域是否正常。
如何运行测试
当前覆盖了:
如何运行 formatter / linter / type check
formatter
lint
type check
cd host uv run --extra dev mypy cli.py gui sparam tests一次跑完整质量门禁
本地已验证
这次更新前我本地重新跑过:
uv run --extra dev ruff check .uv run --extra dev mypy cli.py gui sparam testsQT_QPA_PLATFORM=offscreen uv run --extra gui --extra test pytest -qQT_QPA_PLATFORM=offscreen uv run --extra gui python -c "... MockPreviewController ..."结果分别是:
All checks passed!Success: no issues found in 22 source files5 passed in 0.60sPreview备注
这个 PR 现在包含三部分提交:
feat(gui): 重构实时波形监测界面chore(host): 引入 Python 代码质量工具链refactor(gui): 重构监测工作台布局第一部分对应
issue #1的主体能力,第二部分是把 host 工程拉到可持续维护的状态,第三部分是在能力已经落地的基础上,把 GUI 进一步收敛到更适合实时调参的工作台结构。