Files
OrpaonVision/OrpaonVision.Model/Training/TrainingTaskModel.cs
2026-04-06 22:04:05 +08:00

281 lines
5.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
namespace OrpaonVision.Model.Training;
/// <summary>
/// 训练任务模型。
/// </summary>
public sealed class TrainingTaskModel
{
/// <summary>
/// 任务ID。
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// 任务名称。
/// </summary>
public string Name { get; set; } = string.Empty;
/// <summary>
/// 任务描述。
/// </summary>
public string? Description { get; set; }
/// <summary>
/// 任务类型。
/// </summary>
public TrainingTaskType TaskType { get; set; }
/// <summary>
/// 任务状态。
/// </summary>
public TrainingTaskStatus Status { get; set; }
/// <summary>
/// 优先级。
/// </summary>
public TrainingPriority Priority { get; set; }
/// <summary>
/// 模型类型。
/// </summary>
public string ModelType { get; set; } = string.Empty;
/// <summary>
/// 基础模型ID。
/// </summary>
public Guid? BaseModelId { get; set; }
/// <summary>
/// 数据集ID。
/// </summary>
public Guid DatasetId { get; set; }
/// <summary>
/// 训练参数JSON。
/// </summary>
public string TrainingParametersJson { get; set; } = string.Empty;
/// <summary>
/// 验证参数JSON。
/// </summary>
public string ValidationParametersJson { get; set; } = string.Empty;
/// <summary>
/// 计划开始时间UTC
/// </summary>
public DateTime? PlannedStartAtUtc { get; set; }
/// <summary>
/// 实际开始时间UTC
/// </summary>
public DateTime? ActualStartAtUtc { get; set; }
/// <summary>
/// 实际结束时间UTC
/// </summary>
public DateTime? ActualEndAtUtc { get; set; }
/// <summary>
/// 计划训练时长(分钟)。
/// </summary>
public int PlannedDurationMinutes { get; set; }
/// <summary>
/// 实际训练时长(分钟)。
/// </summary>
public int ActualDurationMinutes { get; set; }
/// <summary>
/// 当前轮次。
/// </summary>
public int CurrentEpoch { get; set; }
/// <summary>
/// 总轮次。
/// </summary>
public int TotalEpochs { get; set; }
/// <summary>
/// 当前损失值。
/// </summary>
public double CurrentLoss { get; set; }
/// <summary>
/// 最佳损失值。
/// </summary>
public double BestLoss { get; set; }
/// <summary>
/// 当前mAP。
/// </summary>
public double CurrentMap { get; set; }
/// <summary>
/// 最佳mAP。
/// </summary>
public double BestMap { get; set; }
/// <summary>
/// 训练进度0-100
/// </summary>
public double Progress { get; set; }
/// <summary>
/// 输出模型路径。
/// </summary>
public string? OutputModelPath { get; set; }
/// <summary>
/// 日志路径。
/// </summary>
public string? LogPath { get; set; }
/// <summary>
/// 错误消息。
/// </summary>
public string? ErrorMessage { get; set; }
/// <summary>
/// 创建人ID。
/// </summary>
public Guid CreatedById { get; set; }
/// <summary>
/// 创建人姓名。
/// </summary>
public string CreatedByName { get; set; } = string.Empty;
/// <summary>
/// 分配人ID。
/// </summary>
public Guid? AssignedToId { get; set; }
/// <summary>
/// 分配人姓名。
/// </summary>
public string? AssignedToName { get; set; }
/// <summary>
/// 创建时间UTC
/// </summary>
public DateTime CreatedAtUtc { get; set; }
/// <summary>
/// 更新时间UTC
/// </summary>
public DateTime UpdatedAtUtc { get; set; }
/// <summary>
/// 创建人。
/// </summary>
public string CreatedBy { get; set; } = string.Empty;
/// <summary>
/// 更新人。
/// </summary>
public string UpdatedBy { get; set; } = string.Empty;
/// <summary>
/// 备注。
/// </summary>
public string? Remark { get; set; }
}
/// <summary>
/// 训练任务类型枚举。
/// </summary>
public enum TrainingTaskType
{
/// <summary>
/// 目标检测训练。
/// </summary>
ObjectDetection = 0,
/// <summary>
/// 分类训练。
/// </summary>
Classification = 1,
/// <summary>
/// 分割训练。
/// </summary>
Segmentation = 2,
/// <summary>
/// 微调训练。
/// </summary>
FineTuning = 3,
/// <summary>
/// 增量训练。
/// </summary>
Incremental = 4
}
/// <summary>
/// 训练任务状态枚举。
/// </summary>
public enum TrainingTaskStatus
{
/// <summary>
/// 草稿。
/// </summary>
Draft = 0,
/// <summary>
/// 等待中。
/// </summary>
Pending = 1,
/// <summary>
/// 运行中。
/// </summary>
Running = 2,
/// <summary>
/// 已暂停。
/// </summary>
Paused = 3,
/// <summary>
/// 已完成。
/// </summary>
Completed = 4,
/// <summary>
/// 已失败。
/// </summary>
Failed = 5,
/// <summary>
/// 已取消。
/// </summary>
Cancelled = 6
}
/// <summary>
/// 训练优先级枚举。
/// </summary>
public enum TrainingPriority
{
/// <summary>
/// 低。
/// </summary>
Low = 0,
/// <summary>
/// 中。
/// </summary>
Medium = 1,
/// <summary>
/// 高。
/// </summary>
High = 2,
/// <summary>
/// 紧急。
/// </summary>
Urgent = 3
}