Files
Academic-Affairs-System/src/Jiaowu.Api/Domain/Academic/GradeEntities.cs
T
biss 8f56548b54 已按“实验成绩独立管理”完成修改。
每个实验项目独立建成绩单,支持评分项、参与状态、补做次数、安全违规、报告地址和教师评语。
流程为:录入 → 学院审核 → 教务发布;学生只能查看已发布成绩。
自主预约实验支持同步有效预约名单,已评分记录不会被误删。
课程成绩可将已发布实验成绩汇总为快照导入指定分项;导入后锁定,不能手工篡改。
实验项目成绩不完整时,对应课程分项保持空白,不按 0 分处理。
一级“实验管理”菜单下增加“项目与场次”“实验成绩”;学生端增加“实验安排”“实验成绩”。
已生成 MySQL 正式迁移及 SQLite 开发迁移,尚未操作生产数据库。
界面采用“实验项目 → 独立评分 → 审核发布”工作台设计。
2026-07-28 22:21:18 +08:00

80 lines
2.3 KiB
C#

using Jiaowu.Api.Domain.Common;
namespace Jiaowu.Api.Domain.Academic;
public sealed class GradeSheet : EntityBase
{
public Guid TeachingTaskId { get; set; }
public TeachingTask? TeachingTask { get; set; }
public decimal RegularWeight { get; set; } = 30;
public decimal FinalWeight { get; set; } = 70;
public GradeSheetStatus Status { get; set; } = GradeSheetStatus.Draft;
public string? ReviewComment { get; set; }
public DateTime? SubmittedAt { get; set; }
public DateTime? ReviewedAt { get; set; }
public DateTime? PublishedAt { get; set; }
public ICollection<GradeRecord> Records { get; set; } = [];
public ICollection<GradeItem> Items { get; set; } = [];
}
public sealed class GradeItem : EntityBase
{
public Guid GradeSheetId { get; set; }
public GradeSheet? GradeSheet { get; set; }
public required string Name { get; set; }
public decimal Weight { get; set; }
public int SortOrder { get; set; }
public GradeItemSourceType SourceType { get; set; } =
GradeItemSourceType.Manual;
public DateTime? SourceSnapshotAt { get; set; }
public ICollection<GradeItemScore> Scores { get; set; } = [];
}
public sealed class GradeRecord : EntityBase
{
public Guid GradeSheetId { get; set; }
public GradeSheet? GradeSheet { get; set; }
public Guid StudentId { get; set; }
public Student? Student { get; set; }
public decimal? RegularScore { get; set; }
public decimal? FinalScore { get; set; }
public decimal? TotalScore { get; set; }
public decimal? GradePoint { get; set; }
public GradeExamStatus ExamStatus { get; set; } = GradeExamStatus.Normal;
public string? Notes { get; set; }
public ICollection<GradeItemScore> ItemScores { get; set; } = [];
}
public sealed class GradeItemScore
{
public Guid GradeRecordId { get; set; }
public GradeRecord? GradeRecord { get; set; }
public Guid GradeItemId { get; set; }
public GradeItem? GradeItem { get; set; }
public decimal? Score { get; set; }
}
public enum GradeSheetStatus
{
Draft = 1,
Submitted = 2,
Approved = 3,
Published = 4,
Returned = 5
}
public enum GradeExamStatus
{
Normal = 1,
Absent = 2,
Deferred = 3,
Exempt = 4,
Makeup = 5
}
public enum GradeItemSourceType
{
Manual = 1,
ExperimentSummary = 2
}