package com.kt.event.eventservice.application.service;

/**
 * 알림 서비스 인터페이스
 *
 * 사용자에게 작업 완료/실패 알림을 전송하는 서비스입니다.
 * WebSocket, SSE, Push Notification 등 다양한 방식으로 확장 가능합니다.
 *
 * @author Event Service Team
 * @version 1.0.0
 * @since 2025-10-29
 */
public interface NotificationService {

    /**
     * 작업 완료 알림 전송
     *
     * @param userId 사용자 ID
     * @param jobId 작업 ID
     * @param jobType 작업 타입
     * @param message 알림 메시지
     */
    void notifyJobCompleted(String userId, String jobId, String jobType, String message);

    /**
     * 작업 실패 알림 전송
     *
     * @param userId 사용자 ID
     * @param jobId 작업 ID
     * @param jobType 작업 타입
     * @param errorMessage 에러 메시지
     */
    void notifyJobFailed(String userId, String jobId, String jobType, String errorMessage);

    /**
     * 작업 진행 상태 알림 전송
     *
     * @param userId 사용자 ID
     * @param jobId 작업 ID
     * @param jobType 작업 타입
     * @param progress 진행률 (0-100)
     */
    void notifyJobProgress(String userId, String jobId, String jobType, int progress);
}
