package com.dora.service;

import com.dora.dto.TaskProgressDto;

/**
 * 通知服务接口
 * 负责通过WebSocket向用户推送AI任务的实时状态更新
 *
 * @author 1818AI
 * @since 2025-10-20
 */
public interface NotificationService {

    /**
     * 向指定用户发送任务进度更新（通用方法）
     *
     * @param userId   接收通知的用户ID
     * @param progress 任务进度数据传输对象
     */
    void sendTaskUpdateToUser(Long userId, TaskProgressDto progress);

    /**
     * 通知用户任务进度更新
     *
     * @param userId          用户ID
     * @param taskNo          任务编号
     * @param status          任务状态
     * @param progress        进度百分比（0-100）
     * @param progressMessage 进度消息
     */
    void notifyTaskProgress(Long userId, String taskNo, String status, Integer progress, String progressMessage);

    /**
     * 通知用户任务已完成
     *
     * @param userId    用户ID
     * @param taskNo    任务编号
     * @param resultUrl 结果URL
     */
    void notifyTaskCompleted(Long userId, String taskNo, String resultUrl);

    /**
     * 通知用户任务失败
     *
     * @param userId       用户ID
     * @param taskNo       任务编号
     * @param errorMessage 错误消息
     */
    void notifyTaskFailed(Long userId, String taskNo, String errorMessage);
}
