kt-event-marketing/design/userstory.md

1265 lines
46 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# KT AI 기반 소상공인 이벤트 자동 생성 서비스 - 유저스토리
## 마이크로서비스 구성
1. **User** - 회원 인증 및 매장 정보 관리
2. **Event Planning** - AI 기반 이벤트 자동 기획
3. **Content Generation** - AI 기반 콘텐츠 자동 생성
4. **Distribution** - 다중 채널 자동 배포
5. **Participation** - 이벤트 참여 및 접수 관리
6. **Analytics** - 실시간 효과 측정 및 분석
7. **AI Learning** - AI 학습 및 개선 제안
---
## 유저스토리
```
1. User 서비스
1) 사용자 인증 및 관리
UFR-USER-010: [회원가입] 소상공인으로서 | 나는, 이벤트 자동 생성 서비스를 사용하기 위해 | 간편하게 회원가입하고 싶다.
- 시나리오: 기본 정보 입력 및 KT 본인 인증 (선택)
미가입 상태에서 | 이름, 전화번호, 이메일을 입력하고 회원가입을 하면 | 회원가입이 완료되고 매장 정보 등록 화면으로 이동한다.
[입력 요구사항]
- [ ] 이름 2자 이상 입력 가능 (필수)
- [ ] 전화번호 형식 검증 (010-XXXX-XXXX) (필수)
- [ ] 이메일 형식 검증 (example@domain.com) (필수)
- [ ] KT 본인 인증 (선택) - 인증 시 추가 혜택 제공
[인증 처리]
- [ ] KT 인증 시스템 연동 확인 (선택 사항)
- [ ] 본인 인증 요청 시 전화번호로 인증 문자 발송
- [ ] 인증 완료 시 인증 토큰 저장 및 인증 고객 플래그 설정
- [ ] KT 인증 고객에게 추가 서비스 혜택 제공
- [ ] 중복 가입 방지 (전화번호 기준)
[처리 결과]
- [ ] 성공: "회원가입이 완료되었습니다" 메시지 → 매장 정보 등록 화면
- [ ] KT 인증 고객: 추가 혜택 안내 (무료 체험 횟수 증가 등)
- [ ] 실패: 구체적인 오류 메시지 표시
- M/8
---
UFR-USER-020: [매장정보등록] 소상공인으로서 | 나는, 맞춤형 이벤트를 생성하기 위해 | 내 매장 정보를 등록하고 싶다.
- 시나리오: 매장 정보 입력 및 사업자번호 검증
회원가입 완료 후 | 매장명, 업종, 주소, 영업시간, 사업자번호, 메뉴 정보를 입력하면 | 사업자번호 검증 후 매장 정보가 저장되고 무료 체험 쿠폰이 발급된다.
[입력 요구사항]
- [ ] 매장명 입력 (최대 50자)
- [ ] 업종 선택 (카테고리 리스트 제공: 음식점, 카페, 소매업 등)
- [ ] 주소 입력 (도로명 주소 API 연동)
- [ ] 영업시간 설정 (요일별 시작/종료 시간 입력)
- [ ] 메뉴/상품 정보 입력 (선택, 최대 10개)
- 메뉴명/상품명 (최대 30자)
- 가격 정보
- 간단한 설명 (최대 100자)
- [ ] 매장 특징/강점 입력 (선택, 최대 200자)
- [ ] 대표 이미지 업로드 (선택, 최대 3장)
[사업자번호 검증]
- [ ] 사업자번호 형식 검증 (XXX-XX-XXXXX)
- [ ] 국세청 사업자번호 검증 시스템 API 연동
- [ ] 사업자번호 유효성 확인
- [ ] 휴폐업 여부 확인
- [ ] 매장명과 사업자 정보 일치 확인
[처리 결과]
- [ ] 검증 성공 시 매장 정보 DB 저장
- [ ] 첫 1회 무료 체험 쿠폰 자동 발급
- [ ] 검증 실패 시 명확한 오류 메시지 제공 (유효하지 않은 번호, 휴폐업 등)
- [ ] 재입력 가능하도록 UI 유지
[무료 체험 혜택]
- [ ] 첫 1회 이벤트 무료 쿠폰 발급
- [ ] 쿠폰 유효기간 설정 (발급일로부터 30일)
- M/13
---
2. Event Planning 서비스
1) AI 이벤트 기획
UFR-PLAN-010: [이벤트목적선택] 소상공인으로서 | 나는, 효과적인 이벤트를 기획하기 위해 | 이벤트 목적을 선택하고 싶다.
- 시나리오: 이벤트 기획 시작 및 목적 설정
이벤트 기획 화면에 접근한 상황에서 | 신규고객 유치, 재방문 유도, 매출 증대, 인지도 향상 중 하나를 선택하면 | 선택한 목적이 저장되고 AI 트렌드 분석이 시작된다.
[목적 선택 옵션]
- [ ] 신규고객 유치: 신규 고객 확보에 초점
- [ ] 재방문 유도: 기존 고객의 재방문 촉진
- [ ] 매출 증대: 단기 매출 향상
- [ ] 인지도 향상: 브랜드 인지도 제고
[UI/UX 요구사항]
- [ ] 각 목적별 설명 툴팁 제공
- [ ] 목적별 예상 효과 미리보기
- [ ] 단일 선택만 가능 (라디오 버튼)
- M/3
---
UFR-PLAN-020: [AI업종트렌드분석] 소상공인으로서 | 나는, 성공률 높은 이벤트를 기획하기 위해 | AI가 내 업종과 지역의 트렌드를 분석해주기를 원한다.
- 시나리오: AI 기반 업종 및 지역 트렌드 분석
이벤트 목적 선택 후 | 시스템이 내 매장의 업종, 지역, 현재 시즌을 분석하면 | 업종별 성공 사례와 트렌드 리포트가 생성된다.
[분석 입력 데이터]
- [ ] 매장 업종 정보 (USER 서비스에서 조회)
- [ ] 매장 위치 정보 (지역, 상권)
- [ ] 현재 시즌 정보 (봄/여름/가을/겨울, 명절)
[트렌드 분석 처리]
- [ ] 트렌드 분석 시스템 API 호출
- [ ] 과거 동일 업종 성공 사례 데이터 분석
- [ ] 지역별 트렌드 반영 (유동인구, 연령대 등)
- [ ] 시즌 특성 고려 (계절 이벤트, 명절 등)
[분석 결과 제공]
- [ ] 트렌드 리포트 생성 (주요 트렌드 3-5가지)
- [ ] 추천 이벤트 방향 제시
- [ ] 예상 성공률 표시 (%로 표현)
- [ ] 분석 결과를 다음 단계(경품 추천)에 전달
- M/13
---
UFR-PLAN-030: [AI경품추천] 소상공인으로서 | 나는, 예산 내에서 최적의 경품을 선정하기 위해 | AI가 타겟 고객층에 맞는 경품을 추천해주기를 원한다.
- 시나리오: AI 기반 최적 경품 추천 및 수정
트렌드 분석 완료 후 | 예산, 타겟 고객층, 이벤트 목적을 입력하면 | Claude API가 예산 대비 매력도가 높은 경품 Top 5를 추천한다.
[입력 요구사항]
- [ ] 예산 입력 (최소 10,000원 ~ 최대 5,000,000원)
- [ ] 타겟 고객층 자동 설정 (업종 기반)
- [ ] 이벤트 목적 연동 (PLAN-010에서 선택한 목적)
[AI 경품 추천 처리]
- [ ] Claude API 연동
- [ ] 프롬프트: 예산, 타겟 고객층, 이벤트 목적, 업종 정보 포함
- [ ] 예산 대비 매력도 최대화 알고리즘 적용
- [ ] 타겟 고객 선호도 분석
- [ ] KT 멤버십 포인트 활용 옵션 포함
[추천 결과 제공]
- [ ] 경품 목록 Top 5 생성
- [ ] 각 경품별 예상 효과 표시 (참여율 예상)
- [ ] 예산 범위 내 경품 필터링
- [ ] 소상공인이 1개 선택 또는 수정 가능
[경품 수정 기능]
- [ ] 추천 경품 내용 수정 가능 (경품명, 수량, 가격)
- [ ] 직접 경품 입력 옵션 제공
- [ ] 수정된 내용 기반 예상 효과 재계산
- [ ] 예산 초과 시 경고 메시지 표시
[Policy]
- 예산 내 최적 경품 선정
- 타겟 고객 선호도 우선 고려
- 소상공인의 경품 수정 자유도 보장
- M/21
---
UFR-PLAN-040: [AI참여방법설계] 소상공인으로서 | 나는, 고객 참여를 높이기 위해 | AI가 간단하면서도 재방문을 유도하는 참여 방법을 설계해주기를 원한다.
- 시나리오: AI 기반 참여 방법 설계
경품 선택 완료 후 | 이벤트 목적, 매장 특성, 선택 경품을 기반으로 Claude API가 분석하면 | 3가지 참여 방법 옵션이 제시된다.
[설계 입력 데이터]
- [ ] 이벤트 목적 (PLAN-010)
- [ ] 매장 특성 (업종, 위치)
- [ ] 선택한 경품 정보 (PLAN-030)
[AI 참여 방법 설계]
- [ ] Claude API 연동
- [ ] 간단한 참여 방법 우선 설계
- [ ] 재방문 유도 요소 포함
- [ ] 바이럴 확산 장치 설계 (SNS 공유 등)
[참여 방법 옵션 제공]
- [ ] 3가지 옵션 생성
- 옵션 1: 가장 간단한 방법 (예: QR 코드 스캔)
- 옵션 2: 재방문 유도형 (예: 매장 방문 후 리뷰 작성)
- 옵션 3: 바이럴형 (예: SNS 공유 + 친구 태그)
- [ ] 각 옵션별 예상 참여율 표시
- [ ] 난이도 표시 (쉬움/보통/어려움)
- [ ] 소상공인이 1개 선택
[Policy]
- 참여 난이도와 재방문율의 균형 유지
- M/21
---
UFR-PLAN-050: [AI홍보문구생성] 소상공인으로서 | 나는, 매력적인 홍보를 위해 | AI가 이벤트 개요에 맞는 홍보 문구를 자동으로 생성해주기를 원한다.
- 시나리오: AI 기반 홍보 문구 자동 생성
참여 방법 선택 완료 후 | 이벤트 개요, 경품 정보, 참여 방법을 GPT-4 AI에 전달하면 | 5개 버전의 홍보 문구와 SNS 해시태그가 생성된다.
[생성 입력 데이터]
- [ ] 이벤트 개요 (목적, 기간)
- [ ] 경품 정보
- [ ] 참여 방법
- [ ] 매장 특성
[AI 홍보 문구 생성]
- [ ] GPT-4 API 연동
- [ ] 프롬프트: 이벤트 정보, 타겟 고객층, 매장 특성 포함
- [ ] 5개 버전의 홍보 문구 생성
- [ ] 각 버전별 톤앤매너 차별화 (친근함/공식적/트렌디 등)
[홍보 문구 결과]
- [ ] 문구 5개 버전 제공
- [ ] SNS 해시태그 자동 생성 (5-10개)
- [ ] 플랫폼별 최적화 문구 제공 (Instagram, Blog, Kakao)
- [ ] 미리보기 기능
- [ ] 소상공인이 1개 선택 또는 편집 가능
- M/13
---
UFR-PLAN-060: [이벤트기획안승인] 소상공인으로서 | 나는, 이벤트를 실행하기 위해 | 완성된 기획안을 검토하고 승인하고 싶다.
- 시나리오: 완성된 이벤트 기획안 검토 및 승인
모든 기획 단계 완료 후 | 완성된 기획안(목적, 경품, 참여방법, 홍보문구)을 확인하면 | 승인 버튼 클릭으로 기획안이 저장되고 콘텐츠 생성 단계로 이동한다.
[기획안 요약 제공]
- [ ] 이벤트 목적
- [ ] 선택한 경품
- [ ] 참여 방법
- [ ] 홍보 문구
- [ ] 예상 예산
- [ ] 예상 효과 (참여율, ROI)
[승인 처리]
- [ ] 승인 버튼 클릭 시 이벤트 기획안 DB 저장
- [ ] 이벤트 ID 생성
- [ ] 다음 단계(콘텐츠 생성) 안내
[수정 기능]
- [ ] 이전 단계로 돌아가기 버튼
- [ ] 각 항목별 수정 가능
[성능 기준]
- [ ] 전체 기획 과정 10초 이내 완료 (AI 처리 시간 포함)
- M/5
---
3. Content Generation 서비스
1) 콘텐츠 자동 생성
UFR-CONT-010: [AI이미지생성] 소상공인으로서 | 나는, 이벤트 홍보를 위해 | AI가 브랜드 컬러와 로고를 반영한 이미지 3종을 자동으로 생성해주기를 원한다.
- 시나리오: AI 기반 이미지 자동 생성
콘텐츠 생성 화면에서 | 이벤트 기획안 ID, 브랜드 컬러, 로고 이미지를 전달하면 | Stable Diffusion이 3가지 스타일의 이미지를 생성한다.
[입력 요구사항]
- [ ] 이벤트 제목 (기획안에서 자동 연동)
- [ ] 경품 이미지
- [ ] 브랜드 컬러 (HEX 코드 입력 또는 색상 선택기)
- [ ] 로고 이미지 업로드 (PNG, JPG, 최대 5MB)
[AI 이미지 생성]
- [ ] Stable Diffusion API 연동
- [ ] 브랜드 컬러 자동 적용
- [ ] 로고 자동 배치 (우측 상단 또는 중앙 하단)
- [ ] 3가지 스타일 생성
- 심플: 미니멀 디자인
- 화려: 풍성한 그래픽 요소
- 트렌디: 최신 디자인 트렌드 반영
[생성 결과]
- [ ] 이미지 3종 제공 (각각 1080x1080 해상도)
- [ ] 미리보기 기능
- [ ] 이미지 다운로드 가능
- [ ] 1개 선택하여 다음 단계 진행
[Policy]
- 브랜드 일관성 유지
- 저작권 준수 이미지만 사용
- M/34
---
UFR-CONT-020: [AI영상제작] 소상공인으로서 | 나는, SNS 홍보를 위해 | AI가 15초 분량의 영상을 자동으로 제작해주기를 원한다.
- 시나리오: AI 기반 15초 영상 자동 제작
이미지 선택 완료 후 | 배경 음악과 텍스트 오버레이를 선택하면 | AI 영상 제작 엔진이 15초 영상을 자동 제작한다.
[입력 요구사항]
- [ ] 선택한 이미지 (CONT-010)
- [ ] 배경 음악 선택 (로열티 프리 음악 리스트 제공)
- [ ] 텍스트 오버레이 입력 (홍보 문구 자동 연동, 편집 가능)
[AI 영상 제작]
- [ ] AI 영상 제작 엔진 API 연동
- [ ] 15초 분량 영상 생성
- [ ] 로열티 프리 배경 음악 적용
- [ ] 자동 자막 생성 (텍스트 오버레이 기반)
- [ ] 화면 전환 효과 자동 적용
- [ ] 브랜드 로고 워터마크 삽입
[영상 결과]
- [ ] 15초 영상 파일 생성 (MP4 형식)
- [ ] 자막 파일 생성 (SRT 형식)
- [ ] 미리보기 재생 기능
- [ ] 다운로드 가능
[Policy]
- 저작권 준수 음악만 사용
- M/34
---
UFR-CONT-030: [SNS콘텐츠생성] 소상공인으로서 | 나는, 다양한 SNS에 게시하기 위해 | 플랫폼별로 최적화된 콘텐츠를 자동으로 생성해주기를 원한다.
- 시나리오: SNS 플랫폼별 최적화 콘텐츠 생성
이미지와 영상 생성 완료 후 | Instagram, Naver Blog, Kakao Channel을 선택하면 | 각 SNS 플랫폼에 최적화된 해상도와 형식의 콘텐츠가 생성된다.
[SNS 플랫폼 선택]
- [ ] Instagram (필수)
- [ ] Naver Blog (선택)
- [ ] Kakao Channel (선택)
[플랫폼별 최적화]
- [ ] Instagram: 1080x1080 (정사각형)
- [ ] Naver Blog: 800x600 (가로형)
- [ ] Kakao Channel: 800x800 (정사각형)
[콘텐츠 생성]
- [ ] 선택한 이미지를 플랫폼별 해상도로 자동 조정
- [ ] 해시태그 자동 삽입 (기획안의 해시태그 활용)
- [ ] 플랫폼별 텍스트 최적화 (글자 수 제한 고려)
[생성 결과]
- [ ] 플랫폼별 최적화 이미지 파일
- [ ] 각 플랫폼용 게시 텍스트
- [ ] 미리보기 기능
- [ ] 일괄 다운로드 가능 (ZIP 파일)
[Policy]
- SNS 플랫폼별 최적 해상도 자동 조정
- M/21
---
UFR-CONT-040: [QR포스터생성] 소상공인으로서 | 나는, 오프라인 홍보를 위해 | QR 코드가 포함된 인쇄용 포스터를 생성하고 싶다.
- 시나리오: QR 코드 포스터 생성
콘텐츠 생성 단계에서 | QR 연결 URL과 포스터 크기를 입력하면 | QR 코드가 포함된 인쇄용 포스터 PDF가 생성된다.
[입력 요구사항]
- [ ] QR 연결 URL (이벤트 참여 페이지 URL)
- [ ] 포스터 크기 선택 (A4 또는 A3)
[QR 포스터 생성]
- [ ] QR 코드 생성 API 연동
- [ ] 선택한 이미지를 배경으로 사용
- [ ] QR 코드 배치 (하단 중앙)
- [ ] 이벤트 정보 텍스트 삽입 (제목, 기간, 경품)
- [ ] 인쇄 최적화 (300dpi 이상)
[생성 결과]
- [ ] A4 포스터 PDF
- [ ] A3 포스터 PDF (선택 시)
- [ ] QR 코드 단독 이미지 (PNG)
- [ ] 다운로드 가능
- M/8
---
UFR-CONT-050: [콘텐츠편집] 소상공인으로서 | 나는, 콘텐츠를 개인화하기 위해 | 생성된 콘텐츠를 수정하고 싶다.
- 시나리오: 생성된 콘텐츠 편집
전체 콘텐츠 미리보기 화면에서 | 수정이 필요한 콘텐츠를 선택하면 | 간단한 편집 도구로 수정할 수 있다.
[편집 가능 항목]
- [ ] 이미지: 텍스트 수정, 색상 조정
- [ ] 영상: 텍스트 오버레이 수정, 배경 음악 변경
- [ ] SNS 콘텐츠: 게시 텍스트 편집
- [ ] QR 포스터: 텍스트 수정, 레이아웃 조정
[편집 도구]
- [ ] 텍스트 편집기 (폰트, 크기, 색상 변경)
- [ ] 색상 선택기
- [ ] 레이아웃 템플릿 변경
- [ ] 미리보기 실시간 반영
[편집 완료]
- [ ] 저장 버튼으로 수정사항 적용
- [ ] 편집 이력 관리 (최대 3개 버전)
- [ ] 원본으로 되돌리기 가능
- S/13
---
UFR-CONT-060: [콘텐츠최종승인] 소상공인으로서 | 나는, 배포 전에 | 완성된 콘텐츠를 검토하고 승인하고 싶다.
- 시나리오: 완성된 콘텐츠 최종 승인
모든 콘텐츠 생성 완료 후 | 전체 콘텐츠 미리보기를 확인하면 | 승인 버튼으로 콘텐츠를 저장하고 배포 단계로 이동한다.
[콘텐츠 미리보기]
- [ ] 이미지 3종
- [ ] 15초 영상
- [ ] SNS 콘텐츠 (플랫폼별)
- [ ] QR 포스터
[승인 처리]
- [ ] 승인 버튼 클릭 시 콘텐츠 DB 저장
- [ ] 콘텐츠 ID 생성
- [ ] 다음 단계(배포) 안내
[성능 기준]
- [ ] 전체 콘텐츠 생성 3분 이내 완료
- M/3
---
4. Distribution 서비스
1) 다중 채널 배포
UFR-DIST-010: [다중채널배포설정] 소상공인으로서 | 나는, 이벤트를 효과적으로 홍보하기 위해 | 여러 채널에 한 번에 배포할 수 있기를 원한다.
- 시나리오: 배포 채널 선택 및 설정
배포 화면에서 | 원하는 배포 채널을 선택하고 배포 일시를 설정하면 | 선택한 채널 목록이 저장되고 각 채널별 배포가 시작된다.
[배포 채널 선택]
- [ ] 우리동네TV (선택)
- [ ] 링고비즈 연결음 (선택)
- [ ] 지니TV 광고 (선택)
- [ ] Instagram (필수)
- [ ] Naver Blog (선택)
- [ ] Kakao Channel (선택)
[배포 설정]
- [ ] 즉시 배포 또는 예약 배포 선택
- [ ] 예약 시 날짜 및 시간 선택
- [ ] 채널별 개별 설정 가능 (시간대, 예산 등)
[배포 시작]
- [ ] 선택한 채널 목록 저장
- [ ] 배포 요청 이벤트 발생
- [ ] 각 채널별 병렬 배포 시작
- M/13
---
UFR-DIST-020: [우리동네TV배포] 소상공인으로서 | 나는, 주변 지역 고객에게 도달하기 위해 | 우리동네TV에 반경과 시간대를 설정하여 배포하고 싶다.
- 시나리오: 우리동네TV 배포 설정 및 송출
배포 채널로 우리동네TV 선택 시 | 반경(500m/1km)과 송출 시간대를 설정하면 | 15초 영상이 해당 지역에 송출된다.
[배포 설정]
- [ ] 반경 선택 (500m 또는 1km)
- [ ] 송출 시간대 선택 (평일 저녁 6-9시, 주말 점심 12-2시 등)
- [ ] 15초 영상 파일 전달 (CONT-020)
[우리동네TV API 연동]
- [ ] 우리동네TV API 호출
- [ ] 매장 위치 기반 타겟 지역 설정
- [ ] 송출 시간대 예약
- [ ] 영상 파일 업로드
[배포 결과]
- [ ] 배포 ID 발급
- [ ] 예상 노출 수 제공
- [ ] 송출 스케줄 확인 가능
[Policy]
- 채널별 최적 송출 시간대 자동 선정
- M/21
---
UFR-DIST-030: [링고비즈연결음업데이트] 소상공인으로서 | 나는, 전화하는 고객에게도 홍보하기 위해 | 매장 전화번호의 연결음을 이벤트 내용으로 자동 업데이트하고 싶다.
- 시나리오: 링고비즈 연결음 업데이트
배포 채널로 링고비즈 선택 시 | 매장 전화번호와 연결음 파일을 전달하면 | 연결음이 자동으로 업데이트된다.
[연결음 생성]
- [ ] 홍보 문구 기반 연결음 스크립트 자동 생성
- [ ] 네이버 클로바(Clova) TTS 엔진을 이용한 음성 파일 생성
- [ ] 음성 톤 선택 가능 (친근한 톤, 공식적인 톤, 활기찬 톤 등)
- [ ] 또는 사전 녹음 파일 업로드 (MP3, WAV 형식)
[네이버 클로바 TTS 연동]
- [ ] 네이버 클로바 TTS API 연동
- [ ] 음성 합성 옵션 설정 (음색, 속도, 톤)
- [ ] 고품질 음성 파일 생성 (16kHz 이상)
- [ ] 생성된 음성 파일 미리듣기 기능
[링고비즈 API 연동]
- [ ] 링고비즈 API 호출
- [ ] 매장 전화번호 전달 (USER 서비스에서 조회)
- [ ] 연결음 파일 업로드
- [ ] 업데이트 요청
[업데이트 결과]
- [ ] 업데이트 완료 시각 확인
- [ ] 연결음 미리듣기 가능
- [ ] 롤백 기능 (이전 연결음으로 복구)
[Policy]
- 네이버 클로바 TTS 엔진 활용 필수
- 자연스러운 음성 품질 보장
- S/13
---
UFR-DIST-040: [지니TV광고배포] 소상공인으로서 | 나는, 가정의 TV를 통해 홍보하기 위해 | 지니TV에 예산과 타겟 지역을 설정하여 광고를 배포하고 싶다.
- 시나리오: 지니TV 광고 예약 및 송출
배포 채널로 지니TV 선택 시 | 타겟 지역, 노출 시간대, 예산을 설정하면 | 지니TV에 광고가 예약되고 노출된다.
[광고 설정]
- [ ] 타겟 지역 선택 (매장 주변 반경 1km, 3km, 5km)
- [ ] 노출 시간대 선택 (아침/점심/저녁/심야)
- [ ] 예산 입력 (최소 100,000원)
[지니TV API 연동]
- [ ] 지니TV 광고 플랫폼 API 호출
- [ ] 타겟 지역 설정
- [ ] 노출 시간대 및 빈도 설정
- [ ] 예산 기반 노출량 자동 계산
- [ ] 영상 파일 업로드 (15초 영상)
[광고 예약 결과]
- [ ] 광고 ID 발급
- [ ] 노출 스케줄 확인
- [ ] 예상 노출 횟수 및 도달 가구 수 제공
[Policy]
- 예산 기반 노출량 자동 조절
- 시간대별 차등 과금 적용
- M/21
---
UFR-DIST-050: [SNS자동포스팅] 소상공인으로서 | 나는, 온라인 고객에게 도달하기 위해 | Instagram, Naver Blog, Kakao Channel에 자동으로 포스팅하고 싶다.
- 시나리오: SNS 플랫폼 자동 포스팅
배포 채널로 SNS 선택 시 | 플랫폼별 계정 연동 후 예약 시간을 설정하면 | 각 SNS에 자동으로 포스팅된다.
[계정 연동]
- [ ] Instagram 계정 OAuth 연동
- [ ] Naver Blog 계정 OAuth 연동
- [ ] Kakao Channel 계정 OAuth 연동
- [ ] 연동 상태 확인
[포스팅 설정]
- [ ] 즉시 포스팅 또는 예약 포스팅
- [ ] 예약 시간 설정 (플랫폼별 개별 설정 가능)
- [ ] 게시물 미리보기
[SNS API 연동 (병렬 처리)]
- [ ] Instagram API 호출
- [ ] Naver Blog API 호출
- [ ] Kakao Channel API 호출
- [ ] 플랫폼별 최적화 콘텐츠 및 텍스트 전달
[포스팅 결과]
- [ ] 각 플랫폼별 포스팅 완료 확인
- [ ] 게시물 URL 제공
- [ ] 포스팅 실패 시 재시도 (최대 3회)
- M/13
---
UFR-DIST-060: [오프라인자료다운로드] 소상공인으로서 | 나는, 매장 내 홍보를 위해 | QR 포스터와 인쇄용 PDF를 다운로드하고 싶다.
- 시나리오: 오프라인 홍보 자료 다운로드
배포 완료 화면에서 | 오프라인 자료 다운로드 버튼을 클릭하면 | QR 포스터와 인쇄용 PDF가 다운로드된다.
[다운로드 자료]
- [ ] QR 코드 포스터 (A4 PDF)
- [ ] QR 코드 포스터 (A3 PDF)
- [ ] QR 코드 단독 이미지 (PNG)
- [ ] 인쇄용 이미지 (고해상도 300dpi 이상)
[다운로드 기능]
- [ ] 개별 파일 다운로드
- [ ] 전체 파일 일괄 다운로드 (ZIP)
- [ ] 다운로드 이력 관리
[성능 기준]
- [ ] 전체 배포 과정 1분 이내 완료
- S/5
---
5. Participation 서비스
1) 이벤트 참여 관리
UFR-PART-010: [이벤트참여신청] 고객으로서 | 나는, 경품을 받기 위해 | 간편하게 이벤트에 참여하고 싶다.
- 시나리오: 고객의 이벤트 참여 신청
고객이 이벤트를 발견한 상황에서 | 이름, 전화번호, 참여 경로를 입력하고 참여 버튼을 클릭하면 | 참여 정보가 접수되고 응모번호가 발급된다.
[이벤트 발견 경로]
- [ ] 우리동네TV
- [ ] 지니TV
- [ ] 링고 비즈 (연결음)
- [ ] SNS (Instagram, Blog, Kakao)
- [ ] QR 코드 스캔
[참여 정보 입력]
- [ ] 고객명 입력 (필수)
- [ ] 전화번호 입력 (필수, 010-XXXX-XXXX 형식)
- [ ] 참여 경로 자동 추적 또는 선택
- [ ] 개인정보 수집 동의 체크 (필수)
[참여 신청 처리]
- [ ] 입력 정보 검증 (형식 확인)
- [ ] 중복 참여 체크 (전화번호 기준)
- [ ] 참여 데이터 저장
[참여 완료]
- [ ] 응모번호 자동 발급
- [ ] 참여 완료 메시지 표시
- [ ] 당첨 발표일 안내
[Policy]
- 1인 1회 참여 제한
- 개인정보 보호 규정 준수
- M/8
---
UFR-PART-020: [중복참여방지] 시스템으로서 | 나는, 공정한 이벤트 운영을 위해 | 1인 1회 참여만 허용하고 싶다.
- 시나리오: 중복 참여 방지 및 차단
고객이 참여 신청 시 | 전화번호 기반으로 중복 여부를 확인하면 | 중복 참여는 차단하고 정상 참여만 접수한다.
[중복 체크 처리]
- [ ] 참여자 DB에서 전화번호 조회
- [ ] 동일 이벤트 ID에 대한 중복 여부 확인
- [ ] 매장 방문 고객 여부 확인 (가산점 부여용)
[중복 참여 차단]
- [ ] 중복 참여 시 "이미 참여하셨습니다" 메시지
- [ ] 이전 참여 일시 표시
- [ ] 재참여 불가 안내
[정상 참여 처리]
- [ ] 중복 없음 확인
- [ ] 참여 정보 DB 저장
- [ ] 참여 ID 생성
- [ ] 참여 일시 기록
- [ ] 참여 채널 기록
- [ ] 매장 방문 고객인 경우 가산점 부여 플래그
[Policy]
- 전화번호 기반 중복 체크
- 매장 방문 고객 가산점 부여
- 허위 정보 필터링
- M/8
---
UFR-PART-030: [자동당첨자추첨] 소상공인으로서 | 나는, 수동 관리 부담을 줄이기 위해 | 이벤트 종료 시 자동으로 당첨자가 추첨되기를 원한다.
- 시나리오: 이벤트 종료 후 자동 추첨
이벤트 종료 시각 도래 시 | 시스템이 자동으로 참여자 목록을 조회하면 | 공정한 알고리즘으로 당첨자를 추첨하고 명단을 생성한다.
[추첨 시작 트리거]
- [ ] 이벤트 종료 시각 자동 감지
- [ ] 스케줄러에 의한 자동 추첨 시작
- [ ] 또는 소상공인의 수동 추첨 요청
[당첨자 추첨 처리]
- [ ] 참여자 목록 조회 (이벤트 ID 기준)
- [ ] 중복 참여자 제외
- [ ] 매장 방문 고객 가산점 적용
- [ ] 난수 기반 무작위 추첨 알고리즘
- [ ] 당첨 인원만큼 추첨 (기획안에 정의된 인원)
[추첨 결과]
- [ ] 당첨자 목록 생성
- [ ] 추첨 과정 로그 기록 (감사 추적용)
- [ ] 당첨자 정보 DB 저장
- [ ] 소상공인에게 당첨자 명단 제공
[Policy]
- 공정한 추첨 알고리즘 적용
- 추첨 과정 로그 기록
- 매장 방문 고객 가산점
- M/13
---
UFR-PART-040: [당첨알림발송] 고객으로서 | 나는, 당첨 여부를 빠르게 확인하기 위해 | SMS나 카카오 알림톡으로 당첨 알림을 받고 싶다.
- 시나리오: 당첨자에게 당첨 알림 발송
당첨자 추첨 완료 후 | 시스템이 당첨자 목록과 경품 정보를 전달하면 | SMS 또는 카카오 알림톡이 자동 발송된다.
[알림 발송 준비]
- [ ] 당첨자 목록 조회
- [ ] 경품 정보 조회
- [ ] 매장 정보 조회 (수령 장소 안내용)
[SMS/알림톡 발송]
- [ ] SMS/카카오 알림톡 시스템 API 연동
- [ ] 당첨 축하 메시지 생성
- [ ] 경품 정보 포함
- [ ] 경품 수령 방법 안내
- [ ] 수령 기한 안내 (예: 발표일로부터 7일 이내)
- [ ] 매장 연락처 포함
[발송 결과]
- [ ] 발송 성공/실패 확인
- [ ] 발송 이력 저장
- [ ] 실패 시 재발송 시도 (최대 3회)
[미당첨자 처리]
- [ ] 미당첨자에게는 별도 알림 미발송
- [ ] 또는 참여 감사 메시지 발송 (옵션)
- M/8
---
UFR-PART-050: [당첨자명단관리] 소상공인으로서 | 나는, 경품을 지급하기 위해 | 당첨자 명단을 확인하고 관리하고 싶다.
- 시나리오: 당첨자 명단 조회 및 관리
당첨자 추첨 완료 후 | 소상공인이 당첨자 관리 화면에 접근하면 | 당첨자 명단과 경품 지급 상태를 확인하고 업데이트할 수 있다.
[당첨자 명단 조회]
- [ ] 이벤트별 당첨자 목록 표시
- [ ] 당첨자 정보: 이름, 전화번호, 응모번호, 참여일시
- [ ] 경품 정보 표시
- [ ] 경품 지급 상태 (미지급/지급완료)
[경품 지급 관리]
- [ ] 경품 지급 상태 업데이트 (체크박스)
- [ ] 지급 일시 자동 기록
- [ ] 지급 완료 시 당첨자에게 확인 문자 발송 (옵션)
[데이터 다운로드]
- [ ] 당첨자 명단 엑셀 다운로드
- [ ] 참여자 전체 명단 다운로드 (분석용)
- M/5
---
6. Analytics 서비스
1) 효과 측정 및 분석
UFR-ANAL-010: [실시간대시보드조회] 소상공인으로서 | 나는, 이벤트 성과를 즉시 파악하기 위해 | 실시간으로 참여자 수, 노출 수, 매출 증가율을 확인하고 싶다.
- 시나리오: 실시간 효과 측정 대시보드 조회
이벤트 배포 완료 후 | 효과 측정 대시보드에 접근하면 | 5분 간격으로 업데이트되는 실시간 데이터를 확인할 수 있다.
[대시보드 주요 지표]
- [ ] 총 참여자 수 (실시간)
- [ ] 채널별 노출 수
- 우리동네TV 노출 수
- 지니TV 노출 수
- SNS 조회/공유 수
- [ ] 매장 방문자 증가율 (이벤트 전후 비교)
- [ ] 매출 증가율 (이벤트 기간 vs 평균)
- [ ] 예상 ROI
[실시간 데이터 수집]
- [ ] 5분 간격 자동 업데이트
- [ ] KT 채널 데이터 수집 API 연동 (우리동네TV, 지니TV)
- [ ] POS 시스템 연동 (매장 방문, 매출 데이터)
- [ ] 구글 애널리틱스 연동 (웹/앱 유입)
[대시보드 UI]
- [ ] 그래프 시각화 (시간대별 추이)
- [ ] 숫자 대형 표시 (핵심 지표)
- [ ] 새로고침 버튼
- [ ] 자동 새로고침 옵션
[Policy]
- 실시간 데이터 수집 및 업데이트 (5분 간격)
- M/21
---
UFR-ANAL-020: [채널별성과분석] 소상공인으로서 | 나는, 효과적인 채널을 파악하기 위해 | 우리동네TV, 지니TV, SNS 등 채널별 노출 수와 참여율을 비교하고 싶다.
- 시나리오: 채널별 성과 비교 분석
효과 측정 대시보드에서 | 채널별 분석 탭을 선택하면 | 각 채널의 노출 수, 참여율, 전환율이 비교되어 표시된다.
[채널별 데이터 수집]
- [ ] 우리동네TV: 노출 수, 도달률
- [ ] 지니TV: 노출 수, 도달 가구 수
- [ ] Instagram: 조회 수, 좋아요, 공유 수
- [ ] Naver Blog: 방문자 수, 체류 시간
- [ ] Kakao Channel: 조회 수, 클릭 수
- [ ] QR 코드: 스캔 횟수
[성과 지표 계산]
- [ ] 노출 수 (Impression)
- [ ] 참여율 (Participation Rate = 참여 수 / 노출 수)
- [ ] 전환율 (Conversion Rate = 매장 방문 / 참여 수)
- [ ] 채널별 비용 대비 효과 (Cost per Acquisition)
[비교 분석 시각화]
- [ ] 채널별 막대 그래프
- [ ] 파이 차트 (참여 비율)
- [ ] 효율성 순위표
- [ ] 가장 효과적인 채널 강조 표시
- M/13
---
UFR-ANAL-030: [ROI자동계산] 소상공인으로서 | 나는, 투자 대비 효과를 명확히 알기 위해 | 총비용 대비 수익(ROI)이 자동으로 계산되기를 원한다.
- 시나리오: ROI 자동 계산 및 분석
이벤트 진행 중 또는 종료 후 | 효과 측정 대시보드에서 | 투자 비용 대비 수익이 자동으로 계산되어 표시된다.
[비용 데이터 수집]
- [ ] 경품 비용 (기획안에서 자동 조회)
- [ ] 플랫폼 이용 비용
- 우리동네TV 광고비
- 지니TV 광고비
- SNS 광고비 (있는 경우)
- [ ] 총 투자 비용 계산
[수익 데이터 수집]
- [ ] 매출 증가액 (이벤트 기간 매출 - 평균 매출)
- [ ] 신규 고객 수 × 예상 LTV (Lifetime Value)
- [ ] 총 수익 계산
[ROI 계산]
- [ ] ROI = (수익 - 비용) / 비용 × 100
- [ ] 손익분기점 계산
- [ ] 회수 기간 예상
[결과 표시]
- [ ] ROI 퍼센트 대형 표시
- [ ] 손익 분기 달성 여부
- [ ] 비용/수익 상세 내역
- [ ] 그래프 시각화
[Policy]
- 이벤트 전후 비교 분석 자동화
- M/13
---
UFR-ANAL-040: [분석리포트생성] 소상공인으로서 | 나는, 이벤트 결과를 정리하기 위해 | 종합 분석 리포트를 PDF로 다운로드하고 싶다.
- 시나리오: 종합 분석 리포트 생성 및 다운로드
이벤트 종료 후 | 리포트 생성 버튼을 클릭하면 | 전체 성과를 요약한 PDF 리포트가 생성되어 다운로드된다.
[리포트 포함 내용]
- [ ] 이벤트 개요 (목적, 기간, 경품)
- [ ] 참여 통계 (총 참여자 수, 채널별 참여 분포)
- [ ] 노출 통계 (채널별 노출 수, 도달률)
- [ ] 매출 분석 (매출 증가율, 객단가 변화)
- [ ] ROI 분석 (투자 대비 수익)
- [ ] 채널별 성과 비교
- [ ] 업종 평균 대비 벤치마킹
- [ ] 그래프 및 차트 시각화
[리포트 생성]
- [ ] 데이터 수집 및 집계
- [ ] 구글 애널리틱스 데이터 통합
- [ ] 그래프 이미지 생성
- [ ] PDF 레이아웃 생성
- [ ] PDF 파일 생성
[다운로드]
- [ ] PDF 다운로드 링크 제공
- [ ] 파일명: "이벤트명_분석리포트_YYYYMMDD.pdf"
- [ ] 이메일 발송 옵션
[Policy]
- 업종별 평균 대비 성과 벤치마킹
- S/8
---
7. AI Learning 서비스
1) AI 학습 및 개선
UFR-AIMPR-010: [AI개선안생성] 소상공인으로서 | 나는, 더 나은 이벤트를 운영하기 위해 | AI가 분석 결과를 바탕으로 구체적인 개선안을 제안해주기를 원한다.
- 시나리오: AI 기반 이벤트 개선안 생성
이벤트 종료 후 | 시스템이 결과 데이터를 자동 분석하면 | AI가 성공 요인과 실패 요인을 파악하여 3가지 개선안을 제시한다.
[결과 데이터 분석]
- [ ] 빅데이터 분석 시스템 API 호출
- [ ] 참여율 vs 목표 비교
- [ ] ROI vs 업종 평균 비교
- [ ] 채널별 효율성 분석
- [ ] 시간대별 참여 패턴 분석
- [ ] 경품 매력도 평가
[성공/실패 요인 도출]
- [ ] 성공 요인 식별 (목표 달성 항목)
- [ ] 실패 요인 식별 (목표 미달 항목)
- [ ] 개선 포인트 도출
[AI 개선안 생성]
- [ ] AI 머신러닝 엔진 API 호출
- [ ] 성공 패턴 학습 및 재활용
- [ ] 실패 패턴 회피 로직 적용
- [ ] 최적화 알고리즘 적용
- [ ] 3가지 개선안 생성
- 개선안 1: 경품 변경 (더 매력적인 경품)
- 개선안 2: 참여 방법 단순화 (참여율 향상)
- 개선안 3: 배포 채널 조정 (효율적 채널 집중)
[개선안 제시]
- [ ] 각 개선안별 우선순위 표시
- [ ] 예상 효과 제공 (참여율 증가 예상치 등)
- [ ] 소상공인이 개선안 선택 또는 피드백 제공
[Policy]
- 성공 패턴 자동 학습 및 재활용
- 실패 요인 회피 로직 적용
- M/21
---
UFR-AIMPR-020: [다음이벤트아이디어제안] 소상공인으로서 | 나는, 계절과 트렌드에 맞는 이벤트를 기획하기 위해 | AI가 시즌별 성공 이벤트 아이디어를 제안해주기를 원한다.
- 시나리오: AI 기반 다음 이벤트 아이디어 제안
이벤트 종료 및 개선안 검토 후 | 다음 이벤트 아이디어 요청 버튼을 클릭하면 | AI가 시즌, 학습 결과, 트렌드를 반영한 이벤트 아이디어 5가지를 제안한다.
[입력 데이터]
- [ ] 현재 시즌 (봄/여름/가을/겨울, 명절)
- [ ] 이벤트 목표 (신규고객/재방문/매출증대/인지도향상)
- [ ] 이전 이벤트 학습 결과
[트렌드 데이터베이스 조회]
- [ ] 트렌드 DB API 호출
- [ ] 계절별 성공 이벤트 조회
- [ ] 지역 특성 반영
- [ ] 트렌드 예측 적용 (최근 인기 이벤트 유형)
[이벤트 아이디어 생성]
- [ ] 추천 이벤트 5가지 생성
- [ ] 각 아이디어별 상세 설명
- [ ] 예상 성과 제공 (참여율, ROI 예상)
- [ ] 적합한 시기 제안
[아이디어 제시]
- [ ] 아이디어 목록 표시
- [ ] 각 아이디어 선택 시 상세 설명 확장
- [ ] "이 아이디어로 기획 시작" 버튼
- [ ] 선택 시 이벤트 기획 화면(PLAN-010)으로 이동
[Policy]
- 업종별/지역별 데이터 축적 및 활용
- S/13
---
UFR-AIMPR-030: [성공패턴학습] AI시스템으로서 | 나는, 추천 정확도를 높이기 위해 | 이벤트 결과 데이터를 학습하여 성공 패턴을 축적하고 싶다.
- 시나리오: AI 학습 데이터 자동 업데이트
이벤트 종료 및 분석 완료 후 | 시스템이 자동으로 학습 데이터를 저장하면 | AI 모델이 성공 패턴을 학습하여 다음 추천 정확도가 향상된다.
[학습 데이터 수집]
- [ ] 이벤트 결과 데이터 (참여율, ROI, 채널 효율성 등)
- [ ] 성공 패턴 (목표 달성 항목)
- [ ] 실패 패턴 (목표 미달 항목)
- [ ] 업종, 지역, 시즌 정보
[학습 데이터 저장]
- [ ] 학습 데이터 DB에 저장
- [ ] 성공 사례 태깅
- [ ] 실패 사례 태깅
- [ ] 메타데이터 저장 (업종, 지역, 시즌)
[AI 모델 학습]
- [ ] 이벤트 결과 누적 데이터 기반 학습
- [ ] 성공률 향상 학습
- [ ] 경품 추천 알고리즘 개선
- [ ] 참여 방법 설계 알고리즘 개선
- [ ] 채널 효율성 예측 모델 업데이트
- [ ] 개인화 추천 강화
[학습 결과 적용]
- [ ] 다음 이벤트 기획 시 학습된 패턴 적용
- [ ] 추천 정확도 모니터링
- [ ] 지속적인 성능 개선
[Policy]
- 지속적 성능 개선 알고리즘
- 개인화 추천 강화
- M/34
---
8. 비기능 요구사항
1) 성능
NFR-PERF-010: [AI기획속도] 시스템으로서 | 나는, 사용자 대기 시간을 최소화하기 위해 | AI 이벤트 기획을 10초 이내에 완료하고 싶다.
- 시나리오: AI 이벤트 기획 성능 보장
소상공인이 이벤트 기획 시작 후 | 모든 AI 분석 및 추천 단계를 거쳐 | 10초 이내에 완성된 기획안이 제시된다.
[성능 요구사항]
- [ ] 업종 트렌드 분석: 3초 이내
- [ ] 경품 추천: 3초 이내
- [ ] 참여 방법 설계: 2초 이내
- [ ] 홍보 문구 생성: 2초 이내
- [ ] 총 처리 시간: 10초 이내
[최적화 방안]
- [ ] AI API 병렬 호출
- [ ] 응답 캐싱 (동일 조건 재사용)
- [ ] 프롬프트 최적화
- [ ] 네트워크 지연 최소화
- M/21
---
NFR-PERF-020: [콘텐츠생성속도] 시스템으로서 | 나는, 효율적인 서비스를 제공하기 위해 | 이미지와 영상 콘텐츠 생성을 현실적인 시간 내에 완료하고 싶다.
- 시나리오: 콘텐츠 생성 성능 보장
소상공인이 콘텐츠 생성 시작 후 | 이미지 3종, 영상 1개, SNS 콘텐츠, QR 포스터까지 | 현실적인 처리 시간 내에 모든 콘텐츠가 생성된다.
[성능 요구사항]
- [ ] 이미지 생성 (3종): 2-3분 이내 (AI 이미지 생성 특성 고려)
- [ ] 영상 제작 (15초): 3-5분 이내 (AI 영상 제작 특성 고려)
- [ ] SNS 콘텐츠 생성: 30초 이내
- [ ] QR 포스터 생성: 20초 이내
- [ ] 총 처리 시간: 5-8분 이내 (단계별 병렬 처리 시)
[최적화 방안]
- [ ] 이미지와 영상 병렬 생성
- [ ] GPU 가속 활용
- [ ] 콘텐츠 캐싱
- [ ] 진행 상황 실시간 표시 (사용자 경험 개선)
- [ ] 백그라운드 처리로 다른 작업 가능
[Policy]
- AI 생성 모델의 현실적인 처리 시간 반영
- 품질과 속도의 균형 유지
- 사용자에게 명확한 진행 상황 피드백 제공
- M/34
---
NFR-PERF-030: [배포속도] 시스템으로서 | 나는, 신속한 배포를 위해 | 다중 채널 배포를 1분 이내에 완료하고 싶다.
- 시나리오: 배포 성능 보장
소상공인이 배포 시작 버튼 클릭 후 | 모든 선택 채널에 콘텐츠가 배포되기까지 | 1분 이내에 완료된다.
[성능 요구사항]
- [ ] 우리동네TV: 15초
- [ ] 링고비즈: 10초
- [ ] 지니TV: 20초
- [ ] SNS (3개 플랫폼 병렬): 20초
- [ ] 총 처리 시간: 1분 이내
[최적화 방안]
- [ ] 채널별 병렬 배포
- [ ] 비동기 API 호출
- [ ] 배포 상태 실시간 업데이트
- M/21
---
NFR-PERF-040: [실시간데이터수집] 시스템으로서 | 나는, 정확한 효과 측정을 위해 | 5분 간격으로 실시간 데이터를 수집하고 업데이트하고 싶다.
- 시나리오: 실시간 데이터 수집 주기 보장
이벤트 배포 후 | 효과 측정 대시보드가 | 5분 간격으로 자동 업데이트된다.
[데이터 수집 주기]
- [ ] 5분마다 자동 데이터 수집
- [ ] 스케줄러 기반 자동 실행
- [ ] 실패 시 재시도 (3회)
[데이터 소스]
- [ ] KT 채널 API (우리동네TV, 지니TV)
- [ ] POS 시스템
- [ ] 구글 애널리틱스
- [ ] 참여자 DB
- M/13
---
2) 보안
NFR-SECU-010: [개인정보보호] 시스템으로서 | 나는, 고객 신뢰를 확보하기 위해 | 개인정보 보호 규정을 준수하고 암호화를 적용하고 싶다.
- 시나리오: 개인정보 보호 및 암호화
고객의 개인정보(이름, 전화번호)가 수집될 때 | 암호화되어 저장되고 | GDPR, 개인정보보호법을 준수한다.
[개인정보 암호화]
- [ ] 전화번호 암호화 (AES-256)
- [ ] 이름 암호화 (필요 시)
- [ ] 전송 시 HTTPS/TLS 적용
[개인정보 보호 규정 준수]
- [ ] 개인정보 수집 동의 획득 (필수)
- [ ] 수집 목적 명시
- [ ] 보유 기간 설정 (이벤트 종료 후 3개월)
- [ ] 파기 절차 자동화
[접근 제어]
- [ ] 역할 기반 접근 제어 (RBAC)
- [ ] 소상공인은 자신의 이벤트 데이터만 접근
- [ ] 관리자 감사 로그 기록
- M/13
---
3) 안정성
NFR-RELI-010: [배포실패자동재시도] 시스템으로서 | 나는, 서비스 안정성을 위해 | 배포 실패 시 자동으로 3회까지 재시도하고 싶다.
- 시나리오: 배포 실패 시 자동 재시도
채널 배포 중 API 오류로 실패 시 | 시스템이 자동으로 재시도하여 | 최대 3회까지 재시도 후 성공 또는 최종 실패 처리한다.
[재시도 로직]
- [ ] 배포 실패 감지
- [ ] 1차 재시도 (5초 후)
- [ ] 2차 재시도 (10초 후)
- [ ] 3차 재시도 (20초 후)
- [ ] 3회 실패 시 최종 실패 처리
[실패 알림]
- [ ] 소상공인에게 실패 알림
- [ ] 실패 사유 제공
- [ ] 수동 재시도 옵션 제공
- M/8
---
4) 확장성
NFR-SCAL-010: [동시이벤트처리] 시스템으로서 | 나는, 다수의 소상공인을 지원하기 위해 | 최소 100개의 이벤트를 동시에 처리할 수 있어야 한다.
- 시나리오: 동시 다발적 이벤트 처리
100명의 소상공인이 동시에 이벤트를 기획/배포하는 상황에서 | 시스템이 정상적으로 모든 요청을 처리한다.
[확장성 요구사항]
- [ ] 동시 이벤트 처리: 최소 100개
- [ ] AI API 동시 호출: 최소 50개
- [ ] 배포 API 동시 호출: 최소 100개
[확장 전략]
- [ ] 마이크로서비스 수평 확장 (Auto Scaling)
- [ ] 로드 밸런싱
- [ ] 메시지 큐 활용 (비동기 처리)
- [ ] 캐싱 전략 (Redis)
- S/21
```
---
## 기술 검토 결과
**[마이크로서비스별 검토]**
1) **User 서비스**
모든 유저스토리 ✅ 실현 가능
- 표준적인 인증/인가 패턴
- KT 인증 시스템, 사업자번호 검증 시스템 연동
- JWT 토큰, 세션 관리
2) **Event Planning 서비스**
대부분 ✅ 실현 가능, AI 응답 시간 주의 필요
**주요 검토 사항:**
- UFR-PLAN-020~050: ⚠️ AI API 응답 시간 관리 필요
- Claude API, GPT-4 API 병렬 호출
- 응답 캐싱으로 속도 개선
- 10초 목표 달성을 위한 프롬프트 최적화
3) **Content Generation 서비스**
⚠️ 높은 기술적 복잡도
**주요 검토 사항:**
- UFR-CONT-010: Stable Diffusion API 연동 (이미지 생성 90초)
- UFR-CONT-020: AI 영상 제작 엔진 연동 (영상 제작 90초)
- 3분 목표 달성을 위한 병렬 처리 필수
4) **Distribution 서비스**
대부분 ✅ 실현 가능
**주요 검토 사항:**
- 다중 외부 API 연동 (우리동네TV, 링고비즈, 지니TV, SNS)
- 병렬 배포로 1분 목표 달성
- 배포 실패 시 자동 재시도 (최대 3회)
5) **Participation 서비스**
모든 유저스토리 ✅ 실현 가능
- 표준적인 참여 관리 패턴
- 중복 방지, 추첨 알고리즘, SMS/알림톡 발송
6) **Analytics 서비스**
대부분 ✅ 실현 가능
**주요 검토 사항:**
- 다중 데이터 소스 통합 (KT API, POS, 구글 애널리틱스)
- 실시간 데이터 수집 (5분 간격)
- ROI 자동 계산 로직
7) **AI Learning 서비스**
⚠️ 가장 높은 기술적 복잡도
**주요 검토 사항:**
- AI 머신러닝 엔진 연동
- 빅데이터 분석 시스템 구축
- 성공/실패 패턴 학습 알고리즘
- 지속적인 모델 개선
**[주요 기술 스택 권장사항]**
**백엔드:**
- Node.js/Spring Boot (마이크로서비스)
- Redis (캐싱, 세션)
- PostgreSQL/MongoDB
- RabbitMQ/Kafka (비동기 처리)
**프론트엔드:**
- React/Next.js
- TypeScript
- Zustand/Redux (상태관리)
**AI/ML:**
- Claude API (경품 추천, 참여 방법 설계)
- GPT-4 API (홍보 문구 생성)
- Stable Diffusion (이미지 생성)
- AI 영상 제작 엔진
**외부 연동:**
- KT 인증 시스템
- 사업자번호 검증 시스템
- 우리동네TV, 링고비즈, 지니TV API
- Instagram, Naver, Kakao API
- POS 시스템
- 구글 애널리틱스
**인프라:**
- Docker/Kubernetes
- API Gateway
- Circuit Breaker
- 로드 밸런서
- Auto Scaling
**[주요 기술적 리스크 및 해결방안]**
**1. AI 응답 시간 (10초 제약)**
- 리스크: AI API 응답이 10초를 초과할 수 있음
- 해결방안:
- 프롬프트 최적화로 응답 시간 단축
- 병렬 API 호출
- 응답 캐싱 적극 활용
**2. 콘텐츠 생성 시간 (3분 제약)**
- 리스크: 이미지와 영상 생성이 3분을 초과할 수 있음
- 해결방안:
- 이미지와 영상 병렬 생성
- GPU 가속 활용
- 콘텐츠 템플릿 캐싱
**3. 다중 외부 API 의존성**
- 리스크: API 장애 시 서비스 중단
- 해결방안:
- 각 API별 폴백 전략 수립
- 캐싱 적극 활용
- 써킷 브레이커 패턴 적용
- 배포 실패 시 자동 재시도 (3회)
**4. 실시간 데이터 수집**
- 리스크: 다중 데이터 소스 통합 복잡도
- 해결방안:
- 스케줄러 기반 자동 수집 (5분 간격)
- 데이터 파이프라인 구축
- 실패 시 재시도 로직