edit userstory

This commit is contained in:
cherry2250 2025-10-20 17:21:31 +09:00
parent 2aa09d9475
commit 5cb6f302f4

View File

@ -17,41 +17,99 @@
``` ```
1. User 서비스 1. User 서비스
1) 사용자 인증 및 관리 1) 사용자 인증 및 관리
UFR-USER-010: [회원가입] 소상공인으로서 | 나는, 이벤트 자동 생성 서비스를 사용하기 위해 | 간편하게 회원가입하고 싶다. UFR-USER-001: [로그인] 소상공인으로서 | 나는, 서비스를 이용하기 위해 | 등록된 계정으로 로그인하고 싶다.
- 시나리오: 기본 정보 입력 및 KT 본인 인증 (선택) - 시나리오: 로그인 인증
미가입 상태에서 | 이름, 전화번호, 이메일을 입력하고 회원가입을 하면 | 회원가입이 완료되고 매장 정보 등록 화면으로 이동한다. 앱 실행 또는 웹 접속 시 | 이메일과 비밀번호를 입력하고 로그인하면 | 인증이 완료되고 홈 화면으로 이동한다.
[입력 요구사항] [입력 요구사항]
- [ ] 이름 2자 이상 입력 가능 (필수) - [ ] 이메일 입력 (필수)
- [ ] 전화번호 형식 검증 (010-XXXX-XXXX) (필수) - [ ] 비밀번호 입력 (필수)
- [ ] 이메일 형식 검증 (example@domain.com) (필수) - [ ] 자동 로그인 체크박스 (선택)
- [ ] KT 본인 인증 (선택) - 인증 시 추가 혜택 제공
[인증 처리] [인증 처리]
- [ ] KT 인증 시스템 연동 확인 (선택 사항) - [ ] 이메일과 비밀번호 검증
- [ ] 본인 인증 요청 시 전화번호로 인증 문자 발송 - [ ] JWT 토큰 발급
- [ ] 인증 완료 시 인증 토큰 저장 및 인증 고객 플래그 설정 - [ ] 세션 생성
- [ ] KT 인증 고객에게 추가 서비스 혜택 제공 - [ ] 로그인 상태 유지 (자동 로그인 선택 시)
- [ ] 중복 가입 방지 (전화번호 기준)
[처리 결과] [처리 결과]
- [ ] 성공: "회원가입이 완료되었습니다" 메시지 → 매장 정보 등록 화면 - [ ] 성공: 홈 화면(UFR-USER-002)으로 이동
- [ ] KT 인증 고객: 추가 혜택 안내 (무료 체험 횟수 증가 등) - [ ] 실패: 오류 메시지 표시
- [ ] 실패: 구체적인 오류 메시지 표시 - "이메일 또는 비밀번호가 일치하지 않습니다"
- "존재하지 않는 계정입니다"
[추가 기능]
- [ ] 비밀번호 찾기 링크
- [ ] 회원가입 화면으로 이동 링크
- M/5
---
UFR-USER-002: [홈화면] 소상공인으로서 | 나는, 로그인 후 | 내 이벤트 현황을 한눈에 보고 새 이벤트를 시작하고 싶다.
- 시나리오: 홈 화면 조회
로그인 완료 후 | 홈 화면에 접속하면 | 진행 중인 이벤트 요약, 최근 성과, 새 이벤트 생성 버튼이 표시된다.
[홈 화면 구성 요소]
- [ ] 환영 메시지 (매장명 표시)
- [ ] 대시보드 요약
- 진행 중인 이벤트 수
- 총 참여자 수 (이번 달)
- 총 광고 수익률 (이번 달)
- [ ] 진행 중인 이벤트 목록 (최대 3개 표시)
- 이벤트명
- 남은 기간
- 현재 참여자 수
- "상세 보기" 버튼
- [ ] 빠른 액션 버튼
- "새 이벤트 생성" (PLAN-010으로 이동)
- "모든 이벤트 보기"
- "성과 분석 보기"
[처리]
- [ ] 사용자 정보 조회 (매장명)
- [ ] 진행 중인 이벤트 목록 조회
- [ ] 이벤트 통계 집계 (이번 달 기준)
[네비게이션]
- [ ] 새 이벤트 생성 버튼 → UFR-PLAN-010
- [ ] 이벤트 상세 보기 → 해당 이벤트 대시보드
- [ ] 성과 분석 보기 → UFR-ANAL-010
- M/8 - M/8
--- ---
UFR-USER-010: [회원가입] 소상공인으로서 | 나는, 이벤트 자동 생성 서비스를 사용하기 위해 | 간편하게 회원가입하고 싶다.
- 시나리오: 기본 정보 입력
미가입 상태에서 | 이름, 전화번호, 이메일, 비밀번호를 입력하고 회원가입을 하면 | 회원가입이 완료되고 매장 정보 등록 화면으로 이동한다.
[입력 요구사항]
- [ ] 이름 2자 이상 입력 가능 (필수)
- [ ] 전화번호 형식 검증 (010-XXXX-XXXX) (필수)
- [ ] 이메일 형식 검증 (example@domain.com) (필수)
- [ ] 비밀번호 입력 (필수)
- 최소 8자 이상
- 영문, 숫자, 특수문자 조합
- [ ] 비밀번호 확인 (필수, 비밀번호와 일치 검증)
- [ ] 중복 가입 방지 (이메일과 전화번호 기준)
[처리 결과]
- [ ] 성공: "회원가입이 완료되었습니다" 메시지 → 매장 정보 등록 화면
- [ ] 실패: 구체적인 오류 메시지 표시
- M/5
---
UFR-USER-020: [매장정보등록] 소상공인으로서 | 나는, 맞춤형 이벤트를 생성하기 위해 | 내 매장 정보를 등록하고 싶다. UFR-USER-020: [매장정보등록] 소상공인으로서 | 나는, 맞춤형 이벤트를 생성하기 위해 | 내 매장 정보를 등록하고 싶다.
- 시나리오: 매장 정보 입력 및 사업자번호 검증 - 시나리오: 매장 정보 입력 및 사업자번호 검증
회원가입 완료 후 | 매장명, 업종, 주소, 영업시간, 사업자번호, 메뉴 정보를 입력하면 | 사업자번호 검증 후 매장 정보가 저장되고 무료 체험 쿠폰이 발급된다. 회원가입 완료 후 | 매장명, 업종, 주소, 사업자번호, 메뉴 정보를 입력하면 | 사업자번호 검증 후 매장 정보가 저장되고 무료 체험 쿠폰이 발급된다.
[입력 요구사항] [입력 요구사항]
- [ ] 매장명 입력 (최대 50자) - [ ] 매장명 입력 (최대 50자)
- [ ] 업종 선택 (카테고리 리스트 제공: 음식점, 카페, 소매업 등) - [ ] 업종 선택 (카테고리 리스트 제공: 음식점, 카페, 소매업 등)
- [ ] 주소 입력 (도로명 주소 API 연동) - [ ] 주소 입력 (도로명 주소 API 연동)
- [ ] 영업시간 설정 (요일별 시작/종료 시간 입력)
- [ ] 메뉴/상품 정보 입력 (선택, 최대 10개) - [ ] 메뉴/상품 정보 입력 (선택, 최대 10개)
- 메뉴명/상품명 (최대 30자) - 메뉴명/상품명 (최대 30자)
- 가격 정보 - 가격 정보
@ -61,21 +119,15 @@ UFR-USER-020: [매장정보등록] 소상공인으로서 | 나는, 맞춤형 이
[사업자번호 검증] [사업자번호 검증]
- [ ] 사업자번호 형식 검증 (XXX-XX-XXXXX) - [ ] 사업자번호 형식 검증 (XXX-XX-XXXXX)
- [ ] 국세청 사업자번호 검증 시스템 API 연동
- [ ] 사업자번호 유효성 확인 - [ ] 사업자번호 유효성 확인
- [ ] 휴폐업 여부 확인 - [ ] 휴폐업 여부 확인
- [ ] 매장명과 사업자 정보 일치 확인 - [ ] 매장명과 사업자 정보 일치 확인
[처리 결과] [처리 결과]
- [ ] 검증 성공 시 매장 정보 DB 저장 - [ ] 검증 성공 시 매장 정보 DB 저장
- [ ] 첫 1회 무료 체험 쿠폰 자동 발급
- [ ] 검증 실패 시 명확한 오류 메시지 제공 (유효하지 않은 번호, 휴폐업 등) - [ ] 검증 실패 시 명확한 오류 메시지 제공 (유효하지 않은 번호, 휴폐업 등)
- [ ] 재입력 가능하도록 UI 유지 - [ ] 재입력 가능하도록 UI 유지
[무료 체험 혜택]
- [ ] 첫 1회 이벤트 무료 쿠폰 발급
- [ ] 쿠폰 유효기간 설정 (발급일로부터 30일)
- M/13 - M/13
--- ---
@ -127,20 +179,23 @@ UFR-PLAN-020: [AI업종트렌드분석] 소상공인으로서 | 나는, 성공
--- ---
UFR-PLAN-030: [AI경품추천] 소상공인으로서 | 나는, 예산 내에서 최적의 경품을 선정하기 위해 | AI가 타겟 고객층에 맞는 경품을 추천해주기를 원한다. UFR-PLAN-030: [AI경품추천] 소상공인으로서 | 나는, 예산 내에서 최적의 경품을 선정하기 위해 | AI가 타겟 고객층에 맞는 경품을 추천해주기를 원한다.
- 시나리오: AI 기반 최적 경품 추천 및 수정 - 시나리오: AI 기반 최적 경품 추천 및 이벤트 진행 방법 선택
트렌드 분석 완료 후 | 예산, 타겟 고객층, 이벤트 목적을 입력하면 | Claude API가 예산 대비 매력도가 높은 경품 Top 5를 추천한다. 트렌드 분석 완료 후 | 예산, 타겟 고객층, 이벤트 목적, 이벤트 진행 방법을 입력하면 | Claude API가 예산 대비 매력도가 높은 경품 Top 5를 추천한다.
[입력 요구사항] [입력 요구사항]
- [ ] 예산 입력 (최소 10,000원 ~ 최대 5,000,000원) - [ ] 예산 입력 (최소 10,000원 ~ 최대 5,000,000원)
- [ ] 타겟 고객층 자동 설정 (업종 기반) - [ ] 타겟 고객층 자동 설정 (업종 기반)
- [ ] 이벤트 목적 연동 (PLAN-010에서 선택한 목적) - [ ] 이벤트 목적 연동 (PLAN-010에서 선택한 목적)
- [ ] 이벤트 진행 방법 선택 (필수)
- [옵션1] 추첨형: 기간 내 참여한 고객 중 이벤트가 끝나면 상품(쿠폰) 수량 안에서 당첨자 랜덤 추첨 진행
- [옵션2] 선착순형: 선착순 쿠폰 소진 방식 (e.g: 오픈 이벤트 50% 할인이벤트 50명 한정 진행 등, 소진 시 UFR-PART-050으로 바로 이벤트 종료)
[AI 경품 추천 처리] [AI 경품 추천 처리]
- [ ] Claude API 연동 - [ ] Claude API 연동
- [ ] 프롬프트: 예산, 타겟 고객층, 이벤트 목적, 업종 정보 포함 - [ ] 프롬프트: 예산, 타겟 고객층, 이벤트 목적, 이벤트 진행 방법, 업종 정보 포함
- [ ] 예산 대비 매력도 최대화 알고리즘 적용 - [ ] 예산 대비 매력도 최대화 알고리즘 적용
- [ ] 타겟 고객 선호도 분석 - [ ] 타겟 고객 선호도 분석
- [ ] KT 멤버십 포인트 활용 옵션 포함 - [ ] 이벤트 진행 방법에 따른 경품 수량 제안
[추천 결과 제공] [추천 결과 제공]
- [ ] 경품 목록 Top 5 생성 - [ ] 경품 목록 Top 5 생성
@ -153,11 +208,13 @@ UFR-PLAN-030: [AI경품추천] 소상공인으로서 | 나는, 예산 내에서
- [ ] 직접 경품 입력 옵션 제공 - [ ] 직접 경품 입력 옵션 제공
- [ ] 수정된 내용 기반 예상 효과 재계산 - [ ] 수정된 내용 기반 예상 효과 재계산
- [ ] 예산 초과 시 경고 메시지 표시 - [ ] 예산 초과 시 경고 메시지 표시
- [ ] 선착순형 이벤트 선택 시 쿠폰 소진 시점 자동 종료 안내
[Policy] [Policy]
- 예산 내 최적 경품 선정 - 예산 내 최적 경품 선정
- 타겟 고객 선호도 우선 고려 - 타겟 고객 선호도 우선 고려
- 소상공인의 경품 수정 자유도 보장 - 소상공인의 경품 수정 자유도 보장
- 이벤트 진행 방법에 따른 자동 프로세스 차별화
- M/21 - M/21
@ -284,48 +341,15 @@ UFR-CONT-010: [AI이미지생성] 소상공인으로서 | 나는, 이벤트 홍
--- ---
UFR-CONT-020: [AI영상제작] 소상공인으로서 | 나는, SNS 및 우리동네TV 홍보를 위해 | AI가 15초 분량의 영상을 자동으로 제작해주기를 원한다.
- 시나리오: AI 기반 15초 영상 자동 제작
이미지 선택 완료 후 | 배경 음악과 텍스트 오버레이를 선택하면 | AI 영상 제작 엔진이 15초 영상을 자동 제작한다.
[입력 요구사항]
- [ ] 선택한 이미지 (CONT-010)
- [ ] 배경 음악 선택 (로열티 프리 음악 리스트 제공)
- [ ] 텍스트 오버레이 입력 (홍보 문구 자동 연동, 편집 가능)
- [ ] 우리동네TV용 해상도 선택 옵션 (1920x1080, 16:9)
[AI 영상 제작]
- [ ] AI 영상 제작 엔진 API 연동
- [ ] 15초 분량 영상 생성
- [ ] 로열티 프리 배경 음악 적용
- [ ] 자동 자막 생성 (텍스트 오버레이 기반)
- [ ] 화면 전환 효과 자동 적용
- [ ] 브랜드 로고 워터마크 삽입
- [ ] 우리동네TV용 1920x1080 (16:9) 해상도 버전 생성
[영상 결과]
- [ ] 15초 영상 파일 생성 (MP4 형식)
- [ ] 우리동네TV용 영상 파일 (1920x1080, 16:9)
- [ ] 자막 파일 생성 (SRT 형식)
- [ ] 미리보기 재생 기능
- [ ] 다운로드 가능
[Policy]
- 저작권 준수 음악만 사용
- 우리동네TV용 최적 해상도 자동 생성
- M/34
---
UFR-CONT-030: [SNS콘텐츠생성] 소상공인으로서 | 나는, 다양한 SNS에 게시하기 위해 | 플랫폼별로 최적화된 콘텐츠를 자동으로 생성해주기를 원한다. UFR-CONT-030: [SNS콘텐츠생성] 소상공인으로서 | 나는, 다양한 SNS에 게시하기 위해 | 플랫폼별로 최적화된 콘텐츠를 자동으로 생성해주기를 원한다.
- 시나리오: SNS 플랫폼별 최적화 콘텐츠 생성 - 시나리오: SNS 플랫폼별 최적화 콘텐츠 생성
이미지와 영상 생성 완료 후 | Instagram, Naver Blog, Kakao Channel을 선택하면 | 각 SNS 플랫폼에 최적화된 해상도와 형식의 콘텐츠가 생성된다. 이미지 생성 완료 후 | Instagram, Naver Blog, Kakao Channel을 선택하면 | 각 SNS 플랫폼에 최적화된 해상도와 형식의 콘텐츠가 생성된다.
[SNS 플랫폼 선택] [SNS 플랫폼 선택]
- [ ] Instagram (필수) - [ ] Instagram (선택)
- [ ] Naver Blog (선택) - [ ] Naver Blog (선택)
- [ ] Kakao Channel (선택) - [ ] Kakao Channel (선택)
- [ ] 최소 1개 이상 플랫폼 선택 필수
[플랫폼별 최적화] [플랫폼별 최적화]
- [ ] Instagram: 1080x1080 (정사각형) - [ ] Instagram: 1080x1080 (정사각형)
@ -351,10 +375,14 @@ UFR-CONT-030: [SNS콘텐츠생성] 소상공인으로서 | 나는, 다양한 SNS
--- ---
UFR-CONT-040: [QR포스터생성] 소상공인으로서 | 나는, 오프라인 홍보를 위해 | QR 코드가 포함된 인쇄용 포스터를 생성하고 싶다. UFR-CONT-040: [QR포스터생성] 소상공인으로서 | 나는, 오프라인 홍보를 위해 | QR 코드가 포함된 인쇄용 포스터를 생성하고 싶다.
- 시나리오: QR 코드 포스터 생성 - 시나리오: 콘텐츠 생성 후 QR 코드 포스터 생성 여부 선택
콘텐츠 생성 단계에서 | QR 연결 URL과 포스터 크기를 입력하면 | QR 코드가 포함된 인쇄용 포스터 PDF가 생성된다. 콘텐츠 생성 완료 후 | QR 포스터 생성 여부를 묻는 화면에서 "생성" 선택 시 | QR 연결 URL과 포스터 크기를 입력하면 | QR 코드가 포함된 인쇄용 포스터 PDF가 생성된다.
[입력 요구사항] [QR 포스터 생성 여부 선택]
- [ ] "QR 포스터 생성" 선택 시: QR 포스터 생성 화면으로 이동
- [ ] "생성 안 함" 선택 시: 콘텐츠 편집 단계(UFR-CONT-050)로 바로 이동
[입력 요구사항] (QR 포스터 생성 선택 시)
- [ ] QR 연결 URL (이벤트 참여 페이지 URL) - [ ] QR 연결 URL (이벤트 참여 페이지 URL)
- [ ] 포스터 크기 선택 (A4 또는 A3) - [ ] 포스터 크기 선택 (A4 또는 A3)
@ -381,9 +409,8 @@ UFR-CONT-050: [콘텐츠편집] 소상공인으로서 | 나는, 콘텐츠를 개
[편집 가능 항목] [편집 가능 항목]
- [ ] 이미지: 텍스트 수정, 색상 조정 - [ ] 이미지: 텍스트 수정, 색상 조정
- [ ] 영상: 텍스트 오버레이 수정, 배경 음악 변경
- [ ] SNS 콘텐츠: 게시 텍스트 편집 - [ ] SNS 콘텐츠: 게시 텍스트 편집
- [ ] QR 포스터: 텍스트 수정, 레이아웃 조정 - [ ] QR 포스터: 텍스트 수정, 레이아웃 조정 (생성한 경우)
[편집 도구] [편집 도구]
- [ ] 텍스트 편집기 (폰트, 크기, 색상 변경) - [ ] 텍스트 편집기 (폰트, 크기, 색상 변경)
@ -406,9 +433,8 @@ UFR-CONT-060: [콘텐츠최종승인] 소상공인으로서 | 나는, 배포 전
[콘텐츠 미리보기] [콘텐츠 미리보기]
- [ ] 이미지 3종 - [ ] 이미지 3종
- [ ] 15초 영상
- [ ] SNS 콘텐츠 (플랫폼별) - [ ] SNS 콘텐츠 (플랫폼별)
- [ ] QR 포스터 - [ ] QR 포스터 (생성한 경우)
[승인 처리] [승인 처리]
- [ ] 승인 버튼 클릭 시 콘텐츠 DB 저장 - [ ] 승인 버튼 클릭 시 콘텐츠 DB 저장
@ -416,7 +442,7 @@ UFR-CONT-060: [콘텐츠최종승인] 소상공인으로서 | 나는, 배포 전
- [ ] 다음 단계(배포) 안내 - [ ] 다음 단계(배포) 안내
[성능 기준] [성능 기준]
- [ ] 전체 콘텐츠 생성 3분 이내 완료 - [ ] 전체 콘텐츠 생성 2-3분 이내 완료
- M/3 - M/3
@ -432,9 +458,10 @@ UFR-DIST-010: [다중채널배포설정] 소상공인으로서 | 나는, 이벤
- [ ] 우리동네TV (선택) - [ ] 우리동네TV (선택)
- [ ] 링고비즈 연결음 (선택) - [ ] 링고비즈 연결음 (선택)
- [ ] 지니TV 광고 (선택) - [ ] 지니TV 광고 (선택)
- [ ] Instagram (필수) - [ ] Instagram (선택)
- [ ] Naver Blog (선택) - [ ] Naver Blog (선택)
- [ ] Kakao Channel (선택) - [ ] Kakao Channel (선택)
- [ ] 최소 1개 이상 채널 선택 필수
[배포 설정] [배포 설정]
- [ ] 즉시 배포 또는 예약 배포 선택 - [ ] 즉시 배포 또는 예약 배포 선택
@ -661,32 +688,39 @@ UFR-PART-020: [중복참여방지] 시스템으로서 | 나는, 공정한 이벤
--- ---
UFR-PART-030: [자동당첨자추첨] 소상공인으로서 | 나는, 수동 관리 부담을 줄이기 위해 | 이벤트 종료 시 자동으로 당첨자가 추첨되기를 원한다. UFR-PART-030: [자동당첨자추첨] 소상공인으로서 | 나는, 수동 관리 부담을 줄이기 위해 | 추첨형 이벤트 종료 시 자동으로 당첨자가 추첨되기를 원한다.
- 시나리오: 이벤트 종료 후 자동 추첨 - 시나리오: 추첨형 이벤트 종료 후 자동 추첨
이벤트 종료 시각 도래 시 | 시스템이 자동으로 참여자 목록을 조회하면 | 공정한 알고리즘으로 당첨자를 추첨하고 명단을 생성한다. 추첨형 이벤트 종료 시각 도래 시 | 시스템이 자동으로 참여자 목록을 조회하면 | 공정한 알고리즘으로 당첨자를 추첨하고 명단을 생성한다.
[추첨 시작 트리거] [추첨 시작 트리거]
- [ ] 이벤트 종료 시각 자동 감지 - [ ] 이벤트 진행 방법 확인 (UFR-PLAN-030에서 선택한 방법)
- [ ] 스케줄러에 의한 자동 추첨 시작 - [ ] 추첨형 이벤트: 종료 시각 자동 감지하여 추첨 시작
- [ ] 또는 소상공인의 수동 추첨 요청 - [ ] 선착순형 이벤트: 추첨 진행하지 않음 (쿠폰 소진 시 자동 종료)
- [ ] 스케줄러에 의한 자동 추첨 시작 (추첨형만)
- [ ] 또는 소상공인의 수동 추첨 요청 (추첨형만)
[당첨자 추첨 처리] [당첨자 추첨 처리] (추첨형 이벤트만)
- [ ] 참여자 목록 조회 (이벤트 ID 기준) - [ ] 참여자 목록 조회 (이벤트 ID 기준)
- [ ] 중복 참여자 제외 - [ ] 중복 참여자 제외
- [ ] 매장 방문 고객 가산점 적용 - [ ] 매장 방문 고객 가산점 적용
- [ ] 난수 기반 무작위 추첨 알고리즘 - [ ] 난수 기반 무작위 추첨 알고리즘
- [ ] 당첨 인원만큼 추첨 (기획안에 정의된 인원) - [ ] 당첨 인원만큼 추첨 (기획안에 정의된 인원)
[추첨 결과] [선착순형 이벤트 처리]
- [ ] 쿠폰 소진 시 자동으로 이벤트 종료 (UFR-PART-050으로 이동)
- [ ] 참여 순서대로 당첨자 자동 확정
- [ ] 추첨 과정 없음
[추첨 결과] (추첨형 이벤트)
- [ ] 당첨자 목록 생성 - [ ] 당첨자 목록 생성
- [ ] 추첨 과정 로그 기록 (감사 추적용) - [ ] 추첨 과정 로그 기록 (감사 추적용)
- [ ] 당첨자 정보 DB 저장 - [ ] 당첨자 정보 DB 저장
- [ ] 소상공인에게 당첨자 명단 제공 - [ ] 소상공인에게 당첨자 명단 제공
[Policy] [Policy]
- 공정한 추첨 알고리즘 적용 - 이벤트 진행 방법에 따른 자동 프로세스 차별화
- 추첨 과정 로그 기록 - 추첨형: 공정한 추첨 알고리즘 적용, 매장 방문 고객 가산점
- 매장 방문 고객 가산점 - 선착순형: 선착순 자동 확정, 추첨 없음
- M/13 - M/13
@ -765,7 +799,7 @@ UFR-ANAL-010: [실시간대시보드조회] 소상공인으로서 | 나는, 이
- [ ] 5분 간격 자동 업데이트 - [ ] 5분 간격 자동 업데이트
- [ ] KT 채널 데이터 수집 API 연동 (우리동네TV, 지니TV) - [ ] KT 채널 데이터 수집 API 연동 (우리동네TV, 지니TV)
- [ ] POS 시스템 연동 (매장 방문, 매출 데이터) - [ ] POS 시스템 연동 (매장 방문, 매출 데이터)
- [ ] 구글 애널리틱스 연동 (웹/앱 유입) - [ ] SNS 플랫폼 데이터 수집 (Instagram, Naver Blog, Kakao Channel)
[대시보드 UI] [대시보드 UI]
- [ ] 그래프 시각화 (시간대별 추이) - [ ] 그래프 시각화 (시간대별 추이)
@ -787,10 +821,10 @@ UFR-ANAL-020: [채널별성과분석] 소상공인으로서 | 나는, 효과적
[채널별 데이터 수집] [채널별 데이터 수집]
- [ ] 우리동네TV: 노출 수, 도달률 - [ ] 우리동네TV: 노출 수, 도달률
- [ ] 지니TV: 노출 수, 도달 가구 수 - [ ] 지니TV: 노출 수, 도달 가구 수
- [ ] Instagram: 조회 수, 좋아요, 공유 수 - [ ] Instagram: 조회 수, 좋아요, 저장 수, 공유 수 (Instagram Graph API 활용)
- [ ] Naver Blog: 방문자 수, 체류 시간 - [ ] Naver Blog: 방문자 수, 조회 수 (체류 시간 확인 불가)
- [ ] Kakao Channel: 조회 수, 클릭 수 - [ ] Kakao Channel: 조회 수, 클릭 수 (Kakao API 활용)
- [ ] QR 코드: 스캔 횟수 - [ ] QR 코드: 스캔 횟수 (자체 QR 코드 추적 시스템)
[성과 지표 계산] [성과 지표 계산]
- [ ] 노출 수 (Impression) - [ ] 노출 수 (Impression)
@ -808,8 +842,8 @@ UFR-ANAL-020: [채널별성과분석] 소상공인으로서 | 나는, 효과적
--- ---
UFR-ANAL-030: [ROI자동계산] 소상공인으로서 | 나는, 투자 대비 효과를 명확히 알기 위해 | 총비용 대비 수익(ROI)이 자동으로 계산되기를 원한다. UFR-ANAL-030: [광고수익률자동계산] 소상공인으로서 | 나는, 투자 대비 효과를 명확히 알기 위해 | 총비용 대비 수익(광고 수익률)이 자동으로 계산되기를 원한다.
- 시나리오: ROI 자동 계산 및 분석 - 시나리오: 광고 수익률 자동 계산 및 분석
이벤트 진행 중 또는 종료 후 | 효과 측정 대시보드에서 | 투자 비용 대비 수익이 자동으로 계산되어 표시된다. 이벤트 진행 중 또는 종료 후 | 효과 측정 대시보드에서 | 투자 비용 대비 수익이 자동으로 계산되어 표시된다.
[비용 데이터 수집] [비용 데이터 수집]
@ -859,7 +893,6 @@ UFR-ANAL-040: [분석리포트생성] 소상공인으로서 | 나는, 이벤트
[리포트 생성] [리포트 생성]
- [ ] 데이터 수집 및 집계 - [ ] 데이터 수집 및 집계
- [ ] 구글 애널리틱스 데이터 통합
- [ ] 그래프 이미지 생성 - [ ] 그래프 이미지 생성
- [ ] PDF 레이아웃 생성 - [ ] PDF 레이아웃 생성
- [ ] PDF 파일 생성 - [ ] PDF 파일 생성
@ -1071,7 +1104,7 @@ NFR-PERF-040: [실시간데이터수집] 시스템으로서 | 나는, 정확한
[데이터 소스] [데이터 소스]
- [ ] KT 채널 API (우리동네TV, 지니TV) - [ ] KT 채널 API (우리동네TV, 지니TV)
- [ ] POS 시스템 - [ ] POS 시스템
- [ ] 구글 애널리틱스 - [ ] SNS 플랫폼 API (Instagram, Naver Blog, Kakao Channel)
- [ ] 참여자 DB - [ ] 참여자 DB
- M/13 - M/13
@ -1149,54 +1182,61 @@ NFR-SCAL-010: [동시이벤트처리] 시스템으로서 | 나는, 다수의 소
**[마이크로서비스별 검토]** **[마이크로서비스별 검토]**
1) **User 서비스** 1. **User 서비스**
모든 유저스토리 ✅ 실현 가능 모든 유저스토리 ✅ 실현 가능
- 표준적인 인증/인가 패턴 - 표준적인 인증/인가 패턴
- KT 인증 시스템, 사업자번호 검증 시스템 연동 - KT 인증 시스템, 사업자번호 검증 시스템 연동
- JWT 토큰, 세션 관리 - JWT 토큰, 세션 관리
2) **Event Planning 서비스** 2. **Event Planning 서비스**
대부분 ✅ 실현 가능, AI 응답 시간 주의 필요 대부분 ✅ 실현 가능, AI 응답 시간 주의 필요
**주요 검토 사항:** **주요 검토 사항:**
- UFR-PLAN-020~050: ⚠️ AI API 응답 시간 관리 필요 - UFR-PLAN-020~050: ⚠️ AI API 응답 시간 관리 필요
- Claude API, GPT-4 API 병렬 호출 - Claude API, GPT-4 API 병렬 호출
- 응답 캐싱으로 속도 개선 - 응답 캐싱으로 속도 개선
- 10초 목표 달성을 위한 프롬프트 최적화 - 10초 목표 달성을 위한 프롬프트 최적화
3) **Content Generation 서비스** 3. **Content Generation 서비스**
⚠️ 높은 기술적 복잡도 ⚠️ 높은 기술적 복잡도
**주요 검토 사항:** **주요 검토 사항:**
- UFR-CONT-010: Stable Diffusion API 연동 (이미지 생성 90초) - UFR-CONT-010: Stable Diffusion API 연동 (이미지 생성 90초)
- UFR-CONT-020: AI 영상 제작 엔진 연동 (영상 제작 90초) - UFR-CONT-020: AI 영상 제작 엔진 연동 (영상 제작 90초)
- 3분 목표 달성을 위한 병렬 처리 필수 - 3분 목표 달성을 위한 병렬 처리 필수
4) **Distribution 서비스** 4. **Distribution 서비스**
대부분 ✅ 실현 가능 대부분 ✅ 실현 가능
**주요 검토 사항:** **주요 검토 사항:**
- 다중 외부 API 연동 (우리동네TV, 링고비즈, 지니TV, SNS) - 다중 외부 API 연동 (우리동네TV, 링고비즈, 지니TV, SNS)
- 병렬 배포로 1분 목표 달성 - 병렬 배포로 1분 목표 달성
- 배포 실패 시 자동 재시도 (최대 3회) - 배포 실패 시 자동 재시도 (최대 3회)
5) **Participation 서비스** 5. **Participation 서비스**
모든 유저스토리 ✅ 실현 가능 모든 유저스토리 ✅ 실현 가능
- 표준적인 참여 관리 패턴 - 표준적인 참여 관리 패턴
- 중복 방지, 추첨 알고리즘, SMS/알림톡 발송 - 중복 방지, 추첨 알고리즘, SMS/알림톡 발송
6) **Analytics 서비스** 6. **Analytics 서비스**
대부분 ✅ 실현 가능 대부분 ✅ 실현 가능
**주요 검토 사항:** **주요 검토 사항:**
- 다중 데이터 소스 통합 (KT API, POS, 구글 애널리틱스) - 다중 데이터 소스 통합 (KT API, POS, 구글 애널리틱스)
- 실시간 데이터 수집 (5분 간격) - 실시간 데이터 수집 (5분 간격)
- ROI 자동 계산 로직 - ROI 자동 계산 로직
7) **AI Learning 서비스** 7. **AI Learning 서비스**
⚠️ 가장 높은 기술적 복잡도 ⚠️ 가장 높은 기술적 복잡도
**주요 검토 사항:** **주요 검토 사항:**
- AI 머신러닝 엔진 연동 - AI 머신러닝 엔진 연동
- 빅데이터 분석 시스템 구축 - 빅데이터 분석 시스템 구축
- 성공/실패 패턴 학습 알고리즘 - 성공/실패 패턴 학습 알고리즘
@ -1205,23 +1245,27 @@ NFR-SCAL-010: [동시이벤트처리] 시스템으로서 | 나는, 다수의 소
**[주요 기술 스택 권장사항]** **[주요 기술 스택 권장사항]**
**백엔드:** **백엔드:**
- Node.js/Spring Boot (마이크로서비스) - Node.js/Spring Boot (마이크로서비스)
- Redis (캐싱, 세션) - Redis (캐싱, 세션)
- PostgreSQL/MongoDB - PostgreSQL/MongoDB
- RabbitMQ/Kafka (비동기 처리) - RabbitMQ/Kafka (비동기 처리)
**프론트엔드:** **프론트엔드:**
- React/Next.js - React/Next.js
- TypeScript - TypeScript
- Zustand/Redux (상태관리) - Zustand/Redux (상태관리)
**AI/ML:** **AI/ML:**
- Claude API (경품 추천, 참여 방법 설계) - Claude API (경품 추천, 참여 방법 설계)
- GPT-4 API (홍보 문구 생성) - GPT-4 API (홍보 문구 생성)
- Stable Diffusion (이미지 생성) - Stable Diffusion (이미지 생성)
- AI 영상 제작 엔진 - AI 영상 제작 엔진
**외부 연동:** **외부 연동:**
- KT 인증 시스템 - KT 인증 시스템
- 사업자번호 검증 시스템 - 사업자번호 검증 시스템
- 우리동네TV, 링고비즈, 지니TV API - 우리동네TV, 링고비즈, 지니TV API
@ -1230,6 +1274,7 @@ NFR-SCAL-010: [동시이벤트처리] 시스템으로서 | 나는, 다수의 소
- 구글 애널리틱스 - 구글 애널리틱스
**인프라:** **인프라:**
- Docker/Kubernetes - Docker/Kubernetes
- API Gateway - API Gateway
- Circuit Breaker - Circuit Breaker
@ -1239,6 +1284,7 @@ NFR-SCAL-010: [동시이벤트처리] 시스템으로서 | 나는, 다수의 소
**[주요 기술적 리스크 및 해결방안]** **[주요 기술적 리스크 및 해결방안]**
**1. AI 응답 시간 (10초 제약)** **1. AI 응답 시간 (10초 제약)**
- 리스크: AI API 응답이 10초를 초과할 수 있음 - 리스크: AI API 응답이 10초를 초과할 수 있음
- 해결방안: - 해결방안:
- 프롬프트 최적화로 응답 시간 단축 - 프롬프트 최적화로 응답 시간 단축
@ -1246,6 +1292,7 @@ NFR-SCAL-010: [동시이벤트처리] 시스템으로서 | 나는, 다수의 소
- 응답 캐싱 적극 활용 - 응답 캐싱 적극 활용
**2. 콘텐츠 생성 시간 (3분 제약)** **2. 콘텐츠 생성 시간 (3분 제약)**
- 리스크: 이미지와 영상 생성이 3분을 초과할 수 있음 - 리스크: 이미지와 영상 생성이 3분을 초과할 수 있음
- 해결방안: - 해결방안:
- 이미지와 영상 병렬 생성 - 이미지와 영상 병렬 생성
@ -1253,6 +1300,7 @@ NFR-SCAL-010: [동시이벤트처리] 시스템으로서 | 나는, 다수의 소
- 콘텐츠 템플릿 캐싱 - 콘텐츠 템플릿 캐싱
**3. 다중 외부 API 의존성** **3. 다중 외부 API 의존성**
- 리스크: API 장애 시 서비스 중단 - 리스크: API 장애 시 서비스 중단
- 해결방안: - 해결방안:
- 각 API별 폴백 전략 수립 - 각 API별 폴백 전략 수립
@ -1261,6 +1309,7 @@ NFR-SCAL-010: [동시이벤트처리] 시스템으로서 | 나는, 다수의 소
- 배포 실패 시 자동 재시도 (3회) - 배포 실패 시 자동 재시도 (3회)
**4. 실시간 데이터 수집** **4. 실시간 데이터 수집**
- 리스크: 다중 데이터 소스 통합 복잡도 - 리스크: 다중 데이터 소스 통합 복잡도
- 해결방안: - 해결방안:
- 스케줄러 기반 자동 수집 (5분 간격) - 스케줄러 기반 자동 수집 (5분 간격)