项目由以下部分组成:
监考端/:监考电脑运行的离线局域网考试服务。考生端/:浏览器运行的考生端页面,用来输入监考端地址并打开考试页面。启动脚本.sh:在开发机上启动监考端服务。
- 监考电脑不连接公网,开启 Wi-Fi 热点。
- 在监考电脑运行
监考端。 - 考生电脑连接监考电脑热点。
- 考生打开
考生端软件,输入监考端地址,例如192.168.137.1:3000。 - 考生端会打开监考端提供的考试页面。
需要 Node.js 18 或更高版本和 npm。首次运行时在项目根目录执行:
chmod +x 启动脚本.sh
./启动脚本.sh脚本会启动监考服务,并在 macOS 上打开监考管理页。按 Ctrl+C 会关闭监考服务。
默认端口为监考端 3000。可通过环境变量调整监考端端口,例如:
PROCTOR_PORT=3001 ./启动脚本.sh如果端口已被占用,脚本默认会停止并显示占用进程,避免误关其他服务。确认可以结束占用进程时,可显式设置 AUTO_KILL_PORT=1。
监考端管理页地址为 http://127.0.0.1:3000/admin。启动脚本会列出“考生端填写”的局域网地址;考生连接同一热点后填写该地址(例如 192.168.137.1:3000),不要填写 127.0.0.1。登记后会进入候考室;监考端点击“开始考试”后统一进入答题页面。
管理页的“重置考试”会清空已登记考生的服务端答题记录、进度和提交状态,并让在线考生返回候考室。请仅在确认无需保留本轮考试记录时使用。
考试数据按单次监考进程管理,服务结束后不会恢复。结束服务或重置考试前,请在监考端点击“导出成绩”,保存 UTF-8 CSV 成绩表。第三卷 HTML 单文件最大为 10 MB,浏览器与服务端都会校验该限制。
计分按试卷说明执行:第一卷正确得分中的前 20 分计入基础分,额外正确得分最多计 40 分附加分;第二卷满分 100 分;第三卷由监考端人工评 0–80 分。因此基础总分满分 200 分,含附加分最高 240 分。成绩 CSV 会分别导出第一卷原始分、基础分、附加分、第二卷分数和第三卷分数。
监考端每次启动会在终端显示本次随机管理密码。也可通过 ADMIN_PASSWORD=自定义密码 ./启动脚本.sh 固定指定;不要将管理密码提供给考生。
cd 监考端
npm test
npm run test:e2e
cd ../考生端
npm test
npm run build监考端测试包含 100 名考生并发登记、连接、断线重连、统一开考、保存、提交、阅卷、导出和重置,并验证进程重启后本场考试数据为空。
考生端使用浏览器运行,支持 Windows、macOS 和鸿蒙设备。