init
This commit is contained in:
40
frontend/dev_chatbot/ChatHandler.js
Normal file
40
frontend/dev_chatbot/ChatHandler.js
Normal file
@@ -0,0 +1,40 @@
|
||||
// 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;
|
||||
Reference in New Issue
Block a user