using Foxel.Models.DataBase; using Foxel.Services.Background.Processors; namespace Foxel.Services.Background; /// /// 后台任务队列接口 /// public interface IBackgroundTaskQueue { /// /// 将图片处理任务(元数据和缩略图)添加到队列 /// /// 图片ID /// 原始图片路径 /// 任务ID Task QueuePictureProcessingTaskAsync(int pictureId, string originalFilePath); /// /// 将视觉识别任务添加到队列 /// /// 视觉识别任务的Payload /// 任务ID Task QueueVisualRecognitionTaskAsync(VisualRecognitionPayload payload); /// /// 将人脸识别任务添加到队列 /// /// 人脸识别任务的Payload /// 任务ID Task QueueFaceRecognitionTaskAsync(FaceRecognitionPayload payload); /// /// 获取用户的所有任务状态 (目前主要指图片处理任务) /// /// 用户ID /// 该用户的任务状态列表 Task> GetUserTasksStatusAsync(int userId); /// /// 获取特定图片的处理状态 (实际获取的是与该图片关联的任务状态) /// /// 图片ID, 将作为 RelatedEntityId 查询 /// 处理状态 DTO Task GetPictureProcessingStatusAsync(int pictureId); /// /// 恢复未完成的任务 /// Task RestoreUnfinishedTasksAsync(); } /// /// 通用任务状态 DTO (用于API响应) /// public class TaskDetailsDto { public Guid TaskId { get; set; } public string TaskName { get; set; } = string.Empty; // 任务的描述性名称 public TaskType TaskType { get; set; } // 任务类型 public TaskExecutionStatus Status { get; set; } public int Progress { get; set; } // 0-100 public string? Error { get; set; } public DateTime CreatedAt { get; set; } public DateTime? CompletedAt { get; set; } public int? RelatedEntityId { get; set; } // 关联实体的ID,例如 PictureId }