Skip to content

fix: 예약 시간 간격 로직 개선#90

Merged
dew102938 merged 1 commit into
developfrom
fix/store-bookingIntervalMinutes
Feb 12, 2026
Merged

fix: 예약 시간 간격 로직 개선#90
dew102938 merged 1 commit into
developfrom
fix/store-bookingIntervalMinutes

Conversation

@dew102938

@dew102938 dew102938 commented Feb 12, 2026

Copy link
Copy Markdown
Contributor

💡 개요

예약 시간 간격 로직 개선

🔢 관련 이슈 링크

💻 작업내용

  • 예약 시간 간격 최소 30분으로 가능하게 수정

📌 변경사항PR

  • FEAT: 새로운 기능 추가
  • FIX: 버그/오류 수정
  • CHORE: 코드/내부 파일/설정 수정
  • DOCS: 문서 수정(README 등)
  • REFACTOR: 코드 리팩토링 (기능 변경 없음)
  • TEST: 테스트 코드 추가/수정
  • STYLE: 스타일 변경(포맷, 세미콜론 등)

🤔 추가 논의하고 싶은 내용

✅ 체크리스트

  • 브랜치는 잘 맞게 올렸는지
  • 관련 이슈를 맞게 연결했는지
  • 로컬에서 정상 동작을 확있했는지
  • 충돌이 없다(또는 브랜치에서 충돌 해결 후 PR 업데이트 완료)

Summary by CodeRabbit

릴리스 노트

  • 기능 개선
    • 예약 시간 간격의 기본값이 30분으로 변경되었습니다.
    • 예약 시간 간격 입력 필드에 최소 30분 제약 조건이 추가되었습니다.
    • 입력 값 형식 검증이 개선되었습니다.

@dew102938 dew102938 self-assigned this Feb 12, 2026
@dew102938 dew102938 added the fix label Feb 12, 2026
@vercel

vercel Bot commented Feb 12, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
eatsfine Ready Ready Preview, Comment Feb 12, 2026 11:31am

@coderabbitai

coderabbitai Bot commented Feb 12, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

예약 시간 간격의 최소값을 0분에서 30분으로 개선하고, UI 입력값 처리를 강화했습니다. 스키마 검증과 컴포넌트 기본값, 입력 핸들러가 일관되게 업데이트되었습니다.

Changes

Cohort / File(s) Summary
검증 스키마 개선
src/components/store-registration/StoreInfo.schema.ts
bookingIntervalMinutes의 최소값을 0에서 30으로 변경하고 한국어 에러 메시지 추가 ("예약 시간 간격은 최소 30분이어야 합니다.")
컴포넌트 UI 업데이트
src/components/store-registration/StepStoreInfo.tsx
기본값을 0에서 30으로 변경, min={30} 속성 추가, 그리고 leading zero 제거 로직이 포함된 onChange 핸들러 추가 (예: 01 → 1)

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Suggested reviewers

  • yooseolhee
  • jjjsun

Poem

⏰ 예약 시간이 30분으로

기본값도, 검증도 톡 튀어올라

01 앞의 영 사라지고

더 깔끔한 입력 필드 ✨


📝 리뷰 참고사항

좋은 점:

  • ✅ 스키마와 컴포넌트의 로직이 일관되게 맞춰졌네요
  • ✅ leading zero 제거 로직으로 UX 개선

확인 제안:

  1. 숫자 입력 검증의 엣지 케이스

    • 현재 onChange에서 leading zero를 제거하는데, 사용자가 30을 입력한 후 삭제하면 0"" 상태가 됩니다. 이 때 폼 제출 시 스키마의 preprocess가 0으로 변환하는데, validation에서 30 미만이라 실패합니다.
    • 대안: onChange 핸들러에서 빈 값 처리 추가:
      onChange={(e) => {
        const val = e.target.value.replace(/^0+(?=\d)/, '');
        if (val === '') {
          // 빈 값일 때 처리 (예: 30으로 초기화 또는 경고)
          field.onChange(30); // 또는 field.onChange('');
        } else {
          field.onChange(val);
        }
      }}
  2. 정수 검증

    • 현재 코드에서 30.5 같은 소수점이 입력될 수 있는데 스키마에서 정수 검증이 있는지 확인하면 좋겠습니다. 필요시 z.number().min(30).int() 추가 고려
  3. 테스트 커버리지

    • 최소값 변경이 기존 데이터에 영향을 주는지 확인했으면 좋겠습니다. (마이그레이션 필요?)
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목이 변경 사항의 핵심을 명확히 반영하고 있습니다. '예약 시간 간격 로직 개선'은 이번 PR의 주요 변경 내용을 정확히 요약하고 있습니다.
Description check ✅ Passed PR 설명이 저장소의 템플릿을 잘 따르고 있으며, 개요, 관련 이슈, 작업 내용, 변경사항 타입, 체크리스트가 모두 적절히 작성되어 있습니다.
Linked Issues check ✅ Passed 코드 변경사항들이 Issue #89의 목표(예약 시간 간격 최소 30분으로 수정)를 완벽하게 구현하고 있습니다. UI 구성과 예외처리 작업이 완료되었습니다.
Out of Scope Changes check ✅ Passed 모든 변경사항이 Issue #89의 범위(StoreInfo.schema.ts, StepStoreInfo.tsx에서 예약 시간 간격 로직 개선)에 정확히 부합하며, 범위를 벗어난 변경은 없습니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/store-bookingIntervalMinutes

No actionable comments were generated in the recent review. 🎉

🧹 Recent nitpick comments
src/components/store-registration/StoreInfo.schema.ts (1)

49-59: preprocess에서 빈 값을 0으로 변환하면 min(30) 검증과 충돌해요

현재 빈 문자열("")이나 undefined 입력 시 0을 반환하는데, 바로 뒤에서 min(30) 검증이 걸려 있어서 사용자에게 "예약 시간 간격은 최소 30분이어야 합니다"라는 메시지가 뜹니다. 필드를 비웠을 때 "값을 입력해주세요" 같은 안내가 더 자연스러울 수 있어요.

의도적으로 빈 값도 30분 미만 에러로 처리하려는 거라면 괜찮지만, 만약 빈 값과 30 미만 값을 구분하고 싶다면 아래처럼 분리할 수 있습니다.

💡 빈 값 에러 메시지를 구분하는 예시
     bookingIntervalMinutes: z.preprocess(
       (val) => {
         if (val === "" || val === undefined || Number.isNaN(val)) {
-          return 0;
+          return undefined;
         }
         return Number(val);
       },
       z
         .number()
-        .min(30, { message: "예약 시간 간격은 최소 30분이어야 합니다." }),
+        .min(30, { message: "예약 시간 간격은 최소 30분이어야 합니다." })
     ),

undefined를 반환하면 z.number()에서 타입 에러가 발생하므로, 필요하다면 .min() 전에 커스텀 메시지를 추가하거나 별도 처리를 고려해 주세요.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@yooseolhee yooseolhee left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인했습니다~!

@dew102938 dew102938 merged commit a7c4319 into develop Feb 12, 2026
3 checks passed
@jjjsun jjjsun deleted the fix/store-bookingIntervalMinutes branch February 12, 2026 12:42
@jjjsun jjjsun added the 🐞 BugFix 버그/오류 수정 label Apr 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🐞 BugFix 버그/오류 수정

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[fix] 예약 시간 간격 로직 개선

3 participants