using QYZH.InteractiveMagazine.Models.Dto.Compensation;
using QYZH.InteractiveMagazine.Models.Entity;
namespace QYZH.InteractiveMagazine.IService;
///
/// 补偿任务服务接口(仅负责记录和状态管理,处理逻辑由外部项目实现)
///
public interface ICompensationTaskService : IBaseService
{
///
/// 创建补偿任务(公共调用入口)
/// 当业务操作部分成功但某个后续步骤失败时调用,记录失败操作以便后续重试
///
/// 补偿任务创建参数
/// 补偿任务Id
Task CreateTaskAsync(CreateCompensationTaskInput input);
///
/// 获取待处理的补偿任务列表(Pending + 已过 ScheduledAt 的任务)
///
/// 每次获取数量上限
/// 待处理任务列表
Task> GetPendingTasksAsync(int limit = 50);
///
/// 按条件查询补偿任务(供外部项目按类型/状态/来源拉取)
///
/// 查询条件
/// 任务列表
Task> GetTasksAsync(GetCompensationTasksInput input);
///
/// 更新补偿任务状态(供外部处理项目回调更新处理结果)
///
/// 任务Id
/// 状态更新参数
Task UpdateTaskStatusAsync(long taskId, UpdateCompensationStatusInput input);
///
/// 取消补偿任务
///
/// 任务Id
/// 取消原因
Task CancelTaskAsync(long taskId, string reason);
}