Notification Module Planning
이 문서는 Vivid AI의 서비스 내 알림함(Notification Module) 기획 기준을 정의합니다.
알림은 사용자가 놓치면 안 되는 주요 이벤트를 기록하고, 필요한 경우 관련 화면으로 이동할 수 있게 하는 기능입니다. 실시간 진행률, 단순 로딩 상태, 일시적인 토스트 메시지와는 분리하며, 사용자가 나중에 다시 확인할 수 있는 확정된 이벤트를 중심으로 제공합니다.
초기 버전에서는 댓글, 좋아요, 팔로우, 멘션 등 소셜 알림은 제외합니다.
1. 목적
알림 모듈의 핵심 목적은 다음과 같습니다.
- 생성 작업의 최종 결과를 사용자가 놓치지 않게 합니다.
- 결제, 충전, 크레딧 사용, 환불처럼 사용자 자산과 관련된 이벤트를 명확히 전달합니다.
- 정책 위반, 기능 제한, 계정 제한처럼 중요한 계정 상태 변화를 사용자에게 고지합니다.
- 공지, 점검, 장애처럼 운영 커뮤니케이션이 필요한 정보를 서비스 내에서 전달합니다.
- 사용자가 알림을 클릭했을 때 관련 화면으로 바로 이동할 수 있게 합니다.
2. 초기 알림 범위
초기 알림은 다음 네 가지 성격을 우선합니다.
| 범위 | 설명 |
|---|
| 작업 결과 | 이미지/비디오 생성 완료, 생성 실패, 후처리 실패 |
| 자산 이벤트 | 결제, 충전, 크레딧 사용, 자동 환불, 보너스, 관리자 조정 |
| 운영 커뮤니케이션 | 공지, 패치노트, 점검, 장애 발생/복구 |
| 정책/안전 | 정책 경고, 생성물 삭제, 기능 제한, 계정 정지 |
3. 초기 제외 범위
다음 항목은 초기 버전에서 제외합니다.
- 댓글 알림
- 좋아요 알림
- 팔로우 알림
- 멘션 알림
- 마케팅성 푸시 알림
- 생성 진행률 단계별 알림
- 단순 토스트성 안내
소셜 알림은 커뮤니티 기능이 안정화된 뒤 별도 카테고리로 확장합니다.
4. 알림 타입 목록
4.1. 생성 알림
| 항목 | 내용 |
|---|
| 이름 | 생성 완료 |
| 내부 타입 | GENERATION_COMPLETED |
| 발생 기준 | 이미지 또는 비디오 생성이 최종 완료되었을 때 |
| 사용자 메시지 예시 | 생성이 완료되었습니다. |
| CTA | 결과물 보기 |
| 이동 화면 | 생성물 상세 화면 |
| 중요도 | 성공 |
| 항목 | 내용 |
|---|
| 이름 | 생성 실패 |
| 내부 타입 | GENERATION_FAILED |
| 발생 기준 | 생성 또는 후처리가 최종 실패했을 때 |
| 사용자 메시지 예시 | 생성에 실패했습니다. 사용된 Credits는 자동 환불되었습니다. |
| CTA | 작업 상세 보기 |
| 이동 화면 | 생성물 상세 또는 생성 히스토리 |
| 중요도 | 오류 |
4.2. 결제 알림
| 항목 | 내용 |
|---|
| 이름 | 충전 성공 |
| 내부 타입 | PAYMENT_CHARGE_SUCCEEDED |
| 발생 기준 | 결제 검증, 결제 내역 저장, 지갑 충전이 모두 성공했을 때 |
| 사용자 메시지 예시 | 50 Credits가 충전되었습니다. |
| CTA | 지갑 내역 보기 |
| 이동 화면 | 지갑/거래 내역 |
| 중요도 | 성공 |
| 항목 | 내용 |
|---|
| 이름 | 충전 실패 |
| 내부 타입 | PAYMENT_CHARGE_FAILED |
| 발생 기준 | 온체인 검증 실패, 금액 불일치, 중복 트랜잭션 등으로 충전 실패가 확정되었을 때 |
| 사용자 메시지 예시 | 결제 검증에 실패했습니다. |
| CTA | 결제 내역 보기 |
| 이동 화면 | 지갑/거래 내역 |
| 중요도 | 오류 |
4.3. 크레딧 알림
| 항목 | 내용 |
|---|
| 이름 | 크레딧 사용 |
| 내부 타입 | CREDIT_USED |
| 발생 기준 | 생성 요청으로 Credits가 차감되었을 때 |
| 사용자 메시지 예시 | 생성 요청으로 5 Credits가 사용되었습니다. |
| CTA | 지갑 내역 보기 |
| 이동 화면 | 지갑/거래 내역 |
| 중요도 | 일반 |
| 비고 | 알림 피로도가 생길 수 있으므로 초기에는 별도 알림보다 생성 알림 본문에 포함하는 방식도 고려합니다. |
| 항목 | 내용 |
|---|
| 이름 | 자동 환불 |
| 내부 타입 | CREDIT_REFUNDED |
| 발생 기준 | 생성 실패, 작업 타임아웃, 워커 응답 없음 등으로 Credits가 자동 환불되었을 때 |
| 사용자 메시지 예시 | 생성 실패로 5 Credits가 자동 환불되었습니다. |
| CTA | 지갑 내역 보기 |
| 이동 화면 | 지갑/거래 내역 |
| 중요도 | 성공 |
| 항목 | 내용 |
|---|
| 이름 | 보너스 지급 |
| 내부 타입 | CREDIT_BONUS_GRANTED |
| 발생 기준 | 이벤트, 추천, 프로모션 등으로 보너스 Credits가 지급되었을 때 |
| 사용자 메시지 예시 | 이벤트 보너스 20 Credits가 지급되었습니다. |
| CTA | 지갑 내역 보기 |
| 이동 화면 | 지갑/거래 내역 |
| 중요도 | 성공 |
| 항목 | 내용 |
|---|
| 이름 | 관리자 조정 |
| 내부 타입 | CREDIT_ADMIN_ADJUSTED |
| 발생 기준 | 운영자가 사용자 Credits를 수동으로 지급하거나 회수했을 때 |
| 사용자 메시지 예시 | 운영자 조정으로 Credits 잔액이 변경되었습니다. |
| CTA | 지갑 내역 보기 |
| 이동 화면 | 지갑/거래 내역 |
| 중요도 | 일반 또는 주의 |
4.4. 공지 알림
| 항목 | 내용 |
|---|
| 이름 | 일반 공지 |
| 내부 타입 | ANNOUNCEMENT_NOTICE |
| 발생 기준 | 운영자가 일반 공지 또는 안내사항을 발행했을 때 |
| 사용자 메시지 예시 | 새로운 공지사항이 등록되었습니다. |
| CTA | 공지 보기 |
| 이동 화면 | 공지 상세 |
| 중요도 | 일반 |
| 항목 | 내용 |
|---|
| 이름 | 패치노트 |
| 내부 타입 | ANNOUNCEMENT_PATCH_NOTE |
| 발생 기준 | 기능 업데이트 또는 패치노트가 발행되었을 때 |
| 사용자 메시지 예시 | 새로운 업데이트 내역을 확인해보세요. |
| CTA | 패치노트 보기 |
| 이동 화면 | 패치노트 상세 |
| 중요도 | 일반 |
| 항목 | 내용 |
|---|
| 이름 | 점검 안내 |
| 내부 타입 | ANNOUNCEMENT_MAINTENANCE |
| 발생 기준 | 서비스 점검 예정, 점검 진행, 점검 완료 안내가 필요할 때 |
| 사용자 메시지 예시 | 서비스 점검이 예정되어 있습니다. |
| CTA | 공지 보기 |
| 이동 화면 | 공지 상세 |
| 중요도 | 주의 |
4.5. 정책 알림
| 항목 | 내용 |
|---|
| 이름 | 정책 경고 |
| 내부 타입 | POLICY_WARNING |
| 발생 기준 | 정책 위반 1차 경고, 생성물 삭제 안내 등이 발생했을 때 |
| 사용자 메시지 예시 | 정책 위반으로 생성물이 삭제되었습니다. |
| CTA | 정책 확인 |
| 이동 화면 | 계정/정책 안내 화면 |
| 중요도 | 주의 |
| 항목 | 내용 |
|---|
| 이름 | 기능 제한 |
| 내부 타입 | POLICY_RESTRICTION |
| 발생 기준 | 24시간 생성 차단 등 기능 제한이 확정되었을 때 |
| 사용자 메시지 예시 | 정책 위반으로 생성 기능이 일시 제한되었습니다. |
| CTA | 제한 사유 보기 |
| 이동 화면 | 계정/정책 안내 화면 |
| 중요도 | 오류 |
| 항목 | 내용 |
|---|
| 이름 | 계정 정지 |
| 내부 타입 | POLICY_ACCOUNT_BANNED |
| 발생 기준 | 계정 정지 또는 영구 정지가 확정되었을 때 |
| 사용자 메시지 예시 | 정책 위반으로 계정 이용이 제한되었습니다. |
| CTA | 계정 상태 보기 |
| 이동 화면 | 계정/정책 안내 화면 |
| 중요도 | 긴급 |
4.6. 시스템 알림
| 항목 | 내용 |
|---|
| 이름 | 장애 발생 |
| 내부 타입 | SYSTEM_INCIDENT |
| 발생 기준 | 생성, 결제, 스토리지 등 사용자에게 영향을 주는 장애가 발생했을 때 |
| 사용자 메시지 예시 | 현재 생성 기능에 지연이 발생하고 있습니다. |
| CTA | 상태 확인 |
| 이동 화면 | 상태 페이지 또는 공지 상세 |
| 중요도 | 오류 |
| 항목 | 내용 |
|---|
| 이름 | 장애 복구 |
| 내부 타입 | SYSTEM_RECOVERED |
| 발생 기준 | 기존 장애가 복구되었을 때 |
| 사용자 메시지 예시 | 서비스 장애가 복구되었습니다. |
| CTA | 상태 확인 |
| 이동 화면 | 상태 페이지 또는 공지 상세 |
| 중요도 | 일반 |
4.7. 저장공간/만료 알림
| 항목 | 내용 |
|---|
| 이름 | 만료 예정 |
| 내부 타입 | STORAGE_EXPIRING_SOON |
| 발생 기준 | 결과물 또는 파일의 보관 기간 만료가 가까워졌을 때 |
| 사용자 메시지 예시 | 일부 결과물의 보관 기간이 곧 만료됩니다. |
| CTA | 결과물 보기 |
| 이동 화면 | 생성물 상세 또는 갤러리 |
| 중요도 | 주의 |
| 항목 | 내용 |
|---|
| 이름 | 만료 완료 |
| 내부 타입 | STORAGE_EXPIRED |
| 발생 기준 | 보관 정책에 따라 결과물이 삭제되었거나 접근 제한되었을 때 |
| 사용자 메시지 예시 | 보관 기간이 만료된 결과물이 정리되었습니다. |
| CTA | 갤러리 보기 |
| 이동 화면 | 갤러리 |
| 중요도 | 일반 |
5. 우선순위
P0: 초기 버전에 반드시 포함
- 생성 완료
- 생성 실패
- 충전 성공
- 충전 실패
- 자동 환불
- 중요 공지
- 정책 경고
- 기능 제한
- 계정 정지
P1: 초기 버전에 포함하면 좋은 항목
- 크레딧 사용
- 보너스 지급
- 관리자 조정
- 시스템 장애 발생
- 시스템 장애 복구
P2: 정책 확정 후 적용 권장
- 패치노트
- 일반 공지
- 점검 안내
- 저장공간 만료 예정
- 저장공간 만료 완료
저장공간/만료 알림은 보관 기간, 삭제 정책, 등급별 저장 정책이 확정된 뒤 실제 발행 기준을 구체화합니다.
6. 화면 구성 방향
6.1. 알림 진입점
- 상단 헤더에 알림 아이콘을 제공합니다.
- 미읽음 알림이 있을 경우 배지를 표시합니다.
- 배지는 숫자 또는 점 형태로 표시할 수 있습니다.
- 모바일에서는 하단 내비게이션 또는 헤더 영역에서 접근 가능하도록 고려합니다.
6.2. 알림함 리스트
- 최신 알림이 상단에 표시됩니다.
- 읽음/미읽음 상태가 명확히 구분되어야 합니다.
- 각 알림은 타입별 아이콘, 제목, 본문, 발생 시간, 읽음 상태를 포함합니다.
- 클릭 시 관련 화면으로 이동합니다.
- 초기 필터는
전체, 미읽음 정도만 제공합니다.
6.3. 알림 상세
- 공지, 정책, 장애 알림처럼 본문이 긴 경우 상세 화면을 제공합니다.
- 생성, 결제, 크레딧 알림은 상세 화면보다 관련 화면으로 바로 이동하는 방식을 우선합니다.
7. 타입별 아이콘 방향
| 타입 | 아이콘 방향 |
|---|
| 생성 | 이미지, 비디오, sparkle 계열 |
| 결제 | 카드, 지갑, 영수증 계열 |
| 크레딧 | 코인, 토큰, 플러스/마이너스 계열 |
| 공지 | 스피커, 문서, 메가폰 계열 |
| 정책 | 방패, 경고, 금지 계열 |
| 시스템 | 서버, 경고, 상태 표시 계열 |
| 저장공간 | 폴더, 클라우드, 시계 계열 |
8. 중요도 기준
| 중요도 | 사용 기준 |
|---|
| 일반 | 단순 안내, 패치노트, 일반 공지 |
| 성공 | 생성 완료, 충전 성공, 환불 완료, 보너스 지급 |
| 주의 | 점검 예정, 저장공간 만료 예정, 정책 경고 |
| 오류 | 생성 실패, 결제 실패, 기능 제한, 장애 발생 |
| 긴급 | 계정 정지, 중대한 정책 위반 |
9. UX 주의사항
- 진행률 단계별 알림은 만들지 않습니다.
- 사용자가 놓치면 안 되는 확정 이벤트만 알림으로 남깁니다.
- 결제, 환불, 정책 알림은 삭제보다 읽음 처리 중심으로 설계합니다.
- 크레딧 사용 알림은 빈도가 높을 수 있으므로 기본 노출 여부를 신중히 결정합니다.
- 공지와 패치노트는 알림함에 요약만 보여주고, 상세 페이지에서 전체 내용을 확인하게 합니다.
- 생성 실패와 자동 환불은 별도 이벤트지만 사용자 화면에서는 함께 이해되도록 문구를 구성합니다.
10. 구현 참고 기준
초기 구현 시 알림 데이터에는 다음 정보가 필요합니다.
| 필드 | 설명 |
|---|
type | 알림 타입 |
category | 생성, 결제, 크레딧, 공지, 정책, 시스템, 저장공간 등 상위 분류 |
severity | 일반, 성공, 주의, 오류, 긴급 |
recipientUserId | 개인 알림 대상 사용자 |
title | 알림 제목 |
body | 알림 본문 |
targetUrl | 클릭 시 이동할 화면 |
metadata | creationId, paymentId, creditTransactionId, announcementId 등 참조 데이터 |
dedupeKey | 중복 알림 생성을 방지하기 위한 키 |
readAt | 읽음 처리 시각 |
expiresAt | 만료형 알림에만 사용하는 만료 시각 |
공지, 패치노트, 점검 안내는 모든 사용자에게 알림 row를 즉시 대량 생성하기보다, 별도의 공지 데이터와 사용자별 읽음 상태를 분리하는 구조를 우선 고려합니다. 중요 공지만 알림함에 노출하는 방식이 초기 운영 부담을 줄입니다.
11. 핵심 방향
초기 알림 모듈의 핵심은 작업 결과, 돈, 정책, 장애를 정확하게 전달하는 것입니다.
소셜 알림은 서비스 이용량이 늘고 커뮤니티 기능이 안정화된 뒤 별도 카테고리로 확장합니다.