[Feature] 대용량 발송/상태조회/취소 API 구현 (7.3~7.5) #130

Closed
opened 2026-02-10 13:46:55 +00:00 by seonkyu.kim · 0 comments
Owner

설명

API_Specification.md §7.3~7.5 기준 대용량 발송 관련 API 3개를 구현한다.

  • 7.3 POST /v1/in/push/send/bulk — CSV 기반 대용량 비동기 발송
  • 7.4 POST /v1/in/push/job/status — 발송 작업 상태 조회
  • 7.5 POST /v1/in/push/job/cancel — 발송 작업 취소

참조 문서

  • Documents/API_Specification.md §7.3~7.5
  • Documents/DB_Schema.md §8 (대용량 발송 Job 상태: Redis + RabbitMQ)

구현 계획

1. Redis Job Store (신규)

  • IBulkJobStore (Application interface) + BulkJobStore (Infrastructure/Caching)
  • Job 상태 관리: queued → processing → completed/failed/cancelled
  • TTL: 7일

2. PushMessageDto 확장

  • job_id 필드 추가 (nullable) — bulk 발송 추적용

3. PushWorker 수정

  • job_id가 있는 메시지 처리 시 Redis에서 sent_count/failed_count 증분
  • 취소된 job의 메시지는 스킵
  • 전체 처리 완료 시 status=completed로 변경

4. API 엔드포인트

  • PushController에 send/bulk, job/status, job/cancel 추가
  • CSV 파싱: device_id 컬럼 필수, 나머지 변수 매칭

체크리스트

  • IBulkJobStore 인터페이스 + BulkJobStore 구현
  • PushMessageDto에 job_id 추가
  • DTOs: BulkSendResponseDto, JobStatusRequestDto/ResponseDto, JobCancelRequestDto/ResponseDto
  • IPushService 확장 (SendBulkAsync, GetJobStatusAsync, CancelJobAsync)
  • PushService 구현 (CSV 파싱, 메시지 일괄 발행)
  • PushWorker 수정 (job 진행 추적, 취소 체크)
  • PushController에 3개 엔드포인트 추가
  • DependencyInjection에 IBulkJobStore 등록
## 설명 API_Specification.md §7.3~7.5 기준 대용량 발송 관련 API 3개를 구현한다. - **7.3** `POST /v1/in/push/send/bulk` — CSV 기반 대용량 비동기 발송 - **7.4** `POST /v1/in/push/job/status` — 발송 작업 상태 조회 - **7.5** `POST /v1/in/push/job/cancel` — 발송 작업 취소 ## 참조 문서 - `Documents/API_Specification.md` §7.3~7.5 - `Documents/DB_Schema.md` §8 (대용량 발송 Job 상태: Redis + RabbitMQ) ## 구현 계획 ### 1. Redis Job Store (신규) - IBulkJobStore (Application interface) + BulkJobStore (Infrastructure/Caching) - Job 상태 관리: queued → processing → completed/failed/cancelled - TTL: 7일 ### 2. PushMessageDto 확장 - job_id 필드 추가 (nullable) — bulk 발송 추적용 ### 3. PushWorker 수정 - job_id가 있는 메시지 처리 시 Redis에서 sent_count/failed_count 증분 - 취소된 job의 메시지는 스킵 - 전체 처리 완료 시 status=completed로 변경 ### 4. API 엔드포인트 - PushController에 send/bulk, job/status, job/cancel 추가 - CSV 파싱: device_id 컬럼 필수, 나머지 변수 매칭 ## 체크리스트 - [ ] IBulkJobStore 인터페이스 + BulkJobStore 구현 - [ ] PushMessageDto에 job_id 추가 - [ ] DTOs: BulkSendResponseDto, JobStatusRequestDto/ResponseDto, JobCancelRequestDto/ResponseDto - [ ] IPushService 확장 (SendBulkAsync, GetJobStatusAsync, CancelJobAsync) - [ ] PushService 구현 (CSV 파싱, 메시지 일괄 발행) - [ ] PushWorker 수정 (job 진행 추적, 취소 체크) - [ ] PushController에 3개 엔드포인트 추가 - [ ] DependencyInjection에 IBulkJobStore 등록
seonkyu.kim added the
Priority
Medium
Status
Available
Type
Feature
labels 2026-02-10 13:47:02 +00:00
seonkyu.kim added this to the Phase 3: 메시지 & Push Core milestone 2026-02-10 13:47:04 +00:00
seonkyu.kim self-assigned this 2026-02-10 13:47:07 +00:00
seonkyu.kim added
Status
In Progress
and removed
Status
Available
labels 2026-02-10 13:57:49 +00:00
seonkyu.kim added
Status
Done
and removed
Status
In Progress
labels 2026-02-10 14:01:02 +00:00
Sign in to join this conversation.
No description provided.