Commit Graph
9 Commits
  • 点名、成绩册统一读取“行政班在籍学生 ∪ 已选课学生”,不再错误显示 0 人。
    教师选课名单改为展示全部本人教学班及完整学生名单,支持 Excel 导出。
    调停课改用教师专用教学班接口,并在服务端限制只能操作本人教学班。
  • 成绩通知:仅在某门课程成绩正式发布后自动发送,按成绩单学生名单通知,不展示具体分数;发布状态与通知同一次提交。
    手动发信:移除“成绩通知”选项,只能发送普通通知,原有角色与范围权限保持不变。
    选课通知:管理员关闭一轮选课时,自动向每位参与学生发送一条汇总通知,包含最终选中课程及候补未成功课程;候补失效、轮次关闭和通知生成保持原子性。
    关闭选课界面会明确提示发送通知,并显示实际通知人数。
  • ---
    成绩册 Excel 导入/导出 — 已完成
    
      后端 (GradesController.cs)
    
      GET /api/grades/sheets/{id}/template — 下载成绩导入模板
      - 根据成绩单的动态分项(GradeItems)生成对应的 Excel 列:学号 | 姓名 | 班级 | 平时成绩 | [分项1] | [分项2] | ... | 期末成绩 | 考试状态 | 备注
      - 预填已有学生信息和已有成绩
      - 附带填写说明工作表
    
      POST /api/grades/sheets/{id}/import — 从 Excel 导入成绩
      - 按学号匹配学生,批量更新平时成绩、分项成绩、期末成绩、考试状态、备注
      - 支持留空(不覆盖已有成绩)、0-100 范围校验、考试状态校验(正常/缺考/缓考/免修)
      - 导入后自动重新计算总评成绩和绩点
      - 仅限 Draft/Returned 状态的成绩单,仅限有编辑权限的用户
      - 错误时整批回滚,最多显示 50 条错误详情
    
      前端 (GradesView.vue)
    
      在成绩登记册底部操作栏新增两个按钮(仅在 canEdit 时显示):
      - 下载模板 — 调用 downloadApiFile 下载当前成绩单的 Excel 模板
      - Excel导入 — 通过隐藏 file input 选择 .xlsx 文件,调用 importExcel 上传
    
      工作流程
    
      1. 教师打开成绩单 → 点击「下载模板」
      2. 在 Excel 中填写/修改学生成绩
      3. 点击「Excel导入」选择文件上传
      4. 系统自动校验、合并成绩、重新计算总评 → 提示更新条数
      5. 成绩表刷新显示最新数据
    
    ✻ Crunched for 5m 50s
  • 已完成“成绩管理与学业档案”模块:
    教师批量录入平时、期中、期末成绩。
    自动计算总评、绩点和及格状态。
    支持缺考、缓考、免修。
    教师提交 → 学院审核/退回 → 校级发布。
    学生只能查看正式发布成绩。
    自动统计平均分、完成度、及格率和加权 GPA。
    SQLite 本地增量升级和 MySQL 正式迁移均已完成。
    分级权限在前后端同时校验。