Skip to content

12. 日常维护

维护分为源码更新、部署监控、数据库备份、账号审计和故障处理。建议设置固定周期,而不是只在出现问题时登录平台。

更新前原则

每次更新前先完成:

  1. 阅读目标版本的 Release Notes 和升级说明;
  2. 确认当前生产版本;
  3. 备份 Neon 数据;
  4. 记录当前 Vercel 成功部署;
  5. 避开考试和上课高峰;
  6. 准备回滚方案。

V2 对旧字段有一定兼容和按需补列能力,但不保证所有 V1 自定义业务数据自动迁移。跨大版本升级前必须单独验证。

更新 GitHub 源码

使用 Fork 时,可以通过 GitHub 的 Sync fork 获取上游更新。若存在自己的代码修改,不要在生产前直接强制覆盖,应先在分支中合并并检查冲突。

合并到 Vercel 连接的生产分支后,Vercel 通常会自动开始新部署。

一键重新部署

如果已配置 VERCEL_DEPLOY_HOOK_URL,具有 deployment.trigger 权限的管理员可以从系统设置触发部署。它会让 Vercel 从 GitHub 重新构建当前生产分支。

重新部署不会自动修改 Neon 中已存在的管理员密码,也不会清空业务数据。

检查更新后的部署

每次更新至少验证:

  • 首页和自定义域名;
  • /api/time
  • 管理员登录;
  • 后台读取和保存;
  • 当前班级考试大屏;
  • PDF 下载;
  • ClassIsland 同步(如启用);
  • 浏览器更新提示和缓存刷新。

Vercel 回滚

若新部署出现严重问题:

  1. 打开 Vercel 项目的 Deployments
  2. 找到更新前已验证成功的部署;
  3. 使用平台当前提供的 Promote、Rollback 或重新部署功能恢复;
  4. 验证主域名是否已指向旧版本;
  5. 记录故障版本和影响。

代码回滚不等于数据库回滚

如果新版本已经改变数据库数据,恢复旧前端代码不一定能恢复数据状态。数据库恢复必须基于更新前备份评估,不能盲目覆盖生产库。

数据库备份和恢复

使用 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 错误时:

  1. 记录页面显示的请求 ID、时间和操作;
  2. 打开 Vercel 项目的 Logs 或 Functions 日志;
  3. 按请求 ID搜索;
  4. 检查是认证、权限、数据库、GitHub API 还是外部网络错误;
  5. 不要在公开反馈中粘贴完整环境变量。

超时或临时断线可以有限次数重试;认证失败、环境变量缺失和数据库结构问题应先修正根因。

账号维护

建议每月检查:

  • 超级管理员数量;
  • 停用账号;
  • 年级和班级授权范围;
  • 审计日志中的异常删除、重置或部署操作;
  • 是否仍有人共享账号;
  • 密码重置后旧会话是否失效。

域名维护

  • 开启域名自动续费并检查付款方式;
  • 不要删除 Vercel 要求的 DNS 记录;
  • 更换 DNS 服务商前完整复制记录;
  • 域名或证书异常时先查看 Vercel Domains 状态;
  • 每学期至少用学校网络和移动网络复测。

推荐维护周期

周期工作
每周检查部署、数据库和关键页面是否正常
每月数据备份、账号权限和审计日志检查
每学期校历、周次、节假日、年级班级和设备复核
每次更新前读发布说明、备份、安排维护窗口
每次更新后执行核心验收和记录版本

遇到问题时进入故障排查。需要修改代码时进入本地开发

Novora 部署与维护文档