已修改完成,同时解决了“考生名单都是 0 人”的根因。

考生范围统一为“行政班关联学生 + 已选课学生”,并自动去重;考场分配、人数显示、冲突检测、学生考试安排均使用同一口径。[TeachingTaskRosterQuery.cs (line 40)](E:/jiaowu/src/Jiaowu.Api/Infrastructure/Teaching/TeachingTaskRosterQuery.cs:40)
新增考场签名单 Excel 导出接口。[ExamsController.cs (line 568)](E:/jiaowu/src/Jiaowu.Api/Controllers/ExamsController.cs:568)
考试计划页面新增“导出考场签名单”按钮。[ExamsView.vue (line 255)](E:/jiaowu/web/src/views/ExamsView.vue:255)
工作簿包含“考场汇总”以及每个考试场次独立的 A4 签到表,字段包括座位号、学号、姓名、行政班、考生签名和备注。[ExamSignInWorkbookExporter.cs (line 12)](E:/jiaowu/src/Jiaowu.Api/Infrastructure/Exams/ExamSignInWorkbookExporter.cs:12)
未分配考场或监考教师时,也能导出并显示“待分配”。
This commit is contained in:
2026-07-27 18:24:32 +08:00 Unverified
parent 2e422acd19
commit fb2acc6751
9 changed files with 856 additions and 71 deletions
@@ -119,15 +119,28 @@ public sealed class MySqlMigrationTests
public void MySql_teaching_task_roster_query_is_translatable()
{
using var db = new AppDbContext(CreateMySqlOptions());
var studentId =
Guid.Parse("22222222-2222-2222-2222-222222222222");
var sql = TeachingTaskRosterQuery
.ForTask(
db,
Guid.Parse("11111111-1111-1111-1111-111111111111"))
.ToQueryString();
var taskIdsSql = TeachingTaskRosterQuery
.TaskIdsForStudent(db, studentId)
.ToQueryString();
Assert.Contains("TeachingTaskClasses", sql, StringComparison.OrdinalIgnoreCase);
Assert.Contains("CourseEnrollments", sql, StringComparison.OrdinalIgnoreCase);
Assert.Contains(
"TeachingTaskClasses",
taskIdsSql,
StringComparison.OrdinalIgnoreCase);
Assert.Contains(
"CourseEnrollments",
taskIdsSql,
StringComparison.OrdinalIgnoreCase);
}
[Fact]