Skip to content

Conversation

@Leesowon
Copy link
Collaborator

관련 이슈

#40

📌 작업 개요

  • 배차 등록 시 WebSocket을 통해 거리순으로 기사에게 순차적으로 알림을 전송하는 자동 배차 시스템을 구현

1. WebSocket 기반 실시간 알림 시스템

  • 프로토콜: STOMP over WebSocket
  • 엔드포인트: ws://localhost:8080/mobility/ws
  • 양방향 통신:
    • 서버 → 기사: /queue/{transporterId}/dispatch (배차 알림)
    • 기사 → 서버: /app/dispatch/accept, /app/dispatch/reject (수락/거절)

2. 자동 배차 로직

  • 적격 기사 조회: isAutoDispatch = true인 기사 중 거리순 최대 10명
  • 순차 알림 전송:
    • 가장 가까운 기사부터 순차적으로 알림
    • 각 기사당 5초 타임아웃
    • 수락 시 배차 할당 후 종료
    • 거절/타임아웃 시 다음 기사에게 전송
  • 전원 거절/미응답: 배차는 OPEN 상태 유지 (수동 배차 대기)

3. 동시성 제어

  • 비관적 락: 여러 기사가 동시 수락 시도 시 하나만 성공
  • 트랜잭션 격리: Offer와 Dispatch 각각 락 획득 후 상태 검증

4. 비동기 처리

  • @async: 자동 배차 프로세스는 독립 스레드에서 실행
  • ThreadPool: 최대 10개 배차 동시 처리 가능
  • 타임아웃: CompletableFuture + ScheduledExecutorService

✨ 기타 참고 사항

  • dispatch_offer 테이블 생성

✅ 체크리스트

  • PR 템플릿에 맞추어 작성했어요.
  • PR에 적절한 라벨을 선택했어요.
  • 변경 내용에 대한 테스트를 진행했어요.
  • application.yml 파일을 수정했다면, Notion에 업로드, github security 수정 및 공유했어요.
  • 로컬 서버에서 정상 동작을 확인했어요. (main, test)
  • 불필요한 코드는 삭제했어요.

@Leesowon Leesowon self-assigned this Dec 25, 2025
@Leesowon Leesowon added the ✨ Feature 새로운 기능을 추가합니다. label Dec 25, 2025
@Leesowon Leesowon merged commit cbe23ca into dev Dec 25, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ Feature 새로운 기능을 추가합니다.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants