Product‐Backlog - 100-hours-a-week/KTB4-17th-wiki GitHub Wiki

프로덕트 백로그

프로덕트 백로그 1

유저스토리: 서비스를 처음 접한 사용자로서, 별도 계정 생성 없이 카카오 계정으로 즉시 가입하고 싶다. 가입 절차가 길면 서비스를 경험해 보기도 전에 이탈하게 되기 때문이다.

프로덕트 백로그 세부사항

세부사항
로그인 화면에서 카카오 로그인 버튼으로 인증을 시작할 수 있다.
POST /api/v1/auth/social 응답에 따라 신규 회원은 온보딩으로, 기존 회원은 홈으로 분기한다.
소셜 계정의 생년월일이 만 19세 미만이면 가입 제한 화면을 표시하고 로그인 화면으로 복귀시킨다.
가입이 제한된 경우 조회한 생년월일을 저장하지 않고 즉시 폐기한다.
온보딩을 완료하지 않은 회원이 재로그인하면 마지막 완료 단계로 복귀한다.
인증 실패 시 네트워크 연결을 확인해주세요 토스트를 3초간 노출하고 재시도할 수 있다.
액세스 토큰을 앱 로그와 분석 이벤트에 기록하지 않는다.

프로덕트 백로그 2

유저스토리: 가입하는 사용자로서, 내 정보와 대화 데이터가 어떤 목적으로 쓰이는지 동의 시점에 알고 싶다. 무엇에 동의했는지 모르는 상태로 개인 데이터를 넘기고 싶지 않기 때문이다.

프로덕트 백로그 세부사항

세부사항
필수 약관과 선택 약관을 구분하여 표시한다.
필수 약관에 모두 동의하기 전에는 다음 단계로 진행할 수 없다.
각 약관의 전문을 확인할 수 있다.
POST /api/v1/terms/agree로 약관 버전과 동의 시각을 서버에 기록한다.
동의 기록은 수정·삭제되지 않는 감사 데이터로 보관한다.
대화 데이터 학습 동의 항목에 수집 목적, 활용 범위, 원본 미보관 방침을 명시한다.

프로덕트 백로그 3

유저스토리: 신규 가입자로서, 추천을 받는 데 꼭 필요한 정보만 빠르게 입력하고 서비스를 둘러보고 싶다. 가입 단계에서 요구하는 항목이 많으면 도중에 그만두게 되기 때문이다.

프로덕트 백로그 세부사항

세부사항
닉네임을 2~10자로 입력하고 GET /api/v1/users/nickname/check로 중복 여부를 확인한다.
중복이거나 글자 수를 벗어나면 오류 문구를 표시하고 다음 단계 버튼을 비활성화한다.
성별과 활동 지역을 선택할 수 있다. 생년월일은 인증 정보를 사용하며 수정할 수 없다.
대표 사진 1장을 촬영 또는 앨범에서 선택하여 업로드할 수 있다.
POST /api/v1/photos/verify로 얼굴 검출·정면 각도·가림·밝기·화질을 검사한다.
검사 중 진행 상태를 표시하고, 15초 내 응답이 없으면 타임아웃 처리 후 재시도를 제공한다.
검사 실패 시 실패 사유를 안내하고 다른 사진으로 재시도할 수 있다.
검사에 사용한 원본과 실패한 사진은 검사 직후 폐기한다.
각 단계 완료 시 서버에 온보딩 단계 번호를 저장한다.
정면 판단 결과를 신원 동일성 판정이나 생체 인증 용도로 사용하지 않는다.

프로덕트 백로그 4

유저스토리: 가입한 사용자로서, 프로필 항목만으로는 드러나지 않는 나의 성향이 반영된 AI 페르소나를 갖고 싶다. 조건이 비슷해도 대화가 맞지 않는 경우가 많기 때문이다.

프로덕트 백로그 세부사항

세부사항
GET /api/v1/onboarding/questions로 가치관 문답 세트를 조회하여 순서대로 표시한다.
POST /api/v1/onboarding/answers로 답변을 전송한다.
문답 구간에서 중도 이탈하면 답변을 폐기하고 직전 단계부터 재개한다.
답변을 기반으로 사용자 1명당 AI 페르소나 1개를 생성한다.
생성된 페르소나의 특성을 카테고리별로 요약하여 확인할 수 있다.
페르소나 생성 실패 시 오류를 안내하고 재시도할 수 있으며, 실패가 온보딩 완료를 막지 않는다.
모델·프롬프트 버전과 토큰 사용량을 AIModelRun에 기록한다.

프로덕트 백로그 5

유저스토리: 소개팅 상대를 찾는 사용자로서, 조건에 맞는 이성을 한 명씩 확인하며 탐색하고 싶다. 수백 개의 프로필을 직접 훑는 방식은 시간이 오래 걸리기 때문이다.

프로덕트 백로그 세부사항

세부사항
GET /api/v1/feed?cursor=&size=20으로 추천 카드를 조회한다.
커서 기반 무한 스크롤로 추가 카드를 로드하며, 잔여 5장 시점에 다음 페이지를 선조회한다.
카드에서 프로필 상세로 이동하여 사진, 닉네임, 나이, 지역, 소개를 확인할 수 있다.
나이·성별·지역 기반의 단순 규칙으로 추천 후보를 구성한다.
이미 패스한 대상은 피드에 다시 노출하지 않는다.
차단 관계인 사용자는 양방향으로 피드에서 제외한다.
추천할 후보가 없으면 빈 상태 화면을 표시한다.
로딩·오류·빈 상태를 각각 구분하여 표시하고 오류 시 재시도할 수 있다.

프로덕트 백로그 6

유저스토리: 마음에 드는 상대를 발견한 사용자로서, 상대에게 호감을 표현하고 상대도 나에게 관심이 있는지 확인하고 싶다.

프로덕트 백로그 세부사항

세부사항
추천 카드와 프로필 상세에서 좋아요(하트) 또는 패스를 선택할 수 있다.
좋아요 전송 시 상대에게 이미 받은 좋아요가 있으면 즉시 매칭을 성사시킨다.
받은 좋아요가 없으면 발신 좋아요를 대기 상태로 저장하고 최대 7일 후 만료한다.
매칭 성사 시 채팅방 1개를 자동 생성한다.
상호 좋아요 → 매칭 → 채팅방 생성을 하나의 트랜잭션으로 처리하여 중복 매칭이 발생하지 않는다.
좋아요 API는 Idempotency-Key를 받아 중복 탭·재시도 시 중복 생성되지 않는다.
일일 좋아요 한도를 서버 설정값으로 적용하고 초과 시 안내를 표시한다.
좋아요를 받으면 상대에게 푸시 알림을 발송한다.
매칭 성사 시 유입 경로(피드/받은 좋아요)를 match_created 이벤트에 기록한다.

프로덕트 백로그 7

유저스토리: 매칭이 성사된 사용자로서, 상대와 곧바로 대화를 시작하고 싶다. 매칭만 되고 대화로 이어지지 않으면 서비스를 이용할 이유가 없기 때문이다.

프로덕트 백로그 세부사항

세부사항
GET /api/v1/chats?cursor=&size=20으로 채팅방 목록을 조회한다.
목록에 상대 프로필, 마지막 메시지, 시각, 미읽음 수를 표시한다.
POST /api/v1/chats/{roomId}/messages로 최대 1,000자 텍스트를 전송한다.
전송 중·성공·실패 상태를 메시지 단위로 표시하고 실패한 메시지를 재전송할 수 있다.
새 메시지 수신 시 푸시 알림을 발송한다.
매칭된 상대의 프로필을 채팅방에서 다시 확인할 수 있다.
사용자가 원할 경우 채팅방을 나가 매칭을 종료할 수 있다.
상대가 탈퇴한 경우 프로필을 알 수 없음으로 대체하고 입력을 비활성화한다.
채팅 내용을 분석 이벤트 속성으로 전송하지 않는다.

프로덕트 백로그 8

유저스토리: 마음에 드는 상대를 발견한 사용자로서, 실제로 말을 걸기 전에 대화 분위기를 미리 겪어보고 싶다. 첫 메시지를 어떻게 시작할지 몰라 좋아요를 누르지 못하는 경우가 많기 때문이다.

프로덕트 백로그 세부사항

세부사항
프로필 상세에서 상대방의 AI 페르소나와 1:1 연습 대화를 시작할 수 있다.
상대 페르소나가 비활성이면 기능 진입을 막고 사유를 안내한다.
AI는 상대방의 문답 기반 특성을 반영하여 응답한다.
대화 화면에 실제 상대에게 내용이 전달되지 않는다는 고지를 상시 노출한다.
턴 수 상한에 도달하면 대화를 종료하고 좋아요 또는 목록 복귀를 제공한다.
응답이 15초 내 오지 않으면 타임아웃 처리하고 해당 턴을 소모하지 않은 상태로 재전송할 수 있다.
사용자·기능별 일일 쿼터와 응답 길이 상한을 서버 설정으로 적용한다.
ai_session_started/completed/failed 이벤트에 기능 종류, 턴 수, 실패 사유를 기록한다.

프로덕트 백로그 9

유저스토리: 서비스를 이용하는 사용자로서, 내 프로필이 어떻게 보이는지 확인하고 나에게 온 소식을 한곳에서 보고 싶다.

프로덕트 백로그 세부사항

세부사항
하단 탭 4개(홈·좋아요·채팅·마이)로 전 화면을 이동할 수 있다.
마이페이지에서 내 프로필과 AI 페르소나 요약을 확인할 수 있다.
알림 목록에서 좋아요, 매칭, 새 메시지 알림을 확인할 수 있다.
알림을 탭하면 해당 대상 화면으로 이동한다.
알림이 없으면 빈 상태 화면을 표시한다.

V1 — 기본 매칭 제품 정식 완성


프로덕트 백로그 10

유저스토리: 사용자로서, 신체·직업·라이프스타일까지 등록하여 나를 더 정확하게 보여주고 싶다. 정보가 적으면 조건이 맞지 않는 상대에게만 노출되기 때문이다.

프로덕트 백로그 세부사항

세부사항
키, 체형, 학력, 직업을 입력할 수 있다.
라이프스타일(음주·흡연 등) 항목을 선택할 수 있다.
프로필 사진을 최대 6장까지 등록하고 순서를 변경할 수 있다.
대표 사진 변경 시 정면 검사를 다시 수행한다.
프로필 완성도를 백분율로 표시한다.

프로덕트 백로그 11

유저스토리: 소개팅 상대를 찾는 사용자로서, 내가 원하는 조건을 저장해두고 그 안에서만 추천받고 싶다. 매번 같은 조건을 다시 설정하는 것은 번거롭기 때문이다.

프로덕트 백로그 세부사항

세부사항
나이, 거리, 키, 지역 등 원하는 상대의 조건을 설정하고 서버에 저장한다.
저장한 조건은 재로그인 후에도 유지된다.
저장한 조건으로 후보군을 구성한다. (1차 필터링)
필터를 통과한 후보를 관심사·가치관 유사도로 정렬한다. (2차 필터링 및 정렬)

프로덕트 백로그 12

유저스토리: 좋아요를 주고받은 사용자로서, 누가 나에게 관심을 표현했는지 확인하고 내가 보낸 좋아요를 관리하고 싶다.

프로덕트 백로그 세부사항

세부사항
GET /api/v1/likes/received로 받은 좋아요를 조회한다.
GET /api/v1/likes/sent로 보낸 좋아요와 남은 만료 기간을 조회한다.
DELETE /api/v1/likes/{likeId}로 보낸 좋아요를 취소할 수 있다.
받은 좋아요 목록에서 바로 좋아요를 보내 매칭할 수 있다.
채팅방에서 사진을 전송할 수 있다.
서버에서 파일의 MIME·확장자·용량을 재검증하고 업로드 URL을 단기·단일 사용으로 발급한다.

프로덕트 백로그 13

유저스토리: AI 페르소나를 가진 사용자로서, 실제 내 대화 기록을 학습시켜 말투까지 나와 닮은 페르소나를 만들고 싶다. 문답만으로는 나의 대화 스타일이 충분히 담기지 않기 때문이다.

프로덕트 백로그 세부사항

세부사항
카카오톡 대화 내역 txt 파일을 업로드할 수 있다.
업로드 전 데이터 활용 목적, 범위, 원본 미보관 방침을 화면에 표시한다.
서버에서 파일 형식·용량·악성 파일 여부를 검증한다.
업로드된 대화에서 사용자 본인의 발화만 추출한다.
추출된 발화에서 전화번호·주소·타인 이름 등 개인정보를 마스킹한다.
마스킹 완료 후 업로드 원본을 삭제하고 보관하지 않는다.
학습 작업은 백그라운드로 처리하며 앱을 벗어나도 계속 진행된다.
학습 완료 시 푸시 알림으로 통지한다. (예상 소요 1~3분)
학습 실패 시 원본을 폐기하고 오류 사유를 안내한다.
학습 결과를 말투·관심사·대화 스타일 특성으로 반영하고 학습일과 버전을 기록한다.
대화 원문을 사용자에게 노출하지 않는다.

프로덕트 백로그 14

유저스토리: AI 페르소나를 만든 사용자로서, AI가 나를 어떻게 파악했는지 확인하고 틀린 부분을 고치고 싶다.

프로덕트 백로그 세부사항

세부사항
GET /api/v1/persona/traits로 페르소나 특성을 카테고리별로 조회한다.
각 특성의 관찰 횟수와 신뢰 단계를 표시한다.
관찰 5회 이상인 특성은 확신 단계로 표시한다.
DELETE /api/v1/persona/traits/{traitId}로 특성을 삭제할 수 있다.
문답을 추가하여 페르소나를 보강할 수 있다.
페르소나 활성/비활성 상태를 전환할 수 있다.
페르소나 특성은 학습 원본과 분리하여 저장한다.

프로덕트 백로그 15

유저스토리: 마음에 드는 상대를 발견한 사용자로서, 실제로 연락하기 전에 나와 상대방이 대화를 잘 이어갈 수 있을지 확인하고 싶다. 프로필 정보만으로는 실제 대화 궁합을 판단하기 어렵기 때문이다.

프로덕트 백로그 세부사항

세부사항
프로필 상세에서 POST /api/v1/simulation으로 AI 가상 소개팅을 시작할 수 있다.
나의 AI 페르소나와 상대방의 AI 페르소나가 10라운드 자동 대화를 진행한다.
완료 후 궁합 점수와 전체 대화 내역을 확인할 수 있다.
리포트에 잘 맞는 부분과 서로 차이가 있는 부분을 각각 요약하여 표시한다.
사용자는 리포트를 확인한 후 좋아요를 보낼지 결정할 수 있다.
리포트는 1회 생성 후 재조회 시 재생성하지 않고 저장본을 사용한다.
실행 실패 시 소모한 재화 또는 쿼터를 자동 복구하고 재시도할 수 있다.

V2 — 분석 콘텐츠와 대화 정리 위임

결제 기능이 아직 없으므로 이 단계의 AI 기능은 서버 지급 기능별 테스트 쿼터로 운영한다.


프로덕트 백로그 16

유저스토리: 새로운 탐색 방식을 원하는 사용자로서, 사진을 통한 관상 분석으로 나와 잘 맞는 상대를 찾아보고 싶다.

프로덕트 백로그 세부사항

세부사항
AI 분석 선택 화면에서 관상 분석에 진입한다.
기존 프로필 사진 또는 신규 사진 중 사진 출처를 선택한다.
분석 전 촬영 조건을 안내하고 확인받는다.
진행률을 표시하며, 99% 이후에는 취소 버튼을 비활성화한다.
앱을 벗어나도 분석이 계속되며 완료 시 알림으로 통지한다. (예상 소요 약 30초)
신규 업로드 사진의 원본은 분석 직후 삭제한다.
분석 결과를 저장하고 관상 궁합 기반 추천 목록으로 연결한다.

프로덕트 백로그 17

유저스토리: 사주에 관심 있는 사용자로서, 내 사주 풀이를 보고 사주 궁합이 맞는 상대를 추천받고 싶다.

프로덕트 백로그 세부사항

세부사항
이름과 태어난 시간을 입력한다. 생년월일과 성별은 인증 정보이므로 수정할 수 없다.
태어난 시간을 모르는 경우 시주를 제외하고 풀이한다.
사주 계산은 규칙 엔진으로, 해설 생성은 LLM으로 분리하여 처리한다.
풀이 결과를 저장하고 사주 궁합 추천 목록으로 연결한다.
궁합 상세에서 상대 프로필로 이동할 수 있다.

프로덕트 백로그 18

유저스토리: 관계를 정리하고 싶은 사용자로서, 직접 말을 꺼내기 어려운 마무리를 AI에게 맡기고 싶다.

프로덕트 백로그 세부사항

세부사항
채팅방 더보기에서 AI 대화 정리 위임을 설정할 수 있다.
위임 전 생성될 메시지를 미리보기로 확인하고 승인한다.
승인 후 서버에서 정리 대화를 진행하며 앱 종료와 무관하게 계속된다.
진행 상태와 완료를 알림으로 통지한다.
완료 후 채팅방 종료 또는 차단을 선택할 수 있다.
안전 정책 필터에 걸린 응답은 발송하지 않고 사용자에게 알린다.
실패·중단 시 상태별로 재처리할 수 있다.

V3 — 셀프서비스·고급 비전 AI


프로덕트 백로그 19

유저스토리: 서비스를 이용하는 사용자로서, 내 프로필을 수정하고 원하지 않는 상대를 차단하여 안전하게 서비스를 이용하고 싶다.

프로덕트 백로그 세부사항

세부사항
프로필 정보와 사진을 수정할 수 있다. 생년월일·성별은 수정할 수 없다.
차단한 사용자 목록을 조회하고 차단을 해제할 수 있다.
차단한 상대는 양방향으로 추천·궁합 목록에서 제외한다.
차단 시 기존 대화는 복구할 수 없음을 사전에 고지한다.
차단·해제 이력을 감사 로그로 남긴다.

프로덕트 백로그 20

유저스토리: 서비스를 이용하는 사용자로서, 내 개인정보와 카카오톡 대화 내역이 안전하게 관리되고 내가 원하는 범위 내에서만 AI 페르소나 생성에 사용되기를 원한다.

프로덕트 백로그 세부사항

세부사항
AI 페르소나를 삭제하거나 재생성할 수 있다.
업로드한 대화 학습 결과를 삭제할 수 있다.
관상·사주 분석 기록을 개별 또는 전체 삭제할 수 있다.
삭제 직후 실행취소를 제공하고, 유예 시간 경과 후 확정 삭제한다.
회원 탈퇴 시 사용자 계정과 관련 데이터를 삭제한다.
다른 사용자에게 공개되는 정보와 AI 페르소나 생성에 사용되는 정보를 구분하여 관리한다.
삭제·동의 변경 이력을 감사 로그로 남긴다.

프로덕트 백로그 21

유저스토리: 프로필의 신뢰도를 높이고 싶은 사용자로서, 얼굴 인증 뱃지를 받고 내 취향에 맞는 얼굴의 상대를 추천받고 싶다. 다만 원하지 않으면 이 기능을 쓰지 않아도 서비스 이용에 지장이 없어야 한다.

프로덕트 백로그 세부사항

세부사항
사용자가 명시적으로 동의한 경우에만 얼굴 인증을 진행한다.
인증 사진과 대표 사진의 동일인 여부를 확인하고 인증 뱃지를 부여한다.
미인증 사용자의 기본 서비스 이용을 제한하지 않는다.
동의 철회 또는 탈퇴 시 얼굴 템플릿을 삭제한다.
얼굴 템플릿을 암호화하고 다른 목적과 분리하여 저장한다.
온보딩의 정면 판단 결과와 분리하여 관리한다.
생성된 AI 이미지에 AI 생성물임을 표시하고, 얼굴 인증 근거로는 사용하지 않는다.
동의한 사용자의 좋아요·패스 신호로 얼굴 취향 임베딩을 학습한다.
얼굴 취향 추천을 사용자가 비활성화하거나 초기화할 수 있다.

우선순위 요약

우선순위 백로그 핵심 가치 출시 단계
1 백로그 1 — 카카오 로그인·가입 자격 확인 서비스 진입 MVP
2 백로그 2 — 약관 동의·데이터 활용 고지 학습 동의 확보, 법적 요건 MVP
3 백로그 3 — 기본 온보딩·대표 사진 정면 판단 추천에 필요한 최소 정보 확보 MVP
4 백로그 4 — 문답 기반 AI 페르소나 생성 서비스의 핵심 차별 기능 MVP
5 백로그 5 — 추천 피드·프로필 상세 매칭 대상 탐색 MVP
6 백로그 6 — 좋아요·패스·상호 매칭 사람 간 연결 MVP
7 백로그 7 — 1:1 텍스트 채팅 매칭 루프 완결 MVP
8 백로그 8 — AI 연습 대화 AI 가치 가설 검증 MVP
9 백로그 9 — 마이페이지·알림 재방문 유도 MVP
10 백로그 10 — 프로필 확장 추천 정확도 향상 V1
11 백로그 11 — 이상형 필터·성향 정렬 조건 기반 탐색 효율화 V1
12 백로그 12 — 좋아요 관리·채팅 사진 코어 기능 완성 V1
13 백로그 13 — 카카오톡 대화 학습 말투까지 반영한 페르소나 V1
14 백로그 14 — 페르소나 특성 관리 페르소나 정확도 사용자 보정 V1
15 백로그 15 — AI 가상 소개팅·궁합 리포트 실제 만남 전 궁합 검증 V1
16 백로그 16 — 관상 분석·궁합 추천 새로운 탐색 경로 V2
17 백로그 17 — 사주 풀이·궁합 추천 새로운 탐색 경로 V2
18 백로그 18 — AI 대화 정리 위임 관계 종료 부담 완화 V2
19 백로그 19 — 프로필 수정·차단 셀프서비스, 안전 장치 V3
20 백로그 20 — 페르소나·데이터 관리·탈퇴 개인정보 보호 및 신뢰성 확보 V3
21 백로그 21 — 얼굴 인증·AI 이미지·취향 추천 프로필 신뢰도, 추천 고도화 V3

착수 전 확정이 필요한 사항

설계서 13절의 결정 필요 사항 중 백로그 착수를 막는 항목이다.

결정 사항 내용 차단하는 백로그
P0-1 대화 데이터 학습 동의가 필수인지 선택인지 확정 (S-onb-01과 S-onb-06 충돌) 2, 13
P0-3 연습 대화 턴 수 상한 확정 8
P0-4 채팅방 나가기가 사용자별 소프트 삭제인지 전체 삭제인지 확정 7
P0-6 관상·사주의 생체·민감정보 해당 여부 법무 검토 16, 17
P0-7 얼굴 인식 선택 동의·뱃지·철회·템플릿 삭제 정책 21
P0-8 AI 이미지의 프로필 사용 가능 여부, 보관 기간, 표기 기준 21

P0-2(새싹·크레딧 용어 통일)와 P0-5(결제·재화 정책)는 재화와 결제가 현재 백로그 범위에서 제외되어 착수를 막지 않는다. 다만 백로그 15의 재화 또는 쿼터 표현은 테스트 쿼터로 단일화해야 한다.

MVP 착수를 위해 지금 필요한 결정은 P0-1, P0-3, P0-4 세 건이다. 나머지는 해당 단계 직전까지 확정하면 된다.

그 밖에 값이 정해지지 않은 항목

항목 내용 관련 백로그
음주·흡연 선택지 설계서에 4종으로 표기되어 있으나 선택지는 3개만 명시됨 10
프로필 완성도 산식 산식과 전 항목 완료 시 카드 영역 처리 방식 미정 10
좋아요 공개 범위 받은/보낸 좋아요의 블러 처리 정책 미정 12
관상·사주 테스트 쿼터 사용자당 무료 실행 횟수와 실패 시 복구 기준 미정 16, 17
분석 기록 보관 기간 현재 90일 임시 표기, 확정 필요 20