from fastapi import APIRouter, HTTPException
from fastapi.responses import FileResponse
from pydantic import BaseModel
from app.models.summary_module import get_summary_data, generate_ai_analysis
from app.models.general_module import update_a_part_status
from app.core.config import logger
import os

router = APIRouter(
    prefix="/goal-skill-t/api/summary",
    tags=["Summary"]
)

class SummaryRequest(BaseModel):
    session_id: str

@router.post("")
async def get_summary(request: SummaryRequest):
    """
    현재 세션의 전체 진행 상황 요약 데이터를 반환합니다.
    user_profile_summary에서 데이터를 가져오고, AI 분석 코멘트를 생성합니다.
    """
    try:
        data = get_summary_data(request.session_id)
        
        # AI 분석 코멘트 생성
        ai_comment = await generate_ai_analysis(data)
        data["ai_analysis"] = ai_comment
        
        # 分析結果 버튼 클릭 시 A-part 완료 상태를 1로 업데이트
        update_a_part_status(request.session_id, 1)
        
        return {
            "status": "success",
            "data": data
        }
    except Exception as e:
        logger.error(f"Summary API Error: {e}")
        return {
            "status": "error",
            "message": str(e),
            "data": {}
        }

@router.get("/curriculum/{session_id}")
async def get_curriculum_pdf(session_id: str):
    """
    커리큘럼 PDF 파일 서빙
    /home/air/goalskill_t/back/studyplan_files/curriculum_sess_{session_id}.pdf
    """
    try:
        # PDF 파일 경로
        # session_id가 이미 sess_로 시작하므로 curriculum_sess_를 제거하고 curriculum_만 사용
        # 실제 파일명: curriculum_sess_{session_id}.pdf
        pdf_path = f"/home/air/goalskill_t/back/studyplan_files/curriculum_{session_id}.pdf"
        
        logger.info(f"Curriculum PDF Request: session_id={session_id}, path={pdf_path}")
        
        # 파일 존재 확인
        if not os.path.exists(pdf_path):
            logger.error(f"Curriculum PDF not found: {pdf_path}")
            raise HTTPException(status_code=404, detail=f"Curriculum PDF not found for session: {session_id}")
        
        logger.info(f"Curriculum PDF found: {pdf_path}")
        
        # 파일명 인코딩 (UTF-8)
        from urllib.parse import quote
        filename = f"カリキュラム_{session_id}.pdf"
        encoded_filename = quote(filename)
        
        return FileResponse(
            pdf_path,
            media_type="application/pdf",
            headers={
                "Content-Disposition": f'inline; filename="{encoded_filename}"; filename*=UTF-8\'\'{encoded_filename}'
            }
        )
    except HTTPException:
        raise
    except Exception as e:
        logger.error(f"Curriculum PDF Error: {e}")
        raise HTTPException(status_code=500, detail=str(e))
