Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

README.md

관계도감 PRD — 개요

이 문서(개요)의 역할: 배경·문제·목표·사용자·가치·MVP 범위·비기능·성공 기준 등 큰 관점을 담는다. 화면별 상세 요구사항은 각 화면 문서가 단일 기준(SSOT) 이며, 이 문서는 그 지도를 제공한다.

⚠️ 화면별 상세는 각 화면 문서에, 공통 정의(내비·칩·글자수·날짜·문구·이미지·접근성)는 **§12 공통 기준**에 둔다. 모두 기획자 관점의 플랫폼 무관 정의이며(구현 방식은 담지 않음), 개요에 중복하지 않는다.

문서 지도 (SSOT)

문서 담당 화면 SSOT 범위 백엔드
01. 홈 · 관계 대시보드 7.1 그래프/리스트뷰, 태그 필터, 1년 전 오늘 플로팅, 하단 내비 home
02. 사람 (등록 · 프로필) 7.2, 7.3 인물 등록/수정, 프로필 요약·취향·태그·통계, 즐겨찾기 person
03. 사람별 타임라인 7.4 이벤트 타임블록, 활동 흐름 시각화, 카테고리 필터 timeline
04. 상황 기록 작성 7.5 제목·왜·무엇을 + 감정·날씨·카테고리 칩, 연결할 사람, 저장→타임라인 반영 event
05. 전체 타임라인 신규 나의 통합 연대기(전 인물 기록을 시간순), 카테고리·사람 필터 timeline

공통 기반·도메인 모델은 백엔드 infra·chip 라벨 참조.


1. 제품 개요

관계도감은 내가 만난 사람과 함께한 순간을 사람 중심으로 저장하고, 시간이 흐른 뒤에도 관계의 맥락을 다시 꺼내볼 수 있게 하는 개인 관계 기록 서비스다.

연락처처럼 이름과 번호만 저장하는 앱이 아니라, 사람별 프로필, 만남 기록, 좋아하는 것/조심할 것, 관계 태그, 타임라인, 1년 전 오늘 회고를 한곳에 모아 보여준다.

2. 문제 정의

사용자는 인간관계와 관련된 정보를 여러 곳에 흩어 저장한다.

  • 연락처에는 사람이 있지만, 어떤 관계인지와 함께한 기록이 없다.
  • 캘린더에는 일정이 있지만, 그 사람과 어떤 일이 있었는지 남지 않는다.
  • 메모앱에는 기록할 수 있지만, 사람별로 다시 보기 어렵다.
  • 사진첩에는 순간이 있지만, 관계의 흐름으로 정리되지 않는다.
  • 오랜만에 연락하거나 다시 만날 때, 상대의 취향과 최근 함께한 일을 떠올리기 어렵다.

핵심 문제는 사람과의 관계 정보가 고정 정보, 추억, 취향, 만남 기록으로 흩어져 있어 한눈에 관계를 이해하기 어렵다는 것이다.

3. 제품 목표

  • 홈에서 관계를 그래프뷰 또는 리스트뷰로 선택해 볼 수 있게 한다. → 01
  • 사람 프로필에서 관계 요약, 취향, 태그, 최근 함께한 일을 빠르게 확인하게 한다. → 02
  • 사람별 타임라인에서 이벤트 기록을 시간순으로 회고하게 한다. → 03
  • 전체 타임라인(나의 통합 연대기)에서 모든 기록을 하나의 시간축으로 회고하게 한다. → 05
  • 기록 작성은 감정·제목·왜/무엇을 등을 짧게 남기는 통합 입력으로 부담을 낮춘다(30초). → 04
  • 1년 전 오늘에 해당하는 기록이 있을 때만 회고 플로팅을 띄운다. → 01
  • 즐겨찾기한 사람은 관계도 맵에서 시각적으로 구분한다. → 02 · 01

4. 핵심 사용자

  • 만난 사람과의 맥락을 잘 기억하고 싶은 사람
  • 회사 동료, 친구, 스터디원 등 여러 관계를 동시에 관리하는 사람
  • 오랜만에 누군가를 만날 때 최근 함께한 일과 취향을 떠올리고 싶은 사람
  • 인간관계를 점수화하기보다 따뜻하게 기록하고 회고하고 싶은 사람

5. 핵심 가치

  • 관계 맥락 저장: 이름, 생일, 처음 만난 날, 마지막 만난 날, 관계 태그를 한곳에 모은다.
  • 사람별 회고: 사람마다 타임라인을 제공해 함께한 일을 시간순으로 본다.
  • 가벼운 기록: 제목, 카테고리 chip, 왜/무엇을 입력으로 짧게 기록한다.
  • 관계 재발견: 1년 전 오늘 기록이 있는 경우에만 플로팅으로 자연스럽게 회고를 유도한다.
  • 중요한 사람 강조: 즐겨찾기한 사람을 관계도 맵에서 프로필 테두리로 표시한다.

6. MVP 범위

포함

  • 홈 / 관계 대시보드
  • 그래프뷰 / 리스트뷰 전환
  • 사람 추가
  • 사람 프로필
  • 사람별 타임라인
  • 전체 타임라인 (나의 통합 연대기)
  • 상황 기록 작성
  • 태그 chip 추가 및 제거
  • 즐겨찾기
  • 1년 전 오늘 기록 플로팅
  • 하단 내비게이션

제외 또는 확장 후보

  • 실제 푸시 알림
  • 캘린더, 연락처, 메신저 자동 연동
  • AI 관계 분석
  • 관계 점수화
  • 복잡한 통계 대시보드 (인사이트 화면 포함)
  • 다른 사용자와의 기록 공유
  • 소셜 피드

7. 외부 소스 데이터 수집의 기술적 한계

관계도감은 "이미 흩어져 있는 관계 정보를 한곳에 모은다"(§2)가 지향점이라, 연락처·메신저·SNS에서 사람 정보를 자동으로 끌어오는 요구가 자연스럽게 나온다. 하지만 각 소스는 플랫폼 정책·API 제약·법(개인정보보호법) 때문에 가능한 범위가 크게 다르다. 여기서는 "무엇이 되고 무엇이 안 되는지"를 확정해, 자동 연동을 MVP에서 제외(§6)한 근거와 향후 확장 시 전제를 남긴다.

7.1 소스별 수집 가능 여부

소스 가능 여부 접근 방식 실제로 얻는 정보 핵심 제약
연락처 ✅ 가능 OS 권한으로 직접 읽기(iOS Contacts / Android ContactsContract) 이름·전화·이메일·소속(회사/부서)·생일 사용자 권한 동의 필수. 목적 미고지 시 앱스토어 심사 반려
핸드폰 갤러리 ✅ 가능(보조) OS 권한 + 사진 EXIF 촬영일시·GPS 위치 → 만남 시점 시그널 "누가 찍혔는지"는 앱이 직접 얻지 못함(자체 얼굴 인식 필요, iOS는 시스템 결과 접근 불가)
LinkedIn ⚠️ 제한적 사용자가 공식 "데이터 내보내기(Get a copy of your data)"로 받은 Connections CSV 업로드 이름·회사·직책·연결된 날짜 이메일은 상대가 공개 설정한 경우만 채워짐(대부분 공란). 실시간 API·스크래핑은 약관 위반
카카오톡 ⚠️ 제한적 사용자가 대화방 대화 내보내기(.txt) 업로드 → 파싱 표시 이름·대화 빈도(관계 강도 추정) 친구목록 내보내기 기능 자체가 없음. 프로필 사진·전화번호 취득 불가. 공식 SDK 친구목록은 "우리 앱 이미 사용 중인 친구"로만 한정
슬랙 ⚠️ 부적합 워크스페이스 관리자 권한의 users.list 워크스페이스 멤버 프로필 워크스페이스 단위라 개인용 인맥 수집 개념이 없음. 관리자만 export 가능

7.2 도출되는 설계 원칙

  • 연락처 = 뼈대, 나머지 = 보조 시그널. 자동 실시간 연동 대신, 안 되는 소스는 "사용자가 직접 내보낸 파일을 업로드(import)" 하는 UX로 우회한다. 이는 약관·법 위반을 피하는 유일한 합법 경로다.
  • 카카오톡은 친구목록이 아니라 대화 파일 파싱으로만 접근한다(친구목록 export 불가).
  • LinkedIn CSV는 이메일 매칭이 약하므로 이름 기반 매칭을 전제로 한다.
  • 동일 인물 병합(entity resolution) 이 여러 소스를 합칠 때의 실제 난이도다. 여러 소스에서 온 같은 사람을 한 명으로 합치는 규칙이 별도로 필요하다.

7.3 개인정보 보호 전제 (한국 PIPA)

  • 제3자(친구) 정보를 수집·저장하면 원칙적으로 정보주체 동의가 걸린다. 실무적 리스크 최소화는 온디바이스 처리·서버 미전송을 기본으로 두는 것이다.
  • 서버 저장이 필요하면 최소 수집·암호화·삭제권 보장을 설계 전제로 한다.
  • 연락처·사진 권한은 명확한 목적 고지가 없으면 스토어 심사에서 반려된다.

9. 기능 요구사항 (색인)

읽기용 기능 개요. 상세는 각 기능이 속한 화면 문서(SSOT)에서 정의한다.

기능 설명 우선순위 SSOT
홈 관계 대시보드 관계 그래프/리스트 진입점 제공 1 01
그래프뷰/리스트뷰 전환 관계도 또는 리스팅 보기 선택 1 01
사람 추가 새 인물 프로필 등록 1 02
사람 프로필 관계 요약, 취향, 태그, 통계 표시 1 02
사람별 타임라인 사람과 관련된 기록을 시간순 표시 1 03
전체 타임라인 전 인물 기록을 하나의 시간축으로 회고 2 05
상황 기록 작성 감정·제목·왜·무엇을 등으로 기록 저장 1 04
카테고리 태그 chip 기록과 사람을 태그로 그룹화 1 02 · 04
chip 제거 선택된 태그를 제거 2 01
즐겨찾기 중요 인물을 저장하고 관계도에서 강조 2 02
1년 전 오늘 플로팅 해당 기록이 있을 때만 회고 카드 노출 2 01
활동 흐름 시각화 사람별 기록 흐름을 차트형 UI로 표시 3 03
프로필 수정 등록된 사람 정보 수정 3 02

12. 공통 기준 (전 화면 공유)

전 화면(01~05)이 공유하는 제품 규칙을 여기 한곳에 확정한다. 각 화면 문서는 재정의하지 않고 이 절을 참조한다. 웹·모바일 공통 기준이므로 제품이 "무엇을" 하는지만 적고, 구현 방식(플랫폼별 "어떻게")은 담지 않는다.

비기능(공통): 모바일 우선 UI · 하단 내비 일관 유지 · 기록 작성 30초 목표(→ 04) · 프로필↔타임라인 탭 전환(→ 02·03) · 주요 CTA는 하단(엄지) 영역 · 사적 데이터라 개인 기록처럼 느껴지게.

12.1 하단 내비게이션

좌→우 5칸 고정 순서:

순서 슬롯 진입 화면 아이콘 의미
1 관계 대시보드(그래프/리스트 전환) — 01 관계 지도
2 타임라인 나의 통합 연대기(전역): 모든 기록을 시간순 — 05 시간 흐름
3 기록 작성(가운데 도드라진 버튼) — 04 더하기
4 사람 인물 목록(디렉터리): 조회·검색·추가 — 02 사람
5 설정 설정(칩 관리 등, 아래) 톱니
  • +는 라벨 없는 가운데 강조 버튼. 좌측=홈·타임라인, 우측=사람·설정. 홈·타임라인·사람·설정만 탭 선택 상태를 가진다. 현재 탭은 진한 톤, 나머지는 연한 톤(색 없이 흑백).
  • 이 구성이 확정 기준이며 스케치의 옛 내비(인사이트 포함본 등)를 대체한다. 인사이트 탭은 없다(복잡한 통계·인사이트는 MVP 제외, §6).
  • +(기록) 동작: 기록은 연결된 사람이 있어야 성립한다(최소 저장 = 연결할 사람 1명 이상). 인물 화면에서 진입하면 그 사람을 미리 채우고, 가운데 +로 진입하면 사람부터 고르게 하며, 사람이 0명이면 사람 추가로 안내한다. 기록 작성은 위에 겹쳐 뜨는 화면이라 탭 선택을 바꾸지 않는다.
  • 설정(MVP): ① 칩 관리(실제 기능 — 12.2) ② 앱 정보(버전 등). 알림·계정·테마·내보내기 등은 [post-MVP].

12.2 칩 개인화

칩 종류는 4가지(감정·날씨·카테고리·관계태그)이며 각 종류는 독립 세트다.

칩에는 두 갈래가 있다:

  • 공통용 칩: 서비스가 기본 제공하며 모든 사용자에게 보인다(아래 표의 기본 제공값).
  • 개인용 칩: 사용자가 직접 만든 칩으로 그 사용자에게만 보인다.
  • 칩을 고르는 곳(기록 작성 등)의 목록 = 공통용 + 그 사용자의 개인용 (공통용이 먼저, 개인용이 뒤).
종류 공통용(기본 제공, 순서대로) 선택 붙는 대상 필수 한 번에 고를 수
감정 반가움·뭉클·편안·즐거움·고마움·그냥 여러 개 기록 아니오 최대 5개
날씨 맑음·흐림·비·쌀쌀·더움 하나 기록 아니오 0~1개
카테고리 만남·연락·기념일·기타 하나 기록 정확히 1개(기본 만남)
관계태그 (공통용 없음 — 모두 개인용. 예: 소중한 친구·회사 동료) 여러 개 인물 아니오 인물당 최대 10개
  • 카테고리(기록의 성격)와 관계태그(인물의 라벨)는 서로 다른 종류다(통일하지 않음).
  • 개인용 칩: 사용자가 자유롭게 만들고·이름 바꾸고·지운다. 이름을 바꾸면 그 사용자의 지난 기록에도 반영되고, 지워도 이미 남긴 기록엔 남고 새로 고를 목록에서만 빠진다.
  • 공통용 칩: 모두에게 공유되므로 한 사용자가 바꾸거나 없앤다고 다른 사용자에게 영향을 주지 않는다(개인이 내리면 자기 목록에서만 감춘다).
  • 이름·개수: 칩 이름은 10자 이내, 같은 종류 안에서 중복 불가. 개인용은 종류별 최대 30개까지. 카테고리는 늘 최소 1개는 남긴다(기본값 만남).
  • 관리: 새 칩 만들기는 각 칩 선택 영역 끝의 + 추가. 개인용 칩의 이름 변경·삭제는 설정 → 칩 관리. 칩을 내려도 과거 기록은 지워지지 않으므로 전용 문구로 안내(아래 12.5).

12.3 글자수

각 입력의 글자수 한도. 넘으면 "최대 N자까지 쓸 수 있어요" 로 안내한다.

대상 한도
인물 이름 / 관계 유형 20자
칩·태그 이름 10자
기록 제목 40자
좋아하는 것 / 조심할 것 (각 항목) 30자
왜 / 무엇을 (각) 100자
  • 필수 항목이 비면 저장하지 않고 안내한다.

12.4 날짜·시간·표시 포맷

  • 날짜는 기기 로컬 기준. 처음 만난 날은 미래 불가, 마지막 만난 날은 처음 만난 날 이후·오늘 이하, 생일은 연도 생략 가능(생략 시 월 일만), 기록 언제는 기본 오늘·미래 불가(시간은 선택).
용도 포맷
절대 날짜(정보행) YYYY. M. D. 2019. 8. 3.
절대 날짜(타임라인 카드) YYYY.MM.DD (요일) [+ HH:mm] 2024.04.13 (토) 15:00
생일 M월 D일 + 다가오는 생일까지 D-n 3월 15일 · D-260
처음 만난 날 경과 N일째(만난 날=1일째) 2154일째
알고 지낸 기간 가장 큰 단위 1개 6년
  • 상대시간: 0일=오늘, 1일=어제, 213일=N일 전, 1459일=N주 전, 60~364일=N개월 전(30일=1개월로 내림), 365일 이상=N년 전.

12.5 공통 문구 (에러·빈 상태)

톤: 존댓말·담백·따뜻, 명령형 대신 권유형, 이모지 0~1개, 관계를 점수화·서열화·평가하는 표현 금지. 빈 상태 = 공감 한 줄 + 이어질 행동. 각 화면은 아래를 상황으로 참조해 재사용한다(문구를 새로 짓지 않는다).

상황 문구 버튼
홈·기록한 사람 0명 아직 기록한 사람이 없어요. 첫 사람을 추가해 관계를 남겨보세요. [+ 사람 추가]
타임라인 0건 아직 함께한 기록이 없어요. 첫 순간을 새겨보세요. [기록 작성]
필터 결과 0건 이 조건에 맞는 기록이 없어요. [필터 초기화]
기록·사람 없음 먼저 함께한 사람을 추가해 주세요. [+ 사람 추가]
필수 누락(이름) 이름을 입력해 주세요.
글자수 초과 최대 {N}자까지 쓸 수 있어요.
날짜 순서 오류 마지막 만난 날은 처음 만난 날 이후여야 해요.
미래 날짜 오늘보다 미래일 수는 없어요.
중복 이미 있는 항목이에요.
저장 실패 저장에 실패했어요. 잠시 후 다시 시도해 주세요.
칩 이름 없음 칩 이름을 입력해 주세요.
칩 개수 초과 칩은 종류별로 최대 30개까지 만들 수 있어요.
카테고리 최소 카테고리는 최소 1개가 필요해요.
삭제 확인(일반) 삭제하면 되돌릴 수 없어요. 삭제할까요? [취소] [삭제]
칩 삭제 확인 '{라벨}'을 목록에서 지울까요? 이미 기록한 칩은 그대로 남아요. [취소] [지우기]

빈 상태·필터 문구의 명사는 화면 대상에 맞춘다 — 홈에서 사람을 거를 땐 "이 조건에 맞는 사람이 없어요.", 타임라인에서 기록을 거를 땐 "…기록이 없어요."

12.6 아바타 · 이미지 · 접근성

  • 아바타: 사진이 없으면 이름 첫 글자로 모노그램(영문은 대문자 한 글자, 한글·이모지·숫자는 그대로). 색으로 사람을 구분하지 않고 하나의 흑백 톤으로 통일한다.
  • 이미지: 프로필 1장 / 기록 최대 5장, 각 10MB 이하, jpg·png·heic·webp. 프로필은 정사각으로 자르고 없으면 모노그램.
  • 접근성: 누르는 대상은 충분히 크게, 명암 대비는 충분히, 아이콘만 있는 조작 요소엔 낭독용 대체 설명 제공, 시스템 글자 확대에 레이아웃이 깨지지 않게 대응.

13. 성공 기준

  • 사용자가 첫 방문 후 사람 1명을 추가할 수 있다.
  • 사용자가 사람 프로필에서 관계 요약을 이해할 수 있다.
  • 사용자가 상황 기록 1개를 작성하고 사람별 타임라인에서 확인할 수 있다.
  • 사용자가 그래프뷰와 리스트뷰의 차이를 이해하고 전환할 수 있다.
  • 1년 전 오늘 기록이 없는 경우 플로팅이 보이지 않는다.
  • 즐겨찾기한 사람이 관계도에서 명확히 구분된다.

14. 리스크와 검증 질문

  • 사용자가 관계 정보를 직접 입력하는 것을 부담스러워하지 않을까?
  • 무엇을 입력 구조가 기록 작성에 충분히 자연스러울까?
  • 그래프뷰가 예쁘지만 실제로 탐색에 도움이 될까?
  • 리스트뷰와 그래프뷰 중 사용자가 더 자주 쓰는 방식은 무엇일까?
  • 1년 전 오늘 회고가 반갑게 느껴질까, 부담스럽게 느껴질까?
  • 좋아하는 것/조심할 것 입력이 관계를 따뜻하게 돕는가, 관리 대상으로 느껴지게 하는가?

문서 규칙

  • SSOT 원칙: 한 요구사항은 한 문서에서만 정의한다. 다른 문서에서 필요하면 링크로 참조한다.
  • 상세 스펙: 글자수·규칙·기본값·상태·문구 등은 각 화면 문서(공통은 §12 공통 기준)에 확정값으로 둔다.
  • 기획자 관점·플랫폼 무관: PRD는 웹·모바일 공통 기준이다. 기획자가 정하는 "무엇을"(값·규칙·문구·동작)만 적고, 개발자가 정하는 "어떻게"(세는 법·차단 방식·데이터 구조·컴포넌트·치수·성능)는 담지 않는다.
  • 변경 시: 요구사항을 바꾸면 해당 SSOT 문서만 고치면 되고, 참조하는 문서는 링크라 자동으로 최신을 가리킨다.