This commit is contained in:
2026-07-10 16:41:22 +09:00
parent bbda38a013
commit 50d75fcfcd
47 changed files with 6309 additions and 350 deletions
@@ -0,0 +1,43 @@
"""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