12. 日常维护
维护分为源码更新、部署监控、数据库备份、账号审计和故障处理。建议设置固定周期,而不是只在出现问题时登录平台。
更新前原则
每次更新前先完成:
- 阅读目标版本的 Release Notes 和升级说明;
- 确认当前生产版本;
- 备份 Neon 数据;
- 记录当前 Vercel 成功部署;
- 避开考试和上课高峰;
- 准备回滚方案。
V2 对旧字段有一定兼容和按需补列能力,但不保证所有 V1 自定义业务数据自动迁移。跨大版本升级前必须单独验证。
更新 GitHub 源码
使用 Fork 时,可以通过 GitHub 的 Sync fork 获取上游更新。若存在自己的代码修改,不要在生产前直接强制覆盖,应先在分支中合并并检查冲突。
合并到 Vercel 连接的生产分支后,Vercel 通常会自动开始新部署。
一键重新部署
如果已配置 VERCEL_DEPLOY_HOOK_URL,具有 deployment.trigger 权限的管理员可以从系统设置触发部署。它会让 Vercel 从 GitHub 重新构建当前生产分支。
重新部署不会自动修改 Neon 中已存在的管理员密码,也不会清空业务数据。
检查更新后的部署
每次更新至少验证:
- 首页和自定义域名;
/api/time;- 管理员登录;
- 后台读取和保存;
- 当前班级考试大屏;
- PDF 下载;
- ClassIsland 同步(如启用);
- 浏览器更新提示和缓存刷新。
Vercel 回滚
若新部署出现严重问题:
- 打开 Vercel 项目的 Deployments;
- 找到更新前已验证成功的部署;
- 使用平台当前提供的 Promote、Rollback 或重新部署功能恢复;
- 验证主域名是否已指向旧版本;
- 记录故障版本和影响。
代码回滚不等于数据库回滚
如果新版本已经改变数据库数据,恢复旧前端代码不一定能恢复数据状态。数据库恢复必须基于更新前备份评估,不能盲目覆盖生产库。
数据库备份和恢复
使用 PostgreSQL 官方工具导出:
bash
pg_dump --dbname="生产连接串" --format=custom --no-owner --no-privileges --file=novora-YYYY-MM-DD.dump恢复到一套新的空数据库进行演练:
bash
pg_restore --dbname="测试数据库连接串" --no-owner --no-privileges novora-YYYY-MM-DD.dump不要直接拿未验证的备份覆盖生产数据库。恢复演练应使用独立 Neon 项目或分支,并确认管理员登录、学校结构和考试数据完整。
数据维护和重置
系统设置支持整体或按模块清理大型考试、周测、学校结构、设备/插件和调度设置。登录用户不会随普通业务数据重置自动删除。
数据重置是高风险操作。执行前:
- 确认选择的模块;
- 导出或备份数据;
- 通知正在使用系统的人员;
- 避免多名管理员同时操作;
- 完成后重新验收设备绑定和调度。
查看日志
遇到 API 错误时:
- 记录页面显示的请求 ID、时间和操作;
- 打开 Vercel 项目的 Logs 或 Functions 日志;
- 按请求 ID搜索;
- 检查是认证、权限、数据库、GitHub API 还是外部网络错误;
- 不要在公开反馈中粘贴完整环境变量。
超时或临时断线可以有限次数重试;认证失败、环境变量缺失和数据库结构问题应先修正根因。
账号维护
建议每月检查:
- 超级管理员数量;
- 停用账号;
- 年级和班级授权范围;
- 审计日志中的异常删除、重置或部署操作;
- 是否仍有人共享账号;
- 密码重置后旧会话是否失效。
域名维护
- 开启域名自动续费并检查付款方式;
- 不要删除 Vercel 要求的 DNS 记录;
- 更换 DNS 服务商前完整复制记录;
- 域名或证书异常时先查看 Vercel Domains 状态;
- 每学期至少用学校网络和移动网络复测。
推荐维护周期
| 周期 | 工作 |
|---|---|
| 每周 | 检查部署、数据库和关键页面是否正常 |
| 每月 | 数据备份、账号权限和审计日志检查 |
| 每学期 | 校历、周次、节假日、年级班级和设备复核 |
| 每次更新前 | 读发布说明、备份、安排维护窗口 |
| 每次更新后 | 执行核心验收和记录版本 |