from fastapi import APIRouter, HTTPException
from app.models import progress_module
from app.schemas.progress_schema import StartCurriculumRequest
from app.core.config import get_gemini_model
from fastapi.responses import HTMLResponse
from google.genai import types
import json
import os
import logging
from fastapi.responses import FileResponse

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

router = APIRouter(
    prefix="/goalskill-sales/api/progress",
    tags=["Progress"]
)
file_router = APIRouter(
    prefix="/goalskill-sales/api/file",
    tags=["Files"]
)

# ... SYSTEM_PROMPT 생략 ...

@router.get("/chart-view/{session_id}")
async def get_chart_page(session_id: str):
    # 1. 프로젝트 루트 경로 찾기
    # 현재 파일 위치: back/app/routers/progress_router.py
    current_file_dir = os.path.dirname(os.path.abspath(__file__)) # .../back/app/routers
    app_dir = os.path.dirname(current_file_dir)                   # .../back/app
    back_dir = os.path.dirname(app_dir)                           # .../back
    root_dir = os.path.dirname(back_dir)                          # .../ (Project Root)

    # 2. ★ 경로 수정: front/components/dashboard.html
    # 이제 root_dir이 프로젝트 최상위이므로, 여기서 front로 들어갑니다.
    file_path = os.path.join(root_dir, "front", "components", "dashboard.html")
    
    if os.path.exists(file_path):
        return FileResponse(file_path)
    
    # 파일을 못 찾았을 때 로그 (터미널에서 확인 가능)
    logger.error(f"Dashboard file not found at: {file_path}") 
    return {"error": "Dashboard file not found"}

@router.get("/chart-data/{session_id}")
async def get_chart_data_api(session_id: str):
    """
    DB에서 실제 데이터를 조회하여 JSON으로 반환
    """
    try:
        # progress_module은 이미 P_ 및 T_ 테이블 로직이 구현되어 있다고 가정
        data = progress_module.get_real_chart_data(session_id)
        return data
    except Exception as e:
        logger.error(f"Error fetching chart data: {e}")
        raise HTTPException(status_code=500, detail="Internal Server Error")