新增按学期配置的“自动排课优化”页签,可调教师/行政班同日集中、行政班空档与连堂、首末节、教室容量冗余等权重。
自动排课在所有硬约束满足后,对候选排法应用这些软约束评分;不会改动既有课程或已发布课表。
This commit is contained in:
1 parent
8074d59e82
commit
0513e251df
10 files changed
+7588
-2
No files matched your search
@@ -13,6 +13,47 @@ namespace Jiaowu.Api.Tests;
|
||||
|
||||
public sealed class ScheduleSettingsControllerTests
|
||||
{
|
||||
[Fact]
|
||||
public async Task Optimization_settings_return_defaults_then_persist_per_term_weights()
|
||||
{
|
||||
await using var connection = new SqliteConnection("Data Source=:memory:");
|
||||
await connection.OpenAsync();
|
||||
var options = new DbContextOptionsBuilder<AppDbContext>()
|
||||
.UseSqlite(connection)
|
||||
.Options;
|
||||
await using var db = new AppDbContext(options);
|
||||
await db.Database.EnsureCreatedAsync();
|
||||
var term = new AcademicTerm
|
||||
{
|
||||
Code = "2026-F",
|
||||
Name = "2026 秋季",
|
||||
AcademicYear = "2026-2027",
|
||||
Season = TermSeason.Autumn,
|
||||
StartDate = new DateOnly(2026, 9, 7),
|
||||
EndDate = new DateOnly(2027, 1, 17)
|
||||
};
|
||||
db.AcademicTerms.Add(term);
|
||||
await db.SaveChangesAsync();
|
||||
var controller = new ScheduleSettingsController(db, NoOpAppCache.Instance);
|
||||
|
||||
var defaults = Assert.IsType<OkObjectResult>(await controller
|
||||
.GetOptimizationSettings(term.Id, CancellationToken.None));
|
||||
Assert.Contains("120", JsonSerializer.Serialize(defaults.Value));
|
||||
Assert.Empty(await db.ScheduleOptimizationSettings.ToListAsync());
|
||||
|
||||
var saved = Assert.IsType<OkObjectResult>(await controller
|
||||
.SaveOptimizationSettings(
|
||||
term.Id,
|
||||
new ScheduleOptimizationSettingsRequest(200, 180, 300, 90, 40, 50, 2),
|
||||
CancellationToken.None));
|
||||
Assert.Contains("300", JsonSerializer.Serialize(saved.Value));
|
||||
db.ChangeTracker.Clear();
|
||||
var settings = await db.ScheduleOptimizationSettings.SingleAsync();
|
||||
Assert.Equal(200, settings.TeacherSameDayWeight);
|
||||
Assert.Equal(300, settings.ClassGapWeight);
|
||||
Assert.Equal(2, settings.RoomCapacityWasteWeight);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Batch_constraints_assign_same_classroom_scope_to_all_tasks()
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user