Notification 모듈
학원 운영에 필요한 문자(SMS) 발송, 메시지 이력 관리, 재사용 가능한 문자 템플릿 관리를 담당하는 모듈입니다.
모듈 개요
| 항목 | 내용 |
|---|---|
| Gradle 서브프로젝트 | modules/notification |
| 베이스 패키지 | com.lumie.notification |
| 데이터베이스 | PostgreSQL (멀티테넌트 RLS, sms_messages / sms_templates 테이블) |
| 내부 의존 | StudentService, ClassService, StaffService |
현재 SMS 실제 발송은 mock 처리(
message.markAsSent())됩니다. 실 발송 어댑터는 추후adapter/out/external/에 추가됩니다.
주요 책임
- 개별 수신자 또는 반 전체 학생에게 문자 발송
- 발송 이력(수신자 목록, 상태, 성공/실패 수) 저장
- 재사용 문자 템플릿 생성·수정·삭제
Idempotency-Key헤더를 통한 중복 발송 방지
도메인 모델
SmsMessage 엔티티
@Entity
@Table(name = "sms_messages")
public class SmsMessage extends TenantScopedEntity {
Long id;
Long senderId; // 발신 직원 ID
RecipientType recipientType; // STUDENT | PARENT | CUSTOM
List<Recipient> recipients; // 수신자 목록 (JSONB)
String title;
String content;
Long templateId; // 사용한 템플릿 ID (선택)
Instant sentAt;
SmsStatus status; // PENDING | SENT | FAILED | PARTIAL
int successCount;
int failCount;
}