package com.kt.event.eventservice.infrastructure.notification;

import com.kt.event.eventservice.application.service.NotificationService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

/**
 * 로깅 기반 알림 서비스 구현
 *
 * 현재는 로그로만 알림을 기록하며, 추후 WebSocket, SSE, Push Notification 등으로 확장 가능합니다.
 *
 * @author Event Service Team
 * @version 1.0.0
 * @since 2025-10-29
 */
@Slf4j
@Service
public class LoggingNotificationService implements NotificationService {

    @Override
    public void notifyJobCompleted(String userId, String jobId, String jobType, String message) {
        log.info("📢 [작업 완료 알림] UserId: {}, JobId: {}, JobType: {}, Message: {}",
            userId, jobId, jobType, message);

        // TODO: WebSocket, SSE, 또는 Push Notification으로 실시간 알림 전송
        // 예: webSocketTemplate.convertAndSendToUser(userId, "/queue/notifications", notification);
    }

    @Override
    public void notifyJobFailed(String userId, String jobId, String jobType, String errorMessage) {
        log.error("📢 [작업 실패 알림] UserId: {}, JobId: {}, JobType: {}, Error: {}",
            userId, jobId, jobType, errorMessage);

        // TODO: WebSocket, SSE, 또는 Push Notification으로 실시간 알림 전송
    }

    @Override
    public void notifyJobProgress(String userId, String jobId, String jobType, int progress) {
        log.info("📢 [작업 진행 알림] UserId: {}, JobId: {}, JobType: {}, Progress: {}%",
            userId, jobId, jobType, progress);

        // TODO: WebSocket, SSE, 또는 Push Notification으로 실시간 알림 전송
    }
}
