Skip to content

[feat] 스펙 기반 큐레이션 생성 라우트 및 프로그램 폼 추가 - #91

Merged
hyejj19 merged 1 commit into
mainfrom
feature/curation-program-routes
Jul 25, 2026
Merged

[feat] 스펙 기반 큐레이션 생성 라우트 및 프로그램 폼 추가#91
hyejj19 merged 1 commit into
mainfrom
feature/curation-program-routes

Conversation

@hyejj19

@hyejj19 hyejj19 commented Jul 24, 2026

Copy link
Copy Markdown
Collaborator

PR 제목 (Title)

[feat] 스펙 기반 큐레이션 생성 라우트 및 프로그램 폼 추가

관련 이슈

변경 사항 (Changes)

  • 모든 큐레이션 생성 카드를 /dashboard/curations/specs/:specCode/new 단일 라우트로 통합하고, 기존 타입별 경로는 호환 redirect로 전환했습니다.
  • 공통 생성 페이지에서 spec code로 활성 스펙 목록/상세를 한 번 조회한 뒤 시음회, 추천·페어링, schema-driven 폼 전략을 선택하도록 변경했습니다.
  • PROGRAM 카드와 생성·수정 화면을 추가하고, object payload의 primitive, enum, enum array, object array를 스펙 기반으로 렌더링·검증·직렬화하도록 구현했습니다.
  • 프로그램별 중첩 위스키 목록을 지원하도록 공통 위스키 카드 필드를 React Hook Form 동적 경로 기반으로 변경했습니다.
  • 기존 생성 전용 page/gate의 중복 스펙 조회를 제거하고 기존 큐레이션 테스트도 공통 생성 페이지를 통하도록 전환했습니다.
  • 기능 스펙, 화면 설계, 구현 계획 문서를 추가했습니다.

변경 이유 (Reason for Changes)

큐레이션 스펙이 추가될 때마다 생성 route와 페이지를 새로 만드는 구조를 줄이고, URL의 spec code와 API의 requestSpec을 기준으로 공통 페이지에서 화면을 구성하기 위해 변경했습니다. PROGRAM은 행사 정보와 반복 프로그램, 프로그램별 위스키 목록을 포함하므로 기존 primitive 필드 모델을 enum 및 중첩 object array까지 확장했습니다.

테스트 방법 (Test Procedure)

  • pnpm test:run — 46개 test file, 328개 test 통과
  • pnpm build — TypeScript 및 production build 통과
  • 변경된 TypeScript 파일 대상 pnpm exec eslint ... 통과
  • 변경된 코드/문서 대상 pnpm exec prettier --check ... 통과
  • MSW 기반 테스트에서 공통 route의 spec별 renderer 선택, PROGRAM 생성·수정 payload, 중첩 위스키 상태 분리, 기존 시음회·추천·페어링 회귀를 확인했습니다.

참고 사항 (Additional Information)

  • PROGRAM은 앱 표시용 response/display vocabulary가 없어 생성 카드의 앱 미리보기를 의도적으로 제공하지 않습니다.
  • 로컬 브라우저 수동 점검은 관리자 로그인이 필요해 로그인 화면까지만 확인했습니다.
  • 전체 pnpm lint는 기존의 비관련 e2e 및 ImageUpload, 배너, 증류소, 테이스팅 태그, 위스키 화면 등에서 10개 오류가 있어 실패합니다. 이번 변경 파일 대상 ESLint는 통과했습니다.
  • production build에는 기존 bundle chunk size 경고가 남아 있습니다.

@hyejj19
hyejj19 merged commit 7cb0332 into main Jul 25, 2026
2 checks passed
@hyejj19
hyejj19 deleted the feature/curation-program-routes branch July 25, 2026 03:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant