// [MIRAGE AI] 공식 백엔드 엔진 (worker.js) - 500 토큰 반영판 const GEMINI_API_KEY = "AIzaSyCpuYFRn3DZHbew4DM0hd57omznYLuYhlY"; const GOOGLE_RESERVATION_WEBHOOK = "https://script.google.com/macros/s/AKfycbz_YOUR_SCRIPT_ID/exec"; export default { async fetch(request, env) { const corsHeaders = { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Methods": "POST, GET, OPTIONS", "Access-Control-Allow-Headers": "Content-Type", }; if (request.method === "OPTIONS") { return new Response(null, { headers: corsHeaders }); } if (request.method !== "POST") { return new Response(JSON.stringify({ error: "POST 방식만 지원합니다." }), { status: 405, headers: { ...corsHeaders, "Content-Type": "application/json" } }); } try { const reqBody = await request.json(); // 1. 실시간 상담 예약 처리 if (reqBody.action === "reserve") { const { name, phone, company, date, time, inquiry } = reqBody; try { await fetch(GOOGLE_RESERVATION_WEBHOOK, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ name, phone, company, date, time, inquiry }) }); } catch (err) {} return new Response(JSON.stringify({ success: true, text: `[1:1 맞춤 진단 및 상담 예약 접수 완료]\n\n• 신청 고객: ${name} (${company || "일반"})\n• 연락처: ${phone}\n• 희망 일시: ${date} ${time}\n\n신청 내용이 구글 캘린더 및 관리자 일정표에 동기화되었습니다. 담당 수석 컨설턴트(010-3856-9062)가 사전 연락을 드리겠습니다.` }), { headers: { "Content-Type": "application/json", ...corsHeaders } }); } // 2. 일반 질의응답 const userText = (reqBody.prompt || "").trim(); if (!userText) { return new Response(JSON.stringify({ text: "궁금하신 비즈니스 솔루션 주제를 입력해 주세요." }), { headers: { "Content-Type": "application/json", ...corsHeaders } }); } const lower = userText.toLowerCase(); const GEMS_URL = "https://gemini.google.com/gem/1Z7FOmWQLR_iMcF2XkgkTUZMO5YeovToZ?usp=sharing"; const GEMINI_SIGNUP_URL = "https://accounts.google.com/AccountChooser?continue=https://gemini.google.com/"; const GDRIVE_URL = "https://drive.google.com/drive/folders/1-e8_0gO6-wOtpNuSvd6RflyRDgWlGQo1?usp=sharing"; const DEMO_VIDEO_URL = "https://www.youtube.com/watch?v=vp6ogRVMyo8"; const gemsBlock = `더욱 심층적인 기업 맞춤 솔루션 분석과 정밀 제안서 상담은 [MIRAGE AI] 전용 젬스를 이용해 주십시오. ■ 재미나이(Gemini) 가입자: 👉 [MIRAGE AI 수석 컨설턴트 젬스 심층상담 입장](${GEMS_URL}) ■ 재미나이(Gemini) 미가입자 (가입 후 입장): 👉 [재미나이 계정 가입 및 로그인 바로가기](${GEMINI_SIGNUP_URL}) 📁 [최신 기술·제안서 공식 구글 드라이브 자료실](${GDRIVE_URL}) 📞 직통 및 카카오톡 상담: 010-3856-9062 (대표: 신기욱)`; // [Zero-Token 규칙 1] 제품 / 정체성 / 기능 문의 (첨부 1의 "제품이 뭐야" 질문 즉시 처리) if (lower.includes("제품") || lower.includes("뭐야") || lower.includes("무엇") || lower.includes("소개") || lower.includes("미라지")) { return new Response(JSON.stringify({ text: `[MIRAGE AI]는 기업의 사내 문서와 FAQ를 실시간 연동하는 지능형 AI 세일즈 데모 엔진입니다.\n\n단순 챗봇과 달리 24시간 실시간 고객 상담, 업종별 사전 리드 필터링, 1:1 상담 예약 등록, 영업원별 실적 추적까지 완결형 세일즈 프로세스를 자동 수행합니다.\n\n${gemsBlock}` }), { headers: { "Content-Type": "application/json", ...corsHeaders } }); } // [Zero-Token 규칙 2] 비용 / 가격 / 견적 if (lower.includes("비용") || lower.includes("가격") || lower.includes("얼마") || lower.includes("견적") || lower.includes("단가")) { return new Response(JSON.stringify({ text: `[MIRAGE AI] 도입 비용은 상담 트래픽 규모와 카카오톡/CRM 연동 범위에 따라 표준 요금제가 책정됩니다. 초기 세팅비와 월간 유지관리 플랜으로 나뉘며, 사전 무료 비즈니스 진단을 통해 가장 최적화된 견적을 산출해 드립니다.\n\n${gemsBlock}` }), { headers: { "Content-Type": "application/json", ...corsHeaders } }); } // [Zero-Token 규칙 3] 시연 영상 / 유튜브 if (lower.includes("영상") || lower.includes("유튜브") || lower.includes("작동") || lower.includes("동영상") || lower.includes("데모 영상")) { return new Response(JSON.stringify({ text: `아래 공식 시연 영상을 통해 [MIRAGE AI] 상담 엔진의 실제 작동 구조와 메커니즘을 즉시 확인하실 수 있습니다.\n\n👉 [AI 자동화 엔진 시연 영상 바로가기](${DEMO_VIDEO_URL})` }), { headers: { "Content-Type": "application/json", ...corsHeaders } }); } // [Zero-Token 규칙 4] 자료실 / 다운로드 / 드라이브 if (lower.includes("자료") || lower.includes("다운로드") || lower.includes("제안서") || lower.includes("드라이브") || lower.includes("카탈로그") || lower.includes("파일")) { return new Response(JSON.stringify({ text: `[MIRAGE AI]의 공식 프로그램 소개서 및 제안서 아카이브 자료실입니다. 최신 문서를 즉시 다운로드하실 수 있습니다.\n\n📁 [공식 구글 드라이브 자료실 바로가기](${GDRIVE_URL})` }), { headers: { "Content-Type": "application/json", ...corsHeaders } }); } // [Zero-Token 규칙 5] 연락처 / 대표자 if (lower.includes("연락처") || lower.includes("전화번호") || lower.includes("메일") || lower.includes("대표") || lower.includes("신기욱") || lower.includes("저작권")) { return new Response(JSON.stringify({ text: `[MIRAGE AI 공식 기관 정보]\n• 기관명: 지속가능경영연구원 (대표자: 신기욱)\n• 직통/카카오톡: 010-3856-9062\n• 공식 이메일: mymirage1@naver.com\n• 저작권 등록: 한국저작권위원회 등록 기술 (제 C-2026-017543 호)` }), { headers: { "Content-Type": "application/json", ...corsHeaders } }); } // 3. 복합 질의 (Gemini 호출 - 500토큰 설정) const systemPrompt = ` 당신은 [지속가능경영연구원]의 저작권 등록 기술(제 C-2026-017543 호) 기반 [MIRAGE AI] 수석 비즈니스 전략 컨설턴트입니다. 'AI', '챗봇', 'LLM' 용어는 언급하지 마십시오. 핵심만 2~3문장 이내 전문가 어조(~입니다, ~로 분석됩니다)로 답변하십시오. 모든 링크는 [문구](URL) 형식을 엄격히 준수하십시오. 신기욱 대표(010-3856-9062, mymirage1@naver.com)의 검증 팩트를 기반으로 안내하십시오. `; const targetUrl = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${GEMINI_API_KEY}`; const apiRes = await fetch(targetUrl, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ contents: [{ role: "user", parts: [{ text: `${systemPrompt}\n\n고객 문의: ${userText}` }] }], generationConfig: { temperature: 0.2, maxOutputTokens: 500 // 요청하신 500 토큰 반영 } }) }); const resJson = await apiRes.json(); if (apiRes.ok && resJson.candidates?.[0]?.content?.parts?.[0]?.text) { return new Response(JSON.stringify({ text: resJson.candidates[0].content.parts[0].text }), { headers: { "Content-Type": "application/json", ...corsHeaders } }); } return new Response(JSON.stringify({ text: gemsBlock }), { headers: { "Content-Type": "application/json", ...corsHeaders } }); } catch (e) { return new Response(JSON.stringify({ text: "일시적인 지연입니다. 010-3856-9062(직통 상담) 또는 상단 젬스(Gems) 전용 세션을 이용해 주십시오." }), { headers: { "Content-Type": "application/json", ...corsHeaders } }); } } };