Skip to content

Conversation

@Leesowon
Copy link
Collaborator

관련 이슈

#35

📌 작업 개요

  • 기사가 자신의 현재 위치를 기준으로 배차를 거리순으로 조회할 수 있는 API 구현
  • 배차 상태별 필터링 기능 추가 (복수 선택 가능)
  • PostGIS ST_DistanceSphere를 활용한 정확한 거리 계산

1. Repository Layer

  • DispatchRepository.findDispatchesByDistance() 메서드 추가
  • PostGIS ST_DistanceSphere를 사용한 미터 단위 거리 계산
  • 상태 필터링을 위한 PostgreSQL IN 절 처리 (:statuses IS NULL OR d.status IN (:statuses))

2. Service Layer

  • DispatcherService.getDispatchListByDistance() 메서드 추가
  • LocationHistory에서 기사의 최신 위치 조회
  • StatusType enum → String 변환 로직 (빈 리스트는 null로 전달하여 PostgreSQL 에러 방지)

3. Controller Layer

  • GET /api/v1/transporter/dispatch-list 엔드포인트 추가
  • 쿼리 파라미터: ?status=OPEN&status=ASSIGNED 형태로 복수 선택 가능
  • String → StatusType enum 수동 변환 로직 추가

기술적 의사결정

@RequestParam vs @ModelAttribute

  • 기존의 코드 컨벤션에 맞춰 requestDTO + record 방식인 @ModelAttribute + DispatchListSearchReq(Record) 방식을 사용하려 했으나,

  • Java Record는 불변 객체(모든 필드가 final)라서 setteSpring의 @ModelAttribute는 전통적으로 기본 생성자 + setter를 통해 바인딩하기 때문에 Record와의 호환성 문제로 파라미터 바인딩이 실패

  • 따라서 @RequestParam(required = false) List<String> status 방식으로 직접 받아 컨트롤러에서 수동으로 enum 변환하는 방식으로 구현

    PostgreSQL IN 절 null 처리

  • 빈 리스트를 전달하면 PostgreSQL에서 array literal 파싱 에러가 발생하므로, 상태 필터가 없을 경우 null을 전달하고 SQL에서 `:statuses IS N처리

    API 사용 예시

    # 전체 배차 조회 (거리순)
    GET /api/v1/transporter/dispatch-list
    
    # OPEN 상태만 조회
    GET /api/v1/transporter/dispatch-list?status=OPEN
    
    # OPEN, ASSIGNED 상태 조회
    GET /api/v1/transporter/dispatch-list?status=OPEN&status=ASSIGNED
    
    

✨ 기타 참고 사항

✅ 체크리스트

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

@Leesowon Leesowon self-assigned this Dec 23, 2025
@Leesowon Leesowon added the ✨ Feature 새로운 기능을 추가합니다. label Dec 23, 2025
@Leesowon Leesowon merged commit 4dbc656 into dev Dec 23, 2025
1 check passed
@Leesowon Leesowon changed the title Feat/35 distance [#35] feat: 기사의 배차에 대한 거리순 필터링 구현 Dec 25, 2025
@Leesowon Leesowon changed the title [#35] feat: 기사의 배차에 대한 거리순 필터링 구현 [#35] feat: 기사의 배차에 대한 거리순 정렬 기능 구현 Dec 25, 2025
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