V2.7.1
本版本以官方仓库 main 分支代码为准。
更新日期:2026年8月4日
新高考选科与分科分发
- 大型考试分考试支持按班级选科策略分发:语文、数学、外语默认对适用范围内全部班级可见;物理、化学、生物、思想政治、历史、地理等选择性科目按班级选科组合自动限定到命中班级。
- 系统设置新增“分科模式”开关:开启时按选科过滤,未分科班级读取全部 9 门科目;关闭时恢复按考试范围直接下放的老逻辑。
- 批量添加分考试时自动为选择性科目写入适用班级范围,例如“物化地”班级只绑定物理、化学、地理。
- 展示端调度增加旧数据兜底过滤:历史分考试即使没有保存班级范围,已分科班级也会按科目名自动过滤。
- 班级管理修复“再选四选二”限制:再选科目最多 2 门,完整分科为 1 门首选 + 2 门再选;高一等未分科班级可清空为未分科。
- 大型考试页面新增选科分发状态说明,提示精简为规则、进度和待处理班级三类。
科目体系统一
- 新增统一科目源,大型考试、批量添加、快速发布、周测计划、临时考试等选择框使用完全一致的科目列表。
- 删除科目选择框中的“英语”,统一显示和保存为“外语”,旧数据自动迁移。
- 统一“政治”为“思想政治”,并兼容旧数据名称。
权限与后台
- 年级管理员可进入系统设置,并下放批量添加分考试的自定义考试组/时间组管理与周测日历编辑;周测日历的年级和班级列表按账号授权范围过滤。
- 强制作用域可见性:年级/班级管理员只能操作被授权的年级与班级,界面和 API 双重校验。
- 班级管理员只能管理自己创建的快速临时考试;正式考试、他人快速考试及转正式仍需对应权限。
- 修复作用域委托、周测计划激活和快速考试提前结束等边界问题。
同步与稳定性
- 新增全局云端写入同步队列:考试、设备、插件、认证写入统一排队,带进度提示,可合并相同操作。
- 批量添加分考试重写为高考预设工作流:预设模板、科目上限、排序与原生选择器。
- 增加强制发件箱校验,避免无效的“幽灵保存”残留。
- 新增分层 API 限流(登录、班级绑定、考试发件箱等),限流期间同步队列进度保持不丢。
- 修复登录锁定倒计时:前端可靠识别 429 LOGIN_LOCKED,倒计时状态同步刷新。
- 兼容 Neon BIGINT 返回数字字符串的登录查询问题;按账号隔离待同步队列,保留首次登录改密会话。
- 移除接口数据缓存导致的陈旧数据问题,绕过 Service Worker 对 API 数据的缓存;权限对比兼容 JSON 键顺序差异。
- ClassIsland 插件兼容旧密钥,修复配对迁移与加载动画。
数据看板
- 新增按账号权限作用域过滤的考试数据看板。
- 设置中的“数据屏”调整位置,并入管理后台仪表盘标签页。
- 管理后台仪表盘重新设计,支持主题与动画布局;命令中心 UI 新增深色/浅色主题。
品牌与体验
- 接入完整 Novora 图标包,更新 PWA/favicon 图标。
- 统一“正在载入 / 正在获取权限 / 正在载入展示设计”等黑底过渡页为品牌加载页。
- 系统设置页底部新增作者水印,“关于”中展示作者名称与 GitHub 仓库链接。
- 统一 HelpTip 图标位置、批量添加预览卡片配色与安全边距。
部署与工程
- 新增 Docker / NAS 部署支持(Dockerfile、docker-compose.yml、DEPLOY_NAS.md)。
- 重构:pi/exams.ts 拆分为 pi/_exams/*,设置页、周测面板和管理后台按领域拆分。
- 接入 ESLint + Prettier;单测扩展至 400+ 并通过,新增 Neon 数据库集成测试。