Next Table Order 프로젝트
내가 구현한 기능
메뉴 상세 모달
- 메뉴 이미지, 설명, 재료 확인
- 옵션 선택 및 수량 조절
- 장바구니 담기 기능
장바구니 & 결제 페이지
- 장바구니 내 메뉴 및 옵션 확인
- 수량 조절 및 삭제 기능
- 총 금액 계산 및 결제 요청
대시보드 홈
- 일/주/월 단위 매출 필터링
- 매출 요약 카드 및 매출 그래프 구현
- 인기 메뉴 TOP 5 차트
- 최근 주문 리스트 표시
메뉴 관리 페이지
- 카테고리 생성, 수정, 삭제 기능
- 메뉴 추가, 수정, 삭제 기능
- 메뉴 리스트 테이블 구성 (이름, 가격, 재고, 활성화)
실시간 주문 관리
- 실시간 주문 리스트 UI 구성
- 주문 상태 변경 버튼 구현
- 날짜, 키워드 기반 필터 기능
마주한 이슈
SSE 최적화로 실시간 주문 관리 개선
SSE 이벤트 트래픽을 줄이기 위해 주문 이벤트 로그 기반의 리스폰스를 구현했습니다.
- order_events 테이블 도입해 변경 로그만 감지
- 클라이언트는 해당 주문만 refetch
Keywords
SSEorder_events트래픽 최적화
Performance Metrics
1만 건 응답시간 | 150ms → 5ms |
100만 건 응답시간 | 3.2s → 6ms |
order_group을 활용한 주문 단위 자동 초화
각 테이블의 주문 상태를 그룹 단위로 관리하고, 실수로 종료된 주문을 복구하거나 일정 시간 후 자동 종료되는 로직을 설계했습니다.
- 테이블마다 열려 있는 주문 그룹이 없으면 새로운 order_group 생성
- 사장님이 실수로 닫은 경우 복구 기능 제공
- 일정 시간 경과 시 자동으로 order_group 종료 처리
Keywords
order_group자동 초기화복구 로직
Performance Metrics
다음 손님이 입장할 때 이전 주문이 보이지 않도록 처리 | 안정적인 주문 흐름 유지 |
수동 개입 감소 | 초기화 필요 없음 |
옵션이 다른 주문을 구분 처리
같은 메뉴라도 옵션 조합에 따라 장바구니 항목을 구분 처리하도록 로직을 개선했습니다.
- menuId + 옵션 조합 기반 고유 키 생성
- 옵션 가격 포함 계산 및 UI 표기
가격 이력 보존을 위한 DB 구조 개선
과거 주문 정확도를 보장하기 위해 실시간 가격 대신 주문 시점의 가격을 저장하는 구조로 변경했습니다.
- order_items, order_item_options 테이블에 가격 저장
- 조회 시 저장된 가격 기준으로 총합 계산