Skip to content

ClassHelper v1.3.2(远控指令:不再谎报成功 + 「上次指令」可见)

Choose a tag to compare

@LoveChengke LoveChengke released this 11 Oct 09:03
· 38 commits to master since this release

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. 那台机器的客户端版本:处理远控命令的能力是 1.3.0 才有的,更旧的客户端连心跳都不发 ——
    在「客户端」页里那台机器会显示成从未心跳 / 离线。把教室机器升到 1.3.0 以上即可;
  2. 那台机器上有没有人点「确认执行」:见上面的「上次指令」列。

验收

门禁 结果
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)

升级步骤与权限矩阵见仓库
README 与
完整参考。