feat: 예약 발송 등록/취소 API 구현 (#116) #117
No reviewers
Labels
No Label
Priority
High
Priority
Low
Priority
Medium
Priority
Non
Priority
Urgent
Status
Available
Status
Done
Status
In Progress
Type
Bug
Type
Chore
Type
Design
Type
Documentation
Type
Feature
Type
Improvement
Type
Refactor
Type
Research
Type
Task
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: SPMS/SPMS_API#117
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "feature/#116-push-schedule-api"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 작업 요약
POST /v1/in/push/schedule) 구현POST /v1/in/push/schedule/cancel) 구현🔗 관련 이슈 (Related Issues)
Closes #116
🛠️ 작업 내용 (Changes)
SPMS.Application/DTOs/Push/PushScheduleRequestDto.cs— 예약 발송 요청 DTO (message_code, send_type, device_id, tags, scheduled_at, variables)SPMS.Application/DTOs/Push/PushScheduleCancelRequestDto.cs— 예약 취소 요청 DTO (schedule_id)SPMS.Application/DTOs/Push/PushScheduleResponseDto.cs— 예약 발송 응답 DTO (schedule_id, scheduled_at, status)SPMS.Application/Interfaces/IScheduleCancelStore.cs— 예약 취소 저장소 인터페이스SPMS.Application/Interfaces/IPushService.cs— ScheduleAsync, CancelScheduleAsync 메서드 추가SPMS.Application/Services/PushService.cs— 예약 발송/취소 로직 구현SPMS.Infrastructure/Caching/ScheduleCancelStore.cs— Redis 기반 예약 취소 저장소 (7일 TTL)SPMS.Infrastructure/Workers/ScheduleWorker.cs— 취소된 예약 메시지 ACK 후 스킵 로직 추가SPMS.Infrastructure/DependencyInjection.cs— IScheduleCancelStore DI 등록SPMS.API/Controllers/PushController.cs— schedule, schedule/cancel 엔드포인트 추가📢 리뷰어 참고 사항 (To Reviewers)
schedule_cancel:{scheduleId}키를 등록하여 ScheduleWorker가 폴링 시 ACK 후 스킵✅ 체크리스트 (Self Checklist)
📸 스크린샷 / 테스트 로그 (Screenshots/Logs)