[FE-30] 웹 슬롯 open/close lib + BFF Route Handler

작업 내용 (설계 의도)

변경 사항

자동 생성 슬롯의 수동 마감/오픈 서버 호출 계층을 기존 web/lib/portal/slots.ts에 추가한다(이 티켓만 이 파일을 이 wave에서 수정).

  • web/lib/portal/slots.ts: closeSlot(facilityId, slotId)(PATCH .../slots/{slotId}/close), openSlot(facilityId, slotId)(PATCH .../slots/{slotId}/open). 기존 fetchSlots/createSlot 등 무변경.
  • BFF Route Handler: web/app/api/portal/facilities/[id]/slots/[slotId]/close/route.ts(PATCH), .../open/route.ts(PATCH).

근거: 20260707-...-design-fe-web.md API 연동 표(W-SL). FR-10: 클로즈는 신규 예약만 차단, 기존 예약 유지.

의존

  • FE-26 (SlotStatus 타입)

다이어그램

클래스 의존

flowchart LR
    Lib["lib/portal/slots.ts close/open"] --> Route["api/portal/facilities/[id]/slots/[slotId]/close|open"]
    Route --> BeClient["lib/server/be-client.ts"]
    Page["portal/slots page (FE-33)"] --> Lib

테스트 케이스

  • closeSlot('F1', 10)PATCH .../slots/10/close를 호출한다
  • openSlot('F1', 10)PATCH .../slots/10/open를 호출한다
  • 409(상태 충돌) 응답을 표면화한다
  • 기존 fetchSlots/createSlot 동작이 무변경이다(회귀 확인)