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
}