项目冲刺-day6
1. 每天举行站立式会议

2. 昨天已完成的工作
- 邢子昂:完成了 T10(题目增删改查 API)全量开发,实现了 Excel 批量导入题目功能,解决了数据解析格式异常。
- 庄成杰:完成了 T08(学科管理)的 UI 收尾,以及 T11(题目管理页面)的搜索、筛选与分页功能。
- 张翔:完成了 T13(试卷管理)的“编辑/删除”及“关联题目”接口,优化了 SQL 查询解决了列表加载卡顿问题。
3. 今天计划完成的工作
- 邢子昂:完成 T15(考试记录表设计),开发 T16(开始考试/获取试卷详情 API),重点确保学生端获取的数据不包含正确答案。
- 庄成杰:开发 T18(考试倒计时与试卷展示页面),重点实现 T19(答题卡组件与答案临时保存到 LocalStorage)。
- 张翔:开发 T17(提交试卷 API),核心攻克 自动判分算法,实现单选、多选、判断题的自动比对与分数计算。
4. 工作中遇到的困难
- 邢子昂(数据安全):
- 问题:如果直接把试卷完整实体返回给前端,学生可以通过 F12 查看 Network 响应看到正确答案。
- 解决:在 DTO 层做过滤,
Question实体转 JSON 返回给学生端时,强制将answer字段置空。
- 庄成杰(倒计时同步):
- 问题:如果仅依赖浏览器本地时间,学生刷新页面或修改本机时间会导致倒计时作弊。
- 解决:考试开始时记录服务器端截止时间戳,前端每次刷新都请求服务器获取剩余时长(
EndTime - CurrentTime)。
- 张翔(复杂判分逻辑):
- 问题:多选题的判分逻辑比较复杂(少选给一半分、错选不给分、全选给满分)。
- 解决:将用户提交的答案数组与标准答案数组排序后进行 Set 对比,精确判断子集关系。
5. 发布项目燃尽图

6. 最新模块
T17 自动判分核心逻辑 (Service层)
@Service
public class GradeServiceImpl implements GradeService {// 自动判分方法public int autoMark(List<String> studentAnswers, String standardAnswer, int type, int score) {// 标准答案转ListList<String> standardList = Arrays.asList(standardAnswer.split(","));if (type == 1 || type == 3) { // 单选或判断return studentAnswers.get(0).equals(standardAnswer) ? score : 0;} else if (type == 2) { // 多选题逻辑// 如果选了错误选项,直接0分for (String ans : studentAnswers) {if (!standardList.contains(ans)) return 0;}// 如果全对if (studentAnswers.size() == standardList.size()) {return score;}// 少选(且无错选),给一半分return score / 2;}return 0;}
}
7. 每日每人总结
邢子昂:解决了试卷数据的安全性问题,意识到后端接口除了通畅外,安全性也是重中之重。
庄成杰:攻克了最复杂的考试页 UI,倒计时和答题卡的联动效果很棒,Vue 的状态管理确实好用。
张翔:自动判分算法经过多轮单元测试,目前能准确处理各种选题情况,很有成就感。