🔥 스파르타 TIL (프로젝트)

두 번째 프로젝트 기록하기 3

승승장규 2025. 3. 28. 15:34

Slack 메시지 생성 및 전송 (All)

  • Slack 메시지를 생성 및 전송하기 위한 POST /api/slack?username=..&deliveryId=.. Controller 기능 구현.
  • 응답 객체와 메시지, HttpStatus code를 같이 묶어서 응답할 수 있게 ApiResponseData 클래스 생성.
  • 배송 도메인에서 배송 담당자가 배정이 되면 RabbitMQ를 사용해서 받아온 배송 데이터로 주문 메시지를 생성.
  • 메시지에 담길 주문 정보와 배송 정보를 FeignClient로 조회한 뒤, Gemini API를 활용해서 최종 발송 시한을 추가로 발송하는 기능을 구현.
    • 팀원들이 각자 구현한 API에 FeignClient를 사용해서 응답값을 받아오는 과정에서 해당 엔트 포인트를 찾지 못하거나, null 값을 찾아오는 오류를 많이 겪게 되었다. 
    • 객체 타입이 맞지 않거나, 파라미터의 값을 맞추지 않아서 발생하기도 하고, Record를 사용한 응답객체 받아오는 과정에서도 오류가 발생했었다.
    • 이런 오류가 발생할 때마다 즉시 팀원분들과 회의를 통해 객체 구조를 통일하는 방식으로 리팩토링 하였다.

 

특정 Slack 메시지 조회 (Master)

  • 특정 Slack 메시지를 조회하기 위해 GET /api/slack/{slackId} Controller 기능 구현.
  • deleted 상태가 아닌 메시지를 조회할 수 있도록 Repository에 findByIdAndDeletedAtIsNull 메서드로 간단하게 구현.

 

전체 Slack 메시지 조회 (Master)

  • 모든 Slack 메시지를 조회하기 위해 GET /api/slack Controller 기능 구현.
  • 전체 Slack 메시지는 다량의 데이터이기 때문에 커스텀한 PageResponseDto와 Redis Cache를 사용하여 page=1, size=10 을 default 값으로 설정한 뒤 조회할 수 있게 구현.

 

Slack 메시지 삭제 (Master)

  • Slack 메시지를 삭제하기 위해 DELETE /api/slack/{slackId} Controller 기능 구현.
  • 삭제를 요청한 뒤, deletedBy를 삭제처리한 사용자의 이름으로 수정함 (실제로 데이터베이스에 정보가 삭제되지 않게 처리함.)

 

Slack 메시지 수정 (Master)

  • Slack 메시지를 수정하기 위해 PUT /api/slakc/{slakcId} Controller 기능 구현.
  • 수정에 성공하면, updatedBy를 수정처리한 사용자의 이름으로 수정함.