from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
import os
import warnings

# Pydantic 직렬화 경고 무시 설정
warnings.filterwarnings("ignore", message=".*Pydantic serializer warnings.*")

# app/routers/__init__.py 덕분에 이렇게 한 번에 가져올 수 있습니다.
from app.routers import (
    mbti_router, 
    python_router, 
    report_router, 
    stt_router, 
    findgoal_router,
    selfpr_router,
    curriculum_router
    # capture_router
)
from app.routers.selfpr_router import router as selfpr_router
from app.routers.capture_router import router as capture_router
from app.routers.spi_router import router as spi_router
from app.routers.summary_router import router as summary_router
from app.routers.quiz_router import router as quiz_router
from app.routers.general_router import router as general_router
from app.routers.curriculum_router import router as curriculum_router
from app.routers.weather_router import router as weather_router
from app.routers.studyplan_router import router as studyplan_router
from app.routers.it_router import router as it_router
from app.routers.curriculum_router import router as curriculum_router, file_router as curriculum_file_router
from app.routers.company_info_router import router as company_info_router
from app.routers.interview_router import router as interview_router # Added
from app.routers.today_goal_router import router as today_goal_router # Added


app = FastAPI()

# CORS 설정
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

# 라우터 등록 (조립)
app.include_router(mbti_router)
app.include_router(python_router)
app.include_router(report_router)
app.include_router(stt_router)
app.include_router(findgoal_router)
app.include_router(selfpr_router)
app.include_router(capture_router)
app.include_router(spi_router)
app.include_router(summary_router)
app.include_router(quiz_router)
app.include_router(general_router)
app.include_router(curriculum_router)
app.include_router(weather_router)
app.include_router(studyplan_router)
app.include_router(it_router)
app.include_router(curriculum_file_router)
app.include_router(company_info_router)
app.include_router(interview_router) # Added
app.include_router(today_goal_router) # Added

# 프론트엔드 정적 파일 연결
# 현재 파일 위치 기준 상위 폴더의 front 폴더를 찾습니다.
current_dir = os.path.dirname(os.path.abspath(__file__))
front_path = os.path.join(os.path.dirname(current_dir), "front")

if os.path.exists(front_path):
    app.mount("/", StaticFiles(directory=front_path, html=True), name="static")

# 업로드 폴더 정적 서빙 추가
upload_path = os.path.join(current_dir, "uploads")
if not os.path.exists(upload_path):
    os.makedirs(upload_path)
app.mount("/uploads", StaticFiles(directory=upload_path), name="uploads")

if __name__ == "__main__":
    import uvicorn
    # 실행 시: back 폴더에서 python main.py
    uvicorn.run(app, host="0.0.0.0", port=5451, log_level="debug")