# 환경 변수 로드 

import logging
from linebot import LineBotApi, WebhookHandler
import os
from dotenv import load_dotenv
from openai import AsyncOpenAI
from pathlib import Path
from google import genai


# 1. 현재 파일(config.py)의 경로를 기준으로 프로젝트 루트(back 폴더)를 찾습니다.
# .parent를 3번 쓰면: core -> app -> back 순으로 올라갑니다.
BASE_DIR = Path(__file__).resolve().parent.parent.parent

# 2. .env 파일의 절대 경로를 만듭니다.
env_path = os.path.join(BASE_DIR, '.env')

# 3. 명시된 경로의 .env를 로드합니다.
load_dotenv(dotenv_path=env_path)

LINE_CLIENT_ID = os.getenv("LINE_CLIENT_ID")
openai_api_key = os.getenv('OPEN_AI_API_KEY')


# Google Gemini 설정
google_api_key = os.getenv('GOOGLE_API_KEY')
# google.genai는 클라이언트를 생성하는 방식으로 변경됨
genai_client = genai.Client(api_key=google_api_key) if google_api_key else None


# DB 설정 추가
DB_HOST = os.getenv("DB_HOST", "localhost")
DB_USER = os.getenv("DB_USER", "GOALSkill")
DB_PASSWORD = os.getenv("DB_PASSWORD")
DB_NAME = os.getenv("DB_NAME", "INPUT_DB")

 # Gemini 모델 객체를 쉽게 가져오는 함수 
# google.genai의 새로운 API에서는 클라이언트를 직접 사용
def get_gemini_model(system_instruction=None):
    """
    google.genai의 새로운 API를 사용하는 함수
    반환값: genai.Client 객체 (모델은 클라이언트를 통해 접근)
    """
    if not genai_client:
        raise ValueError("Google API key is not configured")
    # google.genai에서는 클라이언트를 반환하고, 모델은 클라이언트를 통해 접근
    return genai_client


# 클라이언트 생성 코드 추가!
client = AsyncOpenAI(api_key=openai_api_key)

logging.basicConfig(level=logging.INFO,
                    format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

client_id = LINE_CLIENT_ID

# MBTI 모듈이 사용할 DB 설정 딕셔너리
MBTI_DB_CONFIG = {
    'user': DB_USER,
    'password': DB_PASSWORD,
    'host': DB_HOST,
    'database': DB_NAME
}

