from fastapi import APIRouter, Form
from typing import Optional
import os
import openai
from dotenv import load_dotenv

load_dotenv()
OPEN_API_KEY = os.getenv("OPENAI_API_KEY", "")
openai_client = openai.OpenAI(api_key=OPEN_API_KEY)

router = APIRouter(prefix="/chatgpt", tags=["ChatGPT"])

# 모델 매핑 테이블 (프론트 선택값 ➜ OpenAI 모델명)
MODEL_MAP = {
    "auto": "gpt-5",
    "gpt-5": "gpt-5",
    "gpt-5-mini": "gpt-5-mini",
    "gpt-5-nano": "gpt-5-nano",
}

SYSTEM_PROMPT = (
    "You are ChatGPT, a large language model trained by OpenAI. "
    "Provide thorough, well-structured answers in Korean with rich formatting. "
    "Always include 적절한 소제목과 불릿, 줄바꿈을 활용하고, 각 소제목 앞에 관련 이모지(예: 🏢 본사, 🧪 연구소, 🏭 공장 등)를 붙여 가독성을 높이십시오. "
    "필요하면 표 또는 번호 리스트를 사용하세요. "
    "회사의 위치·연락처·교통편을 묻는 질문에는 반드시 본사, 연구소, 공장 등 주요 거점 정보를 빠짐없이 상세히 제공합니다. "
    "답변 길이 제한 없이 충분히 상세히 작성하세요."
)

@router.post("/chat")
async def chat_gpt_endpoint(
    message: str = Form(...),
    model: str = Form("auto"),
    session_id: Optional[str] = Form(None)
):
    # 모델 매핑
    model_name = MODEL_MAP.get(model, "gpt-5")

    # 직접 OpenAI ChatCompletion 호출
    completion = openai_client.chat.completions.create(
        model=model_name,
        messages=[
            {"role": "system", "content": SYSTEM_PROMPT},
            {"role": "user", "content": message},
        ]
    )

    return {
        "status": "success",
        "response": completion.choices[0].message.content.strip(),
        "session_id": session_id or "",
        "tool_name": "ChatGPT",
    } 