전체 프로세스 한눈에 보기
예약 → 렌트(인수) → 반납까지 전체 흐름을 확인하세요
Booking Status
예약 프로세스
BookingPage → BookingSuccessPage
인수/반납 날짜, 시간, 장소 설정
- 인수 장소 선택
- 반납 장소 선택
- 날짜·시간 입력
원하는 차종 선택
- 차종 카테고리 필터
- 차량 상세 확인
- 차량 선택
렌트 패키지 및 옵션 선택
- 패키지 선택(기본/프리미엄)
- 추가 옵션 선택
- 가격 실시간 계산
기본 보험 및 추가 보험 확인
- 기본 보험 포함
- 도난보험 등 추가 보험
- 면책금 확인
예약자 정보 및 요청사항
- 이름·연락처 입력
- 항공편 정보(선택)
- 카카오/WhatsApp
쿠폰·포인트 적용 후 최종 확인
- 쿠폰 코드 적용
- 포인트 사용
- 개인/법인 결제 선택
렌트(인수) 프로세스
StaffPickupFlow
인수 전 차량 손상 이력 검토
- 미수리 손상 목록 표시
- 손상 위치 시각화
- 확인 체크박스
배정대기 차량 선택 및 배정
- 번호판/이름 검색
- 배정대기 차량만 표시
- 차량 정보 확인
결제 방법 선택 및 기록
- 법인카드/현장카드/현금
- 계좌이체/선불
- 결제 메모 입력
차량 상태·정책 동의 서명 획득
- 터치 서명 패드
- 서명 Cloud 저장
- 이메일 송부 선택
상태 업데이트 및 PDF 발송
- status → picked_up
- 차량 → rented
- PDF 이메일 백그라운드
반납 프로세스
StaffReturnFlow
인수 당시 기록된 손상 비교
- 인수 시 손상 마커 표시
- 신규 손상 여부 선택
- 손상 메모 입력
KM, 연료, 청소 상태 기록
- 반납 KM 입력
- 연료 상태 선택(0~8/8)
- 청소 상태 선택
연료·청소·손상·기타 추가비용 정산
- 연료 부족분 청구
- 청소 비용
- 손상/기타 비용
예약 완료 처리 및 차량 상태 초기화
- status → completed
- 차량 → available
- PDF 이메일 백그라운드
손상 기록 라이프사이클
VehiclePrepareFlowStaffPickupFlow Step 1VehicleDamageTab (차량 상세)StaffReturnFlow Step 1VehicleDamageTab → 미해결 손상 카드vehicle.hasDamage 플래그 동작수동 손상 보고서 제출 시
(VehicleDamageTab → handleReportSubmit)
미해결 손상 건수가 0이 될 때
(마지막 손상 해결 처리 완료 시 자동 해제)
| 필드 | 값 예시 | 설명 |
|---|---|---|
type | "damage" | 로그 종류 구분자 |
title | "신규 사고/손상 수동 보고" | 표시 제목 |
date | YYYY-MM-DD | 기록 날짜 |
description | String | 자동 생성된 요약 (마커 타입+위치+설명) |
blueprintData | [{x,y,type,description,view}] | 도면 마킹 좌표 배열 (%) |
resolved | false → true | 수리 완료 여부 |
bookingId | String | null | 관련 예약 ID (선택) |
customerName | String | null | 관련 고객명 (선택) |
estimatedRepairCost | Number | 예상 수리비 (€) |
actualRepairCost | Number | 실제 수리비 (해결 시) |
repairNotes | String | 수리 내용 메모 (해결 시) |
insuranceClaim | Boolean | 보험 접수 여부 (해결 시) |
damagePhotoUrls | [] | 손상 사진 URL 배열 (현재 미사용) |
가드 & 엣지 케이스
handoverStatus === 'completed' 이면 인수 화면 재진입 차단. 단, assignedVehicleId가 null이면 재진입 허용 (차량 재배정 가능)
returnHandoverStatus === 'completed' 이면 반납 화면 재진입 차단. 이미 완료된 예약임을 명확히 표시
차량 배정 해제 시 status → confirmed, assignedVehicleId/handoverStatus 모두 null 초기화. 인수 플로우 재시작 가능
차량 미배정 예약도 스태프가 강제 완료 가능. 미수 예약이 대시보드에 영구 잔류하지 않도록 처리
status === 'ready' 차량만 배정 가능. available 차량은 먼저 "렌트 준비 점검"을 완료해야 배정 가능
PDF 생성 및 이메일 발송은 UI 블로킹 없이 백그라운드에서 처리. Firebase Cloud Function(europe-west1) 호출
Firestore 필드 변화
| 단계 | booking.status | booking.handoverStatus | booking.returnHandoverStatus | vehicle.status |
|---|---|---|---|---|
| 예약 완료 | confirmed | null | null | available |
| 차량 배정 | confirmed | null | null | ready |
| 인수 완료 | picked_up | completed | null | rented |
| 반납 완료 | completed | completed | completed | available |