예약 시스템 만들기: 두 사람이 같은 시간을 고르면

바이브코딩으로 예약 시스템을 만들었습니다. 달력에서 빈 시간을 고르고 신청하면 됩니다. 그런데 두 사람이 같은 시간에 화면을 열면 어떨까요? 두 화면 모두 빈자리로 보였지만, 한 자리만 받을 수 있습니다.
빈자리 표시는 예약 확정이 아닙니다
달력은 조회한 시점의 정보를 보여줍니다. 손님이 시간을 고르는 동안 다른 손님이 먼저 예약할 수도 있어요. 화면에서 빈자리였다는 이유만으로 신청을 모두 받아들이지는 않습니다.
예약을 저장하는 순간에 남은 자리를 다시 확인하고, 허용 인원을 넘지 않도록 처리해야 합니다. 같은 시간에 한 명만 받는다면, 서로 다른 신청이 동시에 들어와도 한 건만 확정되도록 데이터 저장 단계에서 막아야 합니다. 먼저 조회하고 나중에 저장하는 동작만 나눠두면, 동시에 들어온 두 신청이 모두 통과할 수 있으니까요.
대기와 확정은 다른 상태입니다
신청한 즉시 확정되는 서비스인지, 대표님이 확인한 뒤 확정하는 서비스인지 정합니다. “신청을 받았습니다”와 “예약이 확정되었습니다”는 손님이 다르게 받아들일 말입니다.
승인 대기 중에도 자리를 막아둘지, 일정 시간만 임시로 잡아둘지도 정해요. 임시 자리를 쓴다면 언제 풀리는지와 늦게 들어온 신청을 어떻게 처리할지도 필요합니다. 처음에는 실제 운영할 수 있는 규칙 하나부터 선택하면 됩니다.
예약에 실패한 손님도 다음 행동이 있어야 해요
다른 손님이 먼저 예약했다면 입력한 연락처를 모두 지우기보다, 선택한 시간이 마감되었음을 알려주고 다른 시간을 고르게 할 수 있습니다. 새 달력 정보도 함께 보여줍니다.
테스트할 때는 두 기기에서 같은 시간을 동시에 신청해봅니다. 마지막 한 자리를 신청하는 경우와 취소 뒤 자리가 다시 열리는 경우도 봅니다. 한 자리에는 확정 예약 한 건만 남아야 하겠죠.
컴윗에서 예약 서비스를 만든다면 달력 모양뿐 아니라 “같은 시간에 몇 명까지 받고, 신청과 확정은 언제 구분할까?”를 함께 설명해보세요. 화면에서 보이는 빈자리와 실제 예약 규칙을 맞추는 출발점입니다.


