From faa7c8e2213e77c7b37b2e50361766342b9375a5 Mon Sep 17 00:00:00 2001 From: Taehoon Date: Wed, 18 Mar 2026 18:07:44 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=A9=94=EC=9D=BC=20=EC=8B=9C=EC=8A=A4?= =?UTF-8?q?=ED=85=9C=20AI=20=EB=B6=84=EC=84=9D=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=ED=99=9C=EC=84=B1=ED=99=94=20=EB=B0=8F=20startAnalysis=20?= =?UTF-8?q?=ED=95=A8=EC=88=98=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/mail.js | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/js/mail.js b/js/mail.js index 81cdc49..f3d1898 100644 --- a/js/mail.js +++ b/js/mail.js @@ -78,6 +78,52 @@ function renderFiles() { }); } +// --- AI 분석 실행 --- +async function startAnalysis(index, event) { + if (event) event.stopPropagation(); + const file = currentFiles[index]; + if (!file) return; + + // UI 상태 업데이트: 분석 중 표시 + const logArea = document.getElementById(`log-area-${index}`); + const logContent = document.getElementById(`log-content-${index}`); + if (logArea) logArea.classList.add('active'); + if (logContent) { + logContent.innerHTML = `
+ + AI가 문서를 정밀 분석 중입니다... +
`; + } + + try { + const res = await fetch(`${API.ANALYZE_FILE}?filename=${encodeURIComponent(file.name)}`); + const result = await res.json(); + + if (result.error) { + if (logContent) logContent.innerHTML = `
오류: ${result.error}
`; + return; + } + + // 분석 결과 저장 및 UI 갱신 + currentFiles[index].analysis = result.final_result; + currentFiles[index].analysis.isManual = false; + + if (logContent) { + logContent.innerHTML = ` +
+
✨ AI 분석 완료
+
${result.final_result.reason}
+
+ `; + } + + renderFiles(); + } catch (e) { + console.error("AI Analysis failed:", e); + if (logContent) logContent.innerHTML = `
분석 실패: 네트워크 오류가 발생했습니다.
`; + } +} + // --- 미리보기 제어 --- function showPreview(index, event) { if (event && (event.target.closest('.btn-group') || event.target.closest('.path-display'))) return;