package com.arms.api.tts.service;

import com.arms.api.tts.model.dto.TtsRequestDTO;
import com.arms.api.tts.model.vo.TtsResponseVO;
import com.arms.api.util.msa_communicator.TtsClient;
import com.arms.api.util.status.ExternalServiceStatus;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

@Slf4j
@Service
@RequiredArgsConstructor
public class TtsServiceImpl implements TtsService {

    private final TtsClient ttsClient;

    @Override
    public TtsResponseVO convert(TtsRequestDTO request) {
        log.info("TTS convert start - format: {}", request.getFormat());

        try {
            byte[] audioData = ttsClient.synthesize(request);

            return TtsResponseVO.builder()
                    .audioData(audioData)
                    .contentType("audio/wav")
                    .build();
        } catch (Exception e) {
            log.error("TTS 서버 연결 실패 - 서비스 비활성화 전환: {}", e.getMessage());
            boolean status = ExternalServiceStatus.markTtsUnavailable();
            throw new RuntimeException("TTS 서비스 사용 불가, " + status);
        }
    }
}
