[FE-26] 웹 lib/portal 타입·zod 스키마 확장 (program·운영시간·휴무·슬롯상태)
작업 내용 (설계 의도)
변경 사항
웹 운영 포털이 BE facility 계약을 미러링하도록 web/lib/portal/types.ts와 web/lib/portal/schemas.ts에 타입·zod 스키마를 추가한다(응답 파싱은 zod로 — 레포 관례). 단일 파일 병목이라 이 티켓이 두 파일의 신규 정의를 소유한다.
- 타입:
OperatingHours(dayOfWeek/open/close/breaks[]/slotDurationMinutes/capacity),Holiday(date),Program(id/facilityId/name/description/price/capacity/durationMinutes),SlotStatus(‘OPEN’|‘CLOSED’),SlotResponse에status·programId필드. - zod:
OperatingHoursSchema·HolidaySchema·ProgramSchema·(기존SlotResponseSchema확장). 등록 폼 입력 검증 스키마(ProgramFormSchema: price≥0, capacity≥1, durationMinutes>0;OperatingHoursFormSchema: open<close).
근거: 20260707-모집-시설상품-소모임예약연동-tdd.md REST 계약, 20260707-...-design-fe-web.md “API 연동 표”.
의존
- 없음 (wave 1)
다이어그램
클래스 의존
flowchart LR Types["lib/portal/types.ts + schemas.ts"] --> OHLib["lib/portal/operatingHours.ts (FE-28)"] Types --> PgLib["lib/portal/programs.ts (FE-29)"] Types --> SlotLib["lib/portal/slots.ts close/open (FE-30)"]
테스트 케이스
ProgramFormSchema가 price=-1을 거부하고 인라인 에러 메시지를 낸다ProgramFormSchema가 capacity=0, durationMinutes=0을 각각 거부한다OperatingHoursFormSchema가 open>=close(오픈>마감)를 거부한다SlotStatus가 ‘OPEN’|‘CLOSED’ 리터럴로 좁혀진다- 유효한 program 페이로드를
ProgramSchema.parse가 통과시킨다