"""B02_ProjRegister FastAPI 라우터.""" from typing import Any from fastapi import APIRouter, Depends, HTTPException from common_util.common_util_auth import require_company from .B02_ProjRegister_Repository import create_project from .B02_ProjRegister_Schema import CreateProjectRequest, CreateProjectResponse router = APIRouter(prefix="/api/b02", tags=["B02_ProjRegister"]) @router.post("/project", response_model=CreateProjectResponse) async def post_project( payload: CreateProjectRequest, session: dict[str, Any] = Depends(require_company), ) -> CreateProjectResponse: """신규 프로젝트를 생성한다.""" company_id = session.get("company_id") if company_id is None: raise HTTPException(status_code=403, detail="회사 연결이 필요합니다.") try: result = await create_project( user_id=int(session["user_id"]), company_id=int(company_id), name=payload.name.strip(), region=payload.region.strip(), road_type=payload.road_type, project_year=payload.project_year, estimated_length_m=payload.estimated_length_m, memo=payload.memo.strip() if payload.memo else None, ) return CreateProjectResponse(**result) except ValueError as exc: raise HTTPException(status_code=400, detail=str(exc)) from exc except Exception as exc: raise HTTPException( status_code=500, detail="프로젝트 생성 처리 중 오류가 발생했습니다." ) from exc