培养方案:专业/年级版本、课程模块、学分校验、复制版本、发布锁定、旧版本归档。

教学任务:学期开课、授课教师、唯一主讲、合班、容量与周次校验、发布及结课。
SQLite 开发库已自动升级,无需删除原数据库。
新增对应 MySQL EF Core 迁移。
Vue 已编译进 wwwroot,仍可只运行 ASP.NET Core 单服务。
桌面端及 390px 窄屏页面验证通过,无前端控制台错误。
This commit is contained in:
2026-07-24 14:10:43 +08:00 Unverified
parent 30d793773c
commit 628944f64d
23 changed files with 5430 additions and 47 deletions
@@ -0,0 +1,52 @@
using Jiaowu.Api.Domain.Common;
namespace Jiaowu.Api.Domain.Academic;
public sealed class CurriculumPlan : EntityBase
{
public Guid MajorId { get; set; }
public Major? Major { get; set; }
public required string Name { get; set; }
public required string Version { get; set; }
public int EffectiveGrade { get; set; }
public decimal TotalCredits { get; set; }
public CurriculumPlanStatus Status { get; set; } = CurriculumPlanStatus.Draft;
public string? Description { get; set; }
public DateTime? PublishedAt { get; set; }
public ICollection<CurriculumModule> Modules { get; set; } = [];
}
public sealed class CurriculumModule : EntityBase
{
public Guid CurriculumPlanId { get; set; }
public CurriculumPlan? CurriculumPlan { get; set; }
public required string Code { get; set; }
public required string Name { get; set; }
public decimal RequiredCredits { get; set; }
public int SortOrder { get; set; }
public ICollection<CurriculumCourse> Courses { get; set; } = [];
}
public sealed class CurriculumCourse : EntityBase
{
public Guid CurriculumModuleId { get; set; }
public CurriculumModule? CurriculumModule { get; set; }
public Guid CourseId { get; set; }
public Course? Course { get; set; }
public int RecommendedSemester { get; set; }
public CurriculumCourseType Type { get; set; }
public string? Notes { get; set; }
}
public enum CurriculumPlanStatus
{
Draft = 1,
Published = 2,
Archived = 3
}
public enum CurriculumCourseType
{
Required = 1,
Elective = 2
}
@@ -28,6 +28,7 @@ public sealed class AdministrativeClass : CatalogEntity
public Major? Major { get; set; }
public int Grade { get; set; }
public string? CounselorName { get; set; }
public ICollection<Student> Students { get; set; } = [];
}
public sealed class Building : CatalogEntity
@@ -0,0 +1,46 @@
using Jiaowu.Api.Domain.Common;
namespace Jiaowu.Api.Domain.Academic;
public sealed class TeachingTask : EntityBase
{
public required string TaskNumber { get; set; }
public required string Name { get; set; }
public Guid AcademicTermId { get; set; }
public AcademicTerm? AcademicTerm { get; set; }
public Guid CourseId { get; set; }
public Course? Course { get; set; }
public int Capacity { get; set; }
public int StartWeek { get; set; } = 1;
public int EndWeek { get; set; } = 16;
public int WeeklyHours { get; set; } = 2;
public TeachingTaskStatus Status { get; set; } = TeachingTaskStatus.Draft;
public string? Notes { get; set; }
public DateTime? PublishedAt { get; set; }
public ICollection<TeachingTaskTeacher> Teachers { get; set; } = [];
public ICollection<TeachingTaskClass> Classes { get; set; } = [];
}
public sealed class TeachingTaskTeacher
{
public Guid TeachingTaskId { get; set; }
public TeachingTask? TeachingTask { get; set; }
public Guid TeacherId { get; set; }
public Teacher? Teacher { get; set; }
public bool IsPrimary { get; set; }
}
public sealed class TeachingTaskClass
{
public Guid TeachingTaskId { get; set; }
public TeachingTask? TeachingTask { get; set; }
public Guid AdministrativeClassId { get; set; }
public AdministrativeClass? AdministrativeClass { get; set; }
}
public enum TeachingTaskStatus
{
Draft = 1,
Published = 2,
Closed = 3
}