5. 初始化与验收
本地部署的初始化流程与云端相同:填写学校信息、年级班级和学期调度,修改超级管理员密码并保存恢复密钥。本页只补充本地环境的验收项,通用步骤见首次登录和初始化。
与本地的差异
| 环节 | Vercel 云端 | 本地 / 内网 |
|---|---|---|
| 访问地址 | https://exam.example.com | http://内网IP:3000 或反向代理域名 |
| 初始密码来源 | Vercel 环境变量 ADMIN_PASSWORD | 服务器 .env 中的 ADMIN_PASSWORD |
| 数据库故障排查 | 检查 Neon 项目状态 | 检查容器状态 docker compose ps 或 systemctl status postgresql |
| 网络排查 | 检查域名与运营商线路 | 检查防火墙端口、局域网连通性 |
第一步:打开首页
text
http://服务器局域网IP:3000/首页会先从数据库同步配置。只有成功读取并确认没有年级和班级时,才显示“系统尚未初始化”和“开始初始化”。请等待页面完成同步,不要在“正在同步班级配置”时连续刷新。
如果首页没有出现初始化入口:
- 确认访问的是应用容器/进程的地址,不是数据库端口;
- 访问
http://服务器IP:3000/api/time,确认返回 JSON; docker compose logs -f app查看是否有数据库连接错误;- 确认
.env中ADMIN_PASSWORD已填写。
第二步:完成初始化向导
步骤与云端一致,依次为:
- 学校信息(省份、学校名称);
- 年级和班级;
- 学期与调度(学期开始日期、周次模式、节假日、运行模式);
- 确认学校配置;
- 查看使用文档(可跳过);
- 修改超级管理员密码;
- 保存恢复密钥(明文只显示一次)。
详细说明见首次登录和初始化。
第三步:为设备选择班级
- 用初始化时设置的新密码重新登录后台;
- 进入“用户与权限”,按职责创建年级管理员或班级管理员;
- 在每台教室大屏上打开首页,选择它实际所属的年级和班级;
- 确认大屏只显示绑定班级的周测和适用该班级的大型考试。
一台教室设备应绑定自己的实际班级。管理员办公电脑如需切换查看,可在本地设置中调整当前设备范围。
验收清单
基础访问
- [ ] 内网任意设备可以通过 IP 或域名打开首页
- [ ]
/api/time返回有效 JSON - [ ] 刷新
/exam、/admin不出现 404 - [ ] 教室大屏所在网段可以访问(必要时跨 VLAN 测试)
- [ ] 浏览器控制台没有持续重复的网络错误
管理员登录
- [ ] 使用初始化后的管理员账号可以登录
- [ ] 退出后再次打开
/admin需要重新登录 - [ ] 不要在公共大屏浏览器中保存超级管理员密码
数据库写入
- 创建一个仅用于验收的测试考试;
- 保存后刷新后台,确认数据仍然存在;
- 重启应用容器或进程,再次确认数据仍在(验证持久化)。
bash
# Docker 方式
sudo docker compose restart app
# systemd 方式
sudo systemctl restart novora班级绑定和大屏
- [ ] 大屏显示正确的考试名称和倒计时
- [ ] 切换到不相关的班级时不会错误显示安排
- [ ] 验收后删除测试考试
PDF 下载
- [ ] 预览页显示完整校名和班级
- [ ] 能生成 A4 PDF,中文字体正常
- [ ] 只有预期页数,没有额外黑页
权限
- [ ] 创建班级管理员或班级访客,只授权一个班级
- [ ] 用无痕窗口登录该账号,确认看不到未授权范围
- [ ] 尝试访问无权限模块,确认服务端返回权限拒绝
- [ ] 测试完成后停用或删除测试账号
反向代理(配置了才需要)
- [ ] 通过域名和 HTTPS 可以访问
- [ ]
/api/time通过域名返回有效 JSON - [ ] 登录和保存没有被拒绝
验收记录
| 项目 | 记录内容 |
|---|---|
| 验收日期 | 实际测试日期 |
| Novora 版本 | 设置页显示的版本 |
| 部署方式 | Docker Compose 或 Node |
| 访问地址 | 内网 IP 或域名 |
| 服务器位置 | 机房 / 教室 / NAS 型号 |
| 测试设备 | 电脑、教室大屏、手机 |
| 负责人 | 部署和验收人员 |
| 未解决问题 | 现象、请求 ID、临时措施 |
全部核心项通过后,进入更新与维护。