Skip to content

Conversation

@Leesowon
Copy link
Collaborator

관련 이슈

📌 작업 개요

  • GET /api/v1/office/dispatch/feed API에 사무실 인증 및 데이터 격리 기능 추가
  • 로그인한 사무실의 배차만 조회되도록 officeId 기반 필터링 적용
  • 인증 및 필터링 로직에 대한 테스트 코드 작성 (11개 테스트 케이스)

주요 변경 사항

1. 인증 추가

  • Controller: @AuthenticationPrincipal PrincipalDetails user 파라미터 추가

2. 데이터 필터링

  • Service: getDispatchFeed(Integer limit, Manager manager) 메서드 수정
  • 현재 로그인한 Manager의 Office ID를 추출하여 배차 필터링
  • 필터링 조건:
    • dispatch.officeId == manager.office.id (현재 사무실 배차만)
    • dispatch.status != HOLD (자동배차 진행중 제외)

3. 테스트 코드

  • OfficeV1ControllerTest (5개 테스트)

    • 정상 조회 및 응답 구조 검증
    • 인증 없이 접근 시 401 Unauthorized 검증
    • limit 파라미터 처리 (기본값 20, 커스텀 값) 검증
    • 빈 결과 반환 검증
  • OfficeServiceTest (6개 테스트)

    • officeId 기반 필터링 검증 (다른 사무실 배차 제외)
    • HOLD 상태 배차 제외 검증 : open (등록) | assigned (배차) | completed (완료) | canceled (취소) 만 반환
    • 피드 ID 연번 생성 검증
    • 다중 사무실 환경에서의 데이터 격리 검증

파일 변경

src/main/java/com/mobility/api/domain/office/
├── controller/OfficeV1Controller.java # 인증 파라미터 추가
└── service/OfficeService.java # officeId 필터링 로직 추가

src/test/java/com/mobility/api/domain/office/
├── controller/OfficeV1ControllerTest.java # NEW (5 tests)
└── service/OfficeServiceTest.java # NEW (6 tests)

보안 개선

  • 다른 사무실의 배차 정보 접근 불가 (데이터 격리)
  • 인증되지 않은 사용자의 API 접근 차단 (prod/docker 환경)

✨ 기타 참고 사항

  • Office와 Manager 엔티티의 Builder에 id 필드가 포함되지 않아, 테스트 코드에서 Reflection을 사용하여 id를 설정했습니다.
  • 현재 @CurrentUser 어노테이션은 TransporterV1Controller에서만 사용 중이며, OfficeV1Controller는 @AuthenticationPrincipal PrincipalDetails 방식을 사용 합니다.

✅ 체크리스트

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

  GET /api/v1/office/dispatch/feed 엔드포인트에 대한 통합 테스트 작성
  - Controller: 인증, 응답 형식, 파라미터 처리 검증 (5 tests)
  - Service: officeId 필터링, HOLD 제외, 피드 ID 생성 검증 (6 tests)
@Leesowon Leesowon self-assigned this Jan 27, 2026
@Leesowon Leesowon added ✨ Feature 새로운 기능을 추가합니다. 🧪 Test 테스트를 추가 및 수정하거나 관련 환경을 구성합니다. labels Jan 27, 2026
@Leesowon Leesowon changed the title Feat/#57 [#57] feature: 실시간 피드 api 인증, 필터링, 테스트 코드 추가 Jan 27, 2026
@Leesowon Leesowon merged commit 3de4321 into dev Jan 27, 2026
@Leesowon Leesowon deleted the feat/#57 branch January 27, 2026 14:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ Feature 새로운 기능을 추가합니다. 🧪 Test 테스트를 추가 및 수정하거나 관련 환경을 구성합니다.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants