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