Repository navigation
ClassHelper v1.3.2(远控指令:不再谎报成功 + 「上次指令」可见)
ClassHelper v1.3.2
这一版修 1.3.1 之后报上来的「下发锁屏等等指令不生效」。
先把结论说在前面:服务端的下发链路本身没有问题(用一台模拟客户端把「下发 → 心跳带回 →
列表可见 → 回执 → 清除」整条跑通过)。真正的问题是两处 —— 一处会让"执行失败"谎报成功,
一处让"点了没反应"在界面上完全看不出来。
⚠️ 升级须知
本版没有数据库迁移,装上升级即可。
但服务端与教室机器的客户端都要升:客户端那处修的是"执行失败被吞掉",服务端那处新增了
「上次指令」的返回字段。只升一边会看不到新加的那一列。
一、客户端:执行失败会谎报成功
spawn 找不到可执行文件(或没权限)时不抛异常,而是在下一个 tick 发一个异步 error 事件 ——
原先只包了 try/catch,抓不到它,于是代码一路走到 return { ok: true },
回执里写着「已下达系统命令」,Web 端看起来一切正常,机器却纹丝不动。
现在会等 200ms 的窗口确认没有立刻报错;真失败就如实回执,Web 端能看到原因。
二、Web 端:点了没生效,界面上什么都不说
一条命令被取消或过期之后就从"待执行"里消失了,页面留白 —— 而最常见的两种"没反应"恰恰是:
| 情况 | 为什么会这样 |
|---|---|
| 机器上没人确认 | 客户端弹的是**默认选中「取消」**的确认框,60 秒没人点就自动取消(这是"两端各确认一次"的设计:真正要被关掉的机器上必须当场有人知道) |
| 下达时机器离线 | 命令有效期 10 分钟,机器没上线就作废(避免离线几天后一开机被昨天的命令关掉) |
现在「客户端」页的设备表多了一列 「上次指令」:
锁屏 · 已执行:已下达系统命令
锁屏 · 本机用户取消(或 60 秒未确认)
锁屏 · 已过期 —— 下达时机器不在线(命令有效期 10 分钟)
下发成功的提示也补上了「60 秒内没人点确认就按取消处理」。
三、如果是"教室里那台机器"没反应,先查这两个
- 那台机器的客户端版本:处理远控命令的能力是 1.3.0 才有的,更旧的客户端连心跳都不发 ——
在「客户端」页里那台机器会显示成从未心跳 / 离线。把教室机器升到 1.3.0 以上即可; - 那台机器上有没有人点「确认执行」:见上面的「上次指令」列。
验收
| 门禁 | 结果 |
|---|---|
lint / typecheck / check:icons / docs:check |
全绿 |
| 后端端到端 | 247/247 |
| ClassIsland 联动链路 | 44/44 |
| 插件静态契约 | 76/76 |
| Web 管理端真实点击 | 34/34 |
| 客户端冒烟 | 90/90 |
远控命令这条链路另外用一台模拟客户端单独跑过一遍(登记 → 下发 → 心跳带回 → 列表可见 →
回执 → 清除),并确认新增的「上次指令」在待执行与已回执两种状态下都显示正确。
产物
| 产物 | 说明 |
|---|---|
ClassHelper-1.3.2-x64-client-setup.exe |
桌面客户端安装包(Windows x64) |
ClassHelper-1.3.2-x64-client-portable.exe |
桌面客户端免安装单文件 |
ClassHelper-1.3.2-x64-server-setup.exe |
服务端安装包(Windows x64,内置 Node 运行时) |
classhelper-server-linux-x64-1.3.2.tar.gz |
服务端 Linux 包(由 GitHub Actions 在 ubuntu-22.04 上构建) |
ClassHelper.ClassIslandPlugin.cipx |
ClassIsland 联动插件 |
SHA256SUMS-1.3.2.txt |
跨组件哈希清单(人读;classhelper upgrade 用的是同名 .sha256) |