Files
tiku-backend.net/Tiku.Domain/Content/ContentV2AssessmentEntities.cs
xiong 3f5957d744
Some checks failed
ci / release-gate (push) Has been cancelled
feat(content): establish v2 learning delivery foundation
2026-08-06 09:52:18 +08:00

71 lines
2.4 KiB
C#

using System.Text.Json;
using Tiku.Domain.Common;
namespace Tiku.Domain.Content;
public sealed class AssessmentPolicy : AuditableTenantEntity
{
public Guid BusinessLineId { get; set; }
public string Code { get; set; } = string.Empty;
public string Name { get; set; } = string.Empty;
public Guid? CurrentVersionId { get; set; }
public bool IsActive { get; set; } = true;
}
public sealed class AssessmentPolicyVersion : Entity, ITenantOwned
{
public Guid AssessmentPolicyId { get; set; }
public int VersionNo { get; set; } = 1;
public AssessmentGradingMode GradingMode { get; set; } = AssessmentGradingMode.AuthoritativeObjective;
public decimal DefaultScore { get; set; } = 1;
public int RoundingScale { get; set; } = 2;
public ContentDefinitionStatus Status { get; set; } = ContentDefinitionStatus.Draft;
public DateTimeOffset? PublishedAt { get; set; }
public Guid? CreatedBy { get; set; }
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
public Guid TenantId { get; set; }
}
public sealed class ObjectiveGradingRule : Entity, ITenantOwned
{
public Guid AssessmentPolicyVersionId { get; set; }
public string RuleType { get; set; } = string.Empty;
public JsonElement Configuration { get; set; } = JsonDefaults.Object();
public Guid TenantId { get; set; }
}
public sealed class SubjectiveRubric : Entity, ITenantOwned
{
public Guid AssessmentPolicyVersionId { get; set; }
public string Code { get; set; } = string.Empty;
public string Name { get; set; } = string.Empty;
public decimal MaxScore { get; set; }
public JsonElement Criteria { get; set; } = JsonDefaults.Array();
public Guid TenantId { get; set; }
}
public sealed class AssessmentScoreBand : Entity, ITenantOwned
{
public Guid AssessmentPolicyVersionId { get; set; }
public decimal MinScore { get; set; }
public decimal MaxScore { get; set; }
public string Label { get; set; } = string.Empty;
public Guid TenantId { get; set; }
}
public sealed class ScoreAdjustmentRule : Entity, ITenantOwned
{
public Guid AssessmentPolicyVersionId { get; set; }
public int Priority { get; set; }
public string RuleType { get; set; } = string.Empty;
public JsonElement Configuration { get; set; } = JsonDefaults.Object();
public Guid TenantId { get; set; }
}
public enum AssessmentGradingMode
{
AuthoritativeObjective,
PendingManualReview,
Hybrid
}