[FE-28] 웹 운영시간·휴무 lib + BFF Route Handler

작업 내용 (설계 의도)

변경 사항

운영시간 등록·휴무 관리의 서버 호출 계층을 웹 포털 관례(fetch → Next Route Handler → be-client)로 신규 작성한다.

  • web/lib/portal/operatingHours.ts: updateOperatingHours(facilityId, body) (PUT /facilities/{id}/operating-hours). 응답 zod 파싱.
  • web/lib/portal/holidays.ts: addHoliday(facilityId, date)(POST .../holidays), removeHoliday(facilityId, date)(DELETE .../holidays).
  • BFF Route Handler: web/app/api/portal/facilities/[id]/operating-hours/route.ts(PUT), web/app/api/portal/facilities/[id]/holidays/route.ts(POST·DELETE) — lib/server/be-client.ts 경유, Bearer 쿠키 전달.

근거: 20260707-...-design-fe-web.md API 연동 표(W-OH/W-HD).

의존

  • FE-26 (types·schemas)

다이어그램

클래스 의존

flowchart LR
    Lib["lib/portal/operatingHours.ts + holidays.ts"] --> Route["api/portal/facilities/[id]/operating-hours + holidays"]
    Route --> BeClient["lib/server/be-client.ts"]
    Form["OperatingHoursForm/HolidaySection (FE-31)"] --> Lib

테스트 케이스

  • updateOperatingHours가 PUT을 호출하고 응답을 zod로 파싱한다(msw)
  • addHoliday가 POST body에 date를 실어 보낸다
  • removeHoliday가 DELETE를 호출한다
  • 403 응답을 ProblemDetail로 표면화한다(권한 안내 전제)
  • 중복 날짜 추가가 멱등 처리(2xx)로 통과한다