콘솔·어드민
여행사 좌석·예약·손익 콘솔 데모
출발행사를 좌석·예약·손익의 기준 하나로 묶어, 중복 주문 이벤트가 와도 좌석이 두 번 확정되지 않습니다.
travel-ops-demo-157941-production.up.railway.app

열어 보시면 이런 걸 확인하실 수 있습니다
- '좌석 홀드'에서 빈 좌석을 눌러 확정하면 예약 원장도 함께 바뀝니다
- '웹훅 타임라인'에서 재수신해도 처리 16건·중복 2건(초기 상태)이 유지됩니다
- 상단 '사용법' 버튼이 1분 확인 순서 5단계를 순서대로 안내합니다
- '행사 손익'에서 행사별 합계가 전체 매출·지출과 맞는지 대조할 수 있습니다
만들면서 풀어야 했던 것
- 좌석 홀드·확정이 화면 표시만 바꿔 다른 화면이 그 변경을 보지 못했습니다. 저희는 모든 상태 전이를 단일 엔진 함수로 옮기고, 지표·좌석·원장·손익을 그 파생값으로만 그리도록 고쳤습니다.
- 웹훅 재수신 버튼이 안내 문구만 띄우고 실제 처리 경로를 다시 통과하지 않았습니다. JSON 파서와 멱등키 저장소를 붙여, 재수신 뒤에도 처리 16건·중복 2건과 좌석 상태가 그대로인 것을 확인했습니다.
- 좌석 취소 복원과 홀드 만료 처리가 없었습니다. 취소 시 좌석이 가용으로 돌아가는 전이와 10분 만료를 엔진에 넣고, 599,999ms에는 만료되지 않고 600,000ms에 만료되는 경계를 자동 검사로 고정했습니다.
비슷한 걸 만들어 보고 싶으시다면
구간 견적으로 규모를 먼저 가늠해 보시거나, 조건을 적어 보내 주시면 범위를 정리해 회신드립니다.