考试按实际日期、周次和节次融入周/日/总视图,并用橙色“考试”卡片区分。

即使固定课表尚未发布,只要考试已发布,也能正常显示。
考试计划、考场、监考教师和日期都会显示。
Excel 导出同步包含考试安排。
This commit is contained in:
2026-07-28 14:16:24 +08:00 Unverified
parent 9a75589282
commit a61dacff1a
3 changed files with 139 additions and 38 deletions
@@ -7,7 +7,7 @@ namespace Jiaowu.Api.Tests;
public sealed class TimetableExcelExporterTests
{
[Fact]
public void Create_builds_week_grid_and_flexible_course_section()
public void Create_builds_week_grid_with_exam_and_flexible_course_section()
{
var timetable = new TimetableData(
new TimetableTermDto(
@@ -84,7 +84,31 @@ public sealed class TimetableExcelExporterTests
["计算机科学 2601 班"],
null)
],
[]);
[
new TimetableEntryDto(
Guid.NewGuid(),
Guid.NewGuid(),
"TASK-EXAM",
"高等数学期末考试",
"MATH101",
"高等数学",
["张老师", "监考:李老师"],
["计算机科学 2601 班"],
"201",
"第二教学楼",
"主校区",
2,
1,
1,
1,
1,
WeekPattern.All,
null,
true,
"2026-2027 学年第一学期期末考试",
new DateOnly(2027, 1, 5),
DateTime.UtcNow)
]);
var bytes = TimetableExcelExporter.Create(timetable);
@@ -92,7 +116,10 @@ public sealed class TimetableExcelExporterTests
using var workbook = new XLWorkbook(stream);
var sheet = workbook.Worksheet("课表");
Assert.Contains("计算机科学 2601 班", sheet.Cell("A1").GetString());
Assert.Contains("已融入 1 场考试", sheet.Cell("A2").GetString());
Assert.Contains("高等数学", sheet.Cell(5, 2).GetString());
Assert.Contains("【考试】高等数学", sheet.Cell(5, 3).GetString());
Assert.Contains("2027-01-05", sheet.Cell(5, 3).GetString());
Assert.Contains(
sheet.CellsUsed(),
cell => cell.GetString().Contains("非排时课程"));