from fastapi.middleware.cors import CORSMiddleware
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import os

from openai import AsyncOpenAI

# FastAPI 앱
app = FastAPI()

# CORS 설정
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

# OpenAI 클라이언트
client = AsyncOpenAI(
    api_key=os.getenv("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")  # .env 또는 환경변수 사용
)

class ChatRequest(BaseModel):
    message: str
    # 프론트엔드 호환용
    thinking_level: str = "OFF"


@app.post("/goal-skill-t/api/chat")
async def chat_with_ai(request: ChatRequest):
    try:
        response = await client.chat.completions.create(
            model="gpt-4o-mini",
            messages=[
                {"role": "system", "content": "당신은 사용자의 목표 달성과 스킬 성장을 돕는 코치입니다."},
                {"role": "user", "content": request.message},
            ],
            temperature=0.7,
        )

        answer = response.choices[0].message.content

        return {
            "answer": answer,              # ✅ JS의 data.answer와 맞춤
            "thinking_process": None       # (선택) 프론트에서 로그 찍는 용도
        }

    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))
