152 lines
4.0 KiB
C#
152 lines
4.0 KiB
C#
using OrpaonVision.Core.Results;
|
|
using OrpaonVision.Model.Training;
|
|
|
|
namespace OrpaonVision.Core.Training;
|
|
|
|
/// <summary>
|
|
/// 训练任务仓储接口。
|
|
/// </summary>
|
|
public interface ITrainingTaskStore
|
|
{
|
|
/// <summary>
|
|
/// 创建训练任务。
|
|
/// </summary>
|
|
Task<Result<TrainingTaskModel>> CreateAsync(TrainingTaskModel task);
|
|
|
|
/// <summary>
|
|
/// 更新训练任务。
|
|
/// </summary>
|
|
Task<Result<TrainingTaskModel>> UpdateAsync(TrainingTaskModel task);
|
|
|
|
/// <summary>
|
|
/// 删除训练任务。
|
|
/// </summary>
|
|
Task<Result> DeleteAsync(Guid id);
|
|
|
|
/// <summary>
|
|
/// 根据ID获取训练任务。
|
|
/// </summary>
|
|
Task<Result<TrainingTaskModel?>> GetByIdAsync(Guid id);
|
|
|
|
/// <summary>
|
|
/// 获取训练任务分页列表。
|
|
/// </summary>
|
|
Task<Result<(IReadOnlyList<TrainingTaskModel> tasks, int totalCount)>> GetPagedListAsync(
|
|
int pageIndex,
|
|
int pageSize,
|
|
TrainingTaskStatus? status = null,
|
|
string? keyword = null,
|
|
Guid? assignedToId = null);
|
|
|
|
/// <summary>
|
|
/// 获取用户的训练任务列表。
|
|
/// </summary>
|
|
Task<Result<IReadOnlyList<TrainingTaskModel>>> GetUserTasksAsync(Guid userId, TrainingTaskStatus? status = null);
|
|
|
|
/// <summary>
|
|
/// 获取任务统计信息。
|
|
/// </summary>
|
|
Task<Result<TrainingTaskStatistics>> GetStatisticsAsync();
|
|
|
|
/// <summary>
|
|
/// 更新任务状态。
|
|
/// </summary>
|
|
Task<Result<TrainingTaskModel>> UpdateStatusAsync(Guid id, TrainingTaskStatus status, string operatedBy);
|
|
|
|
/// <summary>
|
|
/// 更新任务进度。
|
|
/// </summary>
|
|
Task<Result<TrainingTaskModel>> UpdateProgressAsync(Guid id, int currentEpoch, double currentLoss, double currentMap, double progress);
|
|
|
|
/// <summary>
|
|
/// 分配任务给用户。
|
|
/// </summary>
|
|
Task<Result<TrainingTaskModel>> AssignTaskAsync(Guid id, Guid assignedToId, string assignedToName, string assignedBy);
|
|
|
|
/// <summary>
|
|
/// 完成训练任务。
|
|
/// </summary>
|
|
Task<Result<TrainingTaskModel>> CompleteTaskAsync(Guid id, string outputModelPath, double finalLoss, double finalMap, string completedBy);
|
|
|
|
/// <summary>
|
|
/// 失败训练任务。
|
|
/// </summary>
|
|
Task<Result<TrainingTaskModel>> FailTaskAsync(Guid id, string errorMessage, string failedBy);
|
|
|
|
/// <summary>
|
|
/// 检查任务名称是否存在。
|
|
/// </summary>
|
|
Task<Result<bool>> NameExistsAsync(string name, Guid? excludeId = null);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 训练任务统计信息。
|
|
/// </summary>
|
|
public sealed class TrainingTaskStatistics
|
|
{
|
|
/// <summary>
|
|
/// 总任务数。
|
|
/// </summary>
|
|
public int TotalTasks { get; set; }
|
|
|
|
/// <summary>
|
|
/// 草稿任务数。
|
|
/// </summary>
|
|
public int DraftTasks { get; set; }
|
|
|
|
/// <summary>
|
|
/// 等待中任务数。
|
|
/// </summary>
|
|
public int PendingTasks { get; set; }
|
|
|
|
/// <summary>
|
|
/// 运行中任务数。
|
|
/// </summary>
|
|
public int RunningTasks { get; set; }
|
|
|
|
/// <summary>
|
|
/// 已暂停任务数。
|
|
/// </summary>
|
|
public int PausedTasks { get; set; }
|
|
|
|
/// <summary>
|
|
/// 已完成任务数。
|
|
/// </summary>
|
|
public int CompletedTasks { get; set; }
|
|
|
|
/// <summary>
|
|
/// 已失败任务数。
|
|
/// </summary>
|
|
public int FailedTasks { get; set; }
|
|
|
|
/// <summary>
|
|
/// 已取消任务数。
|
|
/// </summary>
|
|
public int CancelledTasks { get; set; }
|
|
|
|
/// <summary>
|
|
/// 今日完成任务数。
|
|
/// </summary>
|
|
public int TodayCompletedTasks { get; set; }
|
|
|
|
/// <summary>
|
|
/// 本周完成任务数。
|
|
/// </summary>
|
|
public int ThisWeekCompletedTasks { get; set; }
|
|
|
|
/// <summary>
|
|
/// 本月完成任务数。
|
|
/// </summary>
|
|
public int ThisMonthCompletedTasks { get; set; }
|
|
|
|
/// <summary>
|
|
/// 平均训练时长(分钟)。
|
|
/// </summary>
|
|
public double AverageTrainingMinutes { get; set; }
|
|
|
|
/// <summary>
|
|
/// 成功率(百分比)。
|
|
/// </summary>
|
|
public double SuccessRate { get; set; }
|
|
}
|