每个实验项目独立建成绩单,支持评分项、参与状态、补做次数、安全违规、报告地址和教师评语。 流程为:录入 → 学院审核 → 教务发布;学生只能查看已发布成绩。 自主预约实验支持同步有效预约名单,已评分记录不会被误删。 课程成绩可将已发布实验成绩汇总为快照导入指定分项;导入后锁定,不能手工篡改。 实验项目成绩不完整时,对应课程分项保持空白,不按 0 分处理。 一级“实验管理”菜单下增加“项目与场次”“实验成绩”;学生端增加“实验安排”“实验成绩”。 已生成 MySQL 正式迁移及 SQLite 开发迁移,尚未操作生产数据库。 界面采用“实验项目 → 独立评分 → 审核发布”工作台设计。
80 lines
2.3 KiB
C#
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
|
|
}
|