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 (
    progress_router
    # capture_router
)

from app.routers.today_goal_router import router as today_goal_router
from app.routers.progress_router import router as progress_router
from app.routers.general_router import router as general_router
from app.routers.weather_router import router as weather_router
from app.routers.findgoal_router import router as findgoal_router
from app.routers.report_router import router as report_router
from app.routers.mbti_router import router as mbti_router
from app.routers.spi_router import router as spi_router
from app.routers.interview_router import router as interview_router 
from app.routers.current_position_router import router as current_position_router
from app.routers.company_info_router import router as company_info_router
from app.routers.human_os_router import router as human_os_router

app = FastAPI()

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

# 라우터 등록 (조립)
app.include_router(general_router)
app.include_router(findgoal_router)
app.include_router(mbti_router)
app.include_router(today_goal_router)
app.include_router(progress_router)
app.include_router(weather_router)
app.include_router(report_router)
app.include_router(spi_router)
app.include_router(interview_router)
app.include_router(current_position_router)
app.include_router(company_info_router)
app.include_router(human_os_router)
# 프론트엔드 정적 파일 연결
# 현재 파일 위치 기준 상위 폴더의 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("/goalskill-sales/api/static", StaticFiles(directory=front_path), name="sales-static")
    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")