// ChatHandler.js
// -----------------------------------------------------------------------------
// 1) 이미지가 있을 경우 OCRService 로 텍스트 추출
// 2) 최종 question(원문 + OCR 텍스트) 을 AIService 로 전달
// 3) AIService 응답을 그대로 반환하여 상위 컴포넌트(ChatInput)에서 처리
// -----------------------------------------------------------------------------

import OCRService from './OCRService';
import AIService from './AIService';

/**
 * 사용자의 입력(text + image)을 받아 AIService 로 요청하는 헬퍼.
 * @param {Object}   params
 * @param {string}   params.text        - 사용자가 입력한 텍스트
 * @param {File[]}   params.files       - 첨부 파일 배열(선택)
 * @param {string}   params.toolId      - 호출할 엔진 ID
 * @param {string=}  params.sessionId   - 세션 ID (선택)
 * @returns {Promise<{response:string, sessionId:string, toolName:string}>}
 */
const ChatHandler = async ({ text, files = [], toolId, sessionId = null }) => {
  let question = text;

  // 이미지 파일이 있으면 OCR 실행 후 question 에 병합
  const imageFiles = files.filter(f => f.type.startsWith('image/'));
  if (imageFiles.length) {
    const ocrTexts = [];
    for (const img of imageFiles) {
      const ocrText = await OCRService(img);
      if (ocrText) ocrTexts.push(ocrText);
    }
    if (ocrTexts.length) {
      question = `${text}\n\n이미지에서 추출한 텍스트:\n${ocrTexts.join('\n')}`;
    }
  }

  // AI 서비스 호출
  return AIService(question, toolId, sessionId, files);
};

export default ChatHandler; 