[FE-29] 웹 시설상품(program) lib + BFF Route Handler
작업 내용 (설계 의도)
변경 사항
시설상품 등록·목록의 서버 호출 계층을 신규 작성한다.
web/lib/portal/programs.ts:listPrograms(facilityId)(GET /facilities/{id}/programs),createProgram(facilityId, body)(POST .../programs). 응답 zod 파싱.- BFF Route Handler:
web/app/api/portal/facilities/[id]/programs/route.ts(GET·POST) — be-client 경유.
근거: 20260707-...-design-fe-web.md API 연동 표(W-PG).
의존
- FE-26 (Program 타입·스키마)
다이어그램
클래스 의존
flowchart LR Lib["lib/portal/programs.ts"] --> Route["api/portal/facilities/[id]/programs"] Route --> BeClient["lib/server/be-client.ts"] Section["ProgramSection (FE-32)"] --> Lib
테스트 케이스
listPrograms('F1')이 GET을 호출하고 목록을 zod 파싱한다(msw)createProgram이 POST body(name/price/capacity/durationMinutes)를 전송한다- 400(검증 실패) 응답을 ProblemDetail로 표면화한다
- 0건 목록이 빈 배열로 파싱된다