班级查询按“考试场次”合并,显示为“分散至 N 个考场”,不再生成大量重复卡片。[后端实现 (line 416)](E:/jiaowu/src/Jiaowu.Api/Infrastructure/Timetables/TimetableDataService.cs:416)
学生登录后只显示本人座位对应的考场,同时修复混排考场可能带出其他课程的问题。[筛选逻辑 (line 561)](E:/jiaowu/src/Jiaowu.Api/Infrastructure/Timetables/TimetableDataService.cs:561) 多考场卡片提示学生登录查看本人考场及监考教师。[前端展示 (line 1122)](E:/jiaowu/web/src/views/TimetableView.vue:1122) 教室课表、监考教师课表仍按具体考场显示,不受合并影响。 已增加班级合并和学生精准考场回归测试。[测试 (line 183)](E:/jiaowu/tests/Jiaowu.Api.Tests/ExamArrangementServiceTests.cs:183)
This commit is contained in:
@@ -151,6 +151,46 @@ public sealed class ExamArrangementServiceTests
|
||||
Assert.Equal(6, await db.ExamSeats.CountAsync());
|
||||
Assert.Contains("2个教学班混排至2个考场", result.Message);
|
||||
Assert.Contains("自动包含同组1个场次", result.Message);
|
||||
|
||||
plan = await db.ExamPlans.SingleAsync(x => x.Id == plan.Id);
|
||||
plan.Status = ExamPlanStatus.Published;
|
||||
await db.SaveChangesAsync();
|
||||
db.ChangeTracker.Clear();
|
||||
|
||||
var student = await db.Students.AsNoTracking()
|
||||
.OrderBy(x => x.StudentNumber)
|
||||
.FirstAsync();
|
||||
var timetableService = new TimetableDataService(db);
|
||||
var classTimetable = await timetableService.BuildAsync(
|
||||
TimetableResourceType.Class,
|
||||
student.AdministrativeClassId,
|
||||
seed.Term.Id,
|
||||
null,
|
||||
false,
|
||||
null,
|
||||
null,
|
||||
CancellationToken.None);
|
||||
var studentTimetable = await timetableService.BuildAsync(
|
||||
TimetableResourceType.Class,
|
||||
student.AdministrativeClassId,
|
||||
seed.Term.Id,
|
||||
null,
|
||||
false,
|
||||
student.Id,
|
||||
new TimetableStudentDto(student.StudentNumber, student.Name),
|
||||
CancellationToken.None);
|
||||
|
||||
var classExam = Assert.Single(classTimetable!.ExamEntries);
|
||||
Assert.Equal(first.Id, classExam.Id);
|
||||
Assert.Equal(2, classExam.ExamRoomCount);
|
||||
Assert.Equal("分散至 2 个考场", classExam.ClassroomName);
|
||||
Assert.DoesNotContain("监考:", classExam.TeacherNames);
|
||||
|
||||
var studentExam = Assert.Single(studentTimetable!.ExamEntries);
|
||||
Assert.Equal(1, studentExam.ExamRoomCount);
|
||||
Assert.Contains(
|
||||
studentExam.ClassroomName,
|
||||
new[] { seed.LargeClassroom.Name, seed.SmallClassroom.Name });
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
||||
Reference in New Issue
Block a user