대화를 기록하는 것이 아니라, 관계를 기억한다
AI 기반 관계 기억 서비스 — 프로젝트 문서
문서 안의 팀 결정 필요 표시는 아직 팀 합의가 안 된 항목입니다. 팀 회의에서 이 표시만 훑으면 결정 안건 리스트가 됩니다. 원본은 같은 저장소의 마크다운 문서 4종이며, 결정 사항은 양쪽에 함께 반영하세요.
DOCUMENT 01
프로젝트계획서
1. 프로젝트 개요
사람과의 대화를 AI가 대신 기억하고 관계 맥락을 축적해, 다음 만남에서 자연스럽게 이어갈 수 있도록 돕는 서비스
배경
- 현대인은 만나는 사람과 기억해야 할 대화가 계속 늘어나지만, 뇌의 용량은 그대로다. 지난 대화는 흐릿해지고, 같은 질문을 반복하고, 관계의 맥락이 끊어진다.
- 기존 도구(메모 앱, 회의록, 채팅 기록)는 정보를 문서 단위로 저장한다. 정보가 사람을 따라 축적되지 않아, 필요할 때 찾아내는 일은 여전히 사람의 몫이다.
- 이 문제는 기억력의 문제가 아니라 구조의 문제다. 해결 방향은 정보를 사람 기준으로 구조화하는 것이다.
핵심 컨셉
대화 → 요약 → 사람 매핑 → 날짜별 기록 → 관계 기억 축적
- 기록의 기본 단위가 다르다: 기존 서비스는 회의/문서 단위, 우리는 사람 단위
- 주 사용 장면은 1:1 대화 (영업 미팅, 커피챗, 상담, 인터뷰)
- 입력은 녹음 단일 채널: 1:1 대화 녹음 + 개인 녹음(본인 단독 음성 메모) 2가지 (기록 부담 최소화)
2. 경쟁 지형과 차별점
| 구분 | 대표 서비스 | 기록 단위 | 주 채널 |
|---|---|---|---|
| 미팅 AI | 클로바노트, Granola, Otter, Fathom | 회의 단위 | 음성 |
| 노트 앱 | Notion, Evernote | 문서 단위 | 텍스트 |
| AI 네이티브 CRM | Lightfield, Day AI, folk | 사람/딜 단위 | 이메일·캘린더 등 디지털 흔적 |
| 명함/인맥 | 리멤버 | 사람 단위 | 명함 |
| 본 서비스 | — | 사람 단위 | 대면·음성 (1:1 대화) |
- 해외 AI 네이티브 CRM은 이메일 등 디지털 채널의 자동 수집에 집중한다. 한국의 관계 형성은 대면·전화·커피챗 비중이 높아 디지털 흔적에 남지 않는 영역이 크다. 음성 우선 + 대면 1:1 + 사람 단위 축적이 본 서비스의 포지션이다.
- 주의할 통념: 기록 도구가 죽는 첫 번째 이유는 기능 부족이 아니라 입력 부담이다. 녹음 시작을 얼마나 무의식적으로 만드느냐가 리텐션의 핵심 변수다.
3. 목표와 성공 기준
- MVP 출시 — 1:1 대화 녹음 → AI 요약 → 사람별 타임라인 축적이 동작하는 모바일 앱
- 클로즈드 베타 운영 — 30~50명 규모, 유지율과 녹음 빈도 측정
- 모두의 창업 프로그램 산출물 제출 — P-S-S-D 사업계획서, 활동보고서
| 지표 | 정의 | 목표 |
|---|---|---|
| 유지율 | 베타 시작 후 N주차 잔존 사용자 비율 | 팀 결정 필요 |
| 녹음 빈도 | 사용자당 주간 대화 기록 수 | 팀 결정 필요 |
| 재조회율 | 기록한 인물 정보를 다시 열람하는 비율 | 팀 결정 필요 |
4. 범위
MVP 범위 (In Scope)
- 인물 등록/관리 (수동)
- 1:1 대화 녹음 (상대방 동의 절차 포함)
- 개인 녹음 (상대방 없이 본인 단독 음성 메모 — 동의 절차 불필요)
- STT (음성 → 텍스트 변환)
- AI 요약 및 키워드 추출
- 사람별 타임라인 축적 및 조회
- 회의(다자 대화)는 별도 항목으로 기록하여 1:1 구조를 해치지 않음
확장 범위 (Out of Scope — MVP 이후 백로그)
MVP 검증 결과에 따라 우선순위를 재조정한다. MVP 단계에서는 설계에 반영하지 않는다.
- 캘린더·메신저·연락처 연동 (자동 기록)
- 스마트워치 앱 (녹음 시작 편의성)
- 스마트글래스 (실시간 정보 표시), 안면 스캔
- 장소 저장 기능 (미팅 장소, 함께 간 곳)
- 회의록 전용 기능 고도화, 화자 구분
- 다국어 지원 (영어/일본어/중국어)
- 유료 플랜 (인물 수 제한, STT 분량 제한 기반)
5. 리스크 관리
| # | 리스크 | 영향 | 대응 |
|---|---|---|---|
| R1 | 녹음 습관이 형성되지 않아 리텐션 저하 (기록 도구의 최대 사망 원인) | 높음 | 녹음 시작 동선 최소화 설계, 베타에서 녹음 빈도 최우선 측정, 인터뷰로 동선 검증 |
| R2 | 녹음 동의의 심리적 허들 | 높음 | 동의 요청 UX 연구 (인터뷰 항목에 포함), 동의 없으면 녹음이 시작되지 않는 구조를 기본 원칙으로 유지 |
| R3 | 법적 리스크: 개인 메모 수준을 넘어 업무 목적 체계적 DB화로 판단될 경우 개인정보보호법 적용 | 중간 | 서비스화 단계에서 법적 재검토 (모두의 창업 법률 멘토링 활용), 최소 수집 원칙, B2B 확장 전 별도 검토 |
| R4 | STT/LLM API 비용 | 중간 | MVP는 사용량 상한 설정, 요금제 설계는 베타 데이터 기반으로 결정 |
| R5 | 자본력 있는 경쟁사의 유사 기능 출시 (Lightfield 등) | 중간 | 대면·음성·한국어 시장에 집중, 사람 단위 축적 데이터의 선점 효과 |
| R6 | 프로그램 일정 (멘토링 7/22 종료) 대비 산출물 지연 | 중간 | 사업계획서를 개발과 병행하여 우선 작성 |
산출물
- 본 문서 4종 (프로젝트계획서, 요구사항정의서, 아키텍처정의서, 화면기능정의서)
- P-S-S-D 사업계획서 (문제 인식 → 실현가능성 → 성장전략 → 향후 발전방안)
- 활동보고서 (프로그램 양식)
- MVP 앱 및 소스코드 저장소 (저장소 분리 예정, 팀 결정 필요)
DOCUMENT 02
요구사항정의서
1. 사용자 정의
핵심 타겟 (Primary)
사람과의 대화 및 관계 관리가 업무 성과와 직접 연결되는 직군.
- 회의가 많은 직군 (PM, 기획자)
- 영업 및 고객 미팅 직군
- 인터뷰어 / 상담사 / HR 담당자
확장 타겟 (Secondary)
- 다양한 사람을 자주 만나는 사용자
- 이전 대화를 기억하고 자연스럽게 이어가고 싶은 모든 개인
유저 스토리
| ID | 스토리 |
|---|---|
| US-01 | 영업 담당자로서, 고객 미팅 직후 별도 타이핑 없이 대화 내용이 정리되기를 원한다. 미팅 사이에 기록할 여유가 없기 때문이다. |
| US-02 | PM으로서, 다음 미팅 전에 상대방과의 지난 논의 맥락을 1분 안에 확인하고 싶다. 같은 질문을 반복하지 않기 위해서다. |
| US-03 | 상담사로서, 특정 인물을 검색하면 그 사람과의 모든 대화 이력이 시간순으로 보이기를 원한다. 파일을 뒤지고 싶지 않기 때문이다. |
| US-04 | 사용자로서, 녹음 전에 상대방 동의를 확인하는 절차가 명확하기를 원한다. 법적·윤리적 문제를 피하기 위해서다. |
| US-05 | 사용자로서, AI가 정리한 요약이 틀렸을 때 직접 수정할 수 있기를 원한다. 잘못된 기억이 축적되면 안 되기 때문이다. |
2. 기능 요구사항 (Functional Requirements)
우선순위: 필수 MVP 출시 조건 · 권장 MVP 내 포함 목표 · 선택 여유 시
인물 관리
| ID | 요구사항 | 우선순위 |
|---|---|---|
| FR-101 | 사용자는 인물을 등록할 수 있다 (이름 필수; 역할/직무, 소속, 관심사, 메모 선택) | 필수 |
| FR-102 | 사용자는 인물 정보를 수정·삭제할 수 있다. 인물 삭제 시 연결된 대화 기록 처리 방식을 확인받는다 | 필수 |
| FR-103 | 사용자는 인물 목록을 조회하고 이름으로 검색할 수 있다 | 필수 |
| FR-104 | 동명이인을 구분할 수 있다 (소속/메모 등 부가 정보로 식별) | 권장 |
대화 기록 (입력)
| ID | 요구사항 | 우선순위 |
|---|---|---|
| FR-201 | 사용자는 인물을 선택하고 1:1 대화 녹음을 시작할 수 있다 | 필수 |
| FR-202 | 1:1 대화 녹음은 시작 전 상대방 동의 확인 단계를 거쳐야 하며, 동의 확인 없이 녹음이 시작되지 않는다 (법적 검토 문서의 기본 원칙) | 필수 |
| FR-203 | 사용자는 녹음을 일시정지/재개/종료할 수 있다 | 필수 |
| FR-205 | 다자 회의는 "회의" 유형으로 구분하여 기록할 수 있다 (1:1 타임라인 구조와 분리) | 권장 |
| FR-206 | 녹음 중 앱이 중단되어도 그 시점까지의 녹음이 보존된다 | 권장 |
| FR-207 | 사용자는 인물을 선택하고 개인 녹음(상대방 없이 본인 단독 음성 메모)을 시작할 수 있다. 개인 녹음은 동의 확인 단계를 거치지 않는다 | 필수 |
FR-204 (텍스트 입력)는 MVP 범위 조정으로 삭제됨 (2026-07-06). 입력은 녹음 단일 채널로 통일.
변환 및 AI 처리
| ID | 요구사항 | 우선순위 |
|---|---|---|
| FR-301 | 시스템은 녹음된 음성을 텍스트로 변환한다 (STT, 한국어 우선) | 필수 |
| FR-302 | 시스템은 변환된 텍스트에서 요약을 생성한다 | 필수 |
| FR-303 | 시스템은 키워드(관심사, 주요 이슈)를 추출한다 | 필수 |
| FR-304 | 시스템은 추출 결과를 해당 인물의 프로필 정보(관심사/키워드)에 반영할 것을 제안한다 | 권장 |
| FR-305 | 사용자는 AI 처리 결과(요약, 키워드)를 저장 전에 확인하고 수정할 수 있다 | 필수 |
| FR-306 | AI 처리 실패 시(네트워크, API 오류) 원본 음성은 보존되고 재시도할 수 있다 | 필수 |
타임라인 및 조회
| ID | 요구사항 | 우선순위 |
|---|---|---|
| FR-401 | 확정된 기록은 해당 인물의 타임라인에 날짜순으로 축적된다 | 필수 |
| FR-402 | 사용자는 인물 상세 화면에서 프로필과 타임라인을 함께 조회할 수 있다 | 필수 |
| FR-403 | 사용자는 개별 기록의 상세(요약 전문, 키워드)를 조회할 수 있다 | 필수 |
| FR-404 | 사용자는 타임라인의 개별 기록을 수정·삭제할 수 있다 | 필수 |
| FR-405 | 사용자는 키워드로 기록을 검색할 수 있다 (인물 무관 전체 검색) | 권장 |
| FR-406 | 원본 녹음 파일 재생 기능 | 선택 |
계정 및 데이터 관리
| ID | 요구사항 | 우선순위 |
|---|---|---|
| FR-501 | 사용자는 계정을 생성하고 로그인할 수 있다 (방식: 팀 결정 필요 이메일/소셜) | 필수 |
| FR-502 | 사용자는 자신의 전체 데이터를 삭제(탈퇴)할 수 있다 | 필수 |
| FR-503 | 원본 음성 파일의 보존 정책을 설정할 수 있다 (요약 후 자동 삭제 / 보존) | 권장 |
3. 비기능 요구사항 (Non-Functional Requirements)
| ID | 분류 | 요구사항 |
|---|---|---|
| NFR-01 | 보안 | 대화 기록·인물 정보는 저장 시 암호화한다. 전송 구간은 TLS를 사용한다 |
| NFR-02 | 개인정보 | 최소 수집 원칙. 서비스 제공에 불필요한 개인정보는 수집하지 않는다 |
| NFR-03 | 개인정보 | 사용자 데이터는 본인만 접근 가능하다. 공유·조직 기능은 MVP 범위 외이며, 도입 시 개인정보보호법 재검토를 선행한다 (법적 검토 문서 참조) |
| NFR-04 | 성능 | 10분 분량 녹음 기준, 요약 완료까지 팀 결정 필요, 예: 2분 이내를 목표로 한다. 처리 중에도 앱 사용이 가능해야 한다 (비동기 처리) |
| NFR-05 | 플랫폼 | 모바일 앱 우선 (Android, iOS). 웹은 확장 범위 |
| NFR-06 | 언어 | 한국어 STT/요약 품질을 우선한다. 다국어는 확장 범위 |
| NFR-07 | 비용 | STT·LLM API 호출량을 측정·제한할 수 있어야 한다 (사용자당 상한 설정 가능 구조) |
| NFR-08 | 신뢰성 | 녹음 원본은 AI 처리 성공 여부와 무관하게 유실되지 않는다 |
4. 제약사항 및 용어
제약사항
- 상대방 동의 없는 녹음 기능은 제공하지 않는다 (제품 원칙이자 리스크 관리)
- MVP는 개인 사용 목적으로 한정한다. 제3자 공유·조직 단위 기능은 법적 재검토 전까지 구현하지 않는다
- 지원 기기: 스마트폰 (태블릿/워치/글래스는 확장 범위)
용어 정의
| 용어 | 정의 |
|---|---|
| 인물 (Person) | 사용자가 관계를 기억하려는 대상. 본 서비스의 기본 축적 단위 |
| 대화 기록 (Conversation) | 한 번의 기록 단위. 유형은 1:1 대화 녹음 또는 개인 녹음 |
| 개인 녹음 | 상대방 없이 사용자 본인이 특정 인물에 대한 생각·메모를 말로 남기는 녹음. 동의 절차 불필요 |
| 타임라인 (Timeline) | 특정 인물에 대한 대화 기록의 시간순 목록 |
| 관계 맥락 | 타임라인과 프로필(관심사, 이슈)이 누적되어 형성되는 인물별 종합 정보 |
DOCUMENT 03
아키텍처정의서
1. 설계 원칙
- 사람 단위 데이터 모델. 모든 기록은 Person에 귀속된다. 회의/문서 단위 구조를 만들지 않는다 (제품 차별점을 스키마 수준에서 보장).
- 입력 유실 금지. 녹음/텍스트 원본은 AI 처리 파이프라인과 분리 저장한다. AI 처리는 실패·재시도 가능한 비동기 작업으로 취급한다.
- 동의 우선. 동의 확인은 클라이언트 UX가 아니라 도메인 규칙이다. 동의 플래그 없는 녹음 세션은 서버가 거부한다.
- 확장 기능은 스키마만 열어둔다. 캘린더 연동, 장소, 워치 등은 MVP에 구현하지 않되, 데이터 모델이 막지 않도록만 설계한다.
- 외부 AI 서비스 교체 가능. STT/LLM은 어댑터 뒤에 두어 공급자 교체가 코드 한 곳 수정으로 끝나게 한다 (비용 협상력 확보).
2. 시스템 구성도
모바일 앱Android / iOS
화면 · 녹음 모듈 · 로컬 임시 저장
화면 · 녹음 모듈 · 로컬 임시 저장
↓ HTTPS (음성 업로드 · API 호출)
API 서버인증 · 도메인 로직
(인물/기록/타임라인)
(인물/기록/타임라인)
작업 큐AI 처리 작업 대기
비동기 워커STT → 요약 파이프라인
↓ 워커가 외부 API 호출 · 결과를 저장소에 기록
STT API외부 서비스
LLM API외부 서비스
주 DB인물 · 기록 · 타임라인
오브젝트 스토리지음성 파일
3. 핵심 파이프라인
앱인물 선택 → 기록 유형 선택 (1:1 대화 / 개인 녹음) → 1:1 대화인 경우에만 동의 확인 → 녹음
앱녹음 종료 → 음성 파일 업로드 (+ 유형, 동의 플래그, 인물 ID, 일시)
서버원본 저장 (오브젝트 스토리지) + Conversation 레코드 생성 상태: PENDING
워커STT 호출 → 전사 텍스트 저장 상태: TRANSCRIBED
워커LLM 호출 → 요약·키워드·프로필 반영 제안 생성 상태: SUMMARIZED
앱사용자에게 결과 제시 → 확인/수정 → 확정 상태: CONFIRMED
서버타임라인 반영, 인물 프로필 갱신
- 각 단계 실패 시 상태를
FAILED_*로 기록하고 원본을 보존, 재시도 가능 (FR-306, NFR-08) - 개인 녹음은 동의 확인 단계만 건너뛰며, 2단계 이후 파이프라인은 1:1 대화와 동일
4. 데이터 모델 차후 재정리
⚠️ 아래 모델은 방향성을 보여주는 참고 초안이며 확정본이 아니다. 개발 착수 전 재정리한다 (ADR-7). 지금 단계에서 이 스키마대로 작성하지 말 것.
기획 문서의 데이터 구조(Person → 기본 정보/역할/관심사/Timeline/관계 맥락)를 정규화한 것.
- idPK
- created_at
- idPK
- user_idFK → USER
- name이름
- role역할/직무
- affiliation소속
- memo메모
- idPK
- person_idFK → PERSON
- typeONE_ON_ONE | PERSONAL | MEETING
- statusPENDING … CONFIRMED
- consent_confirmed동의 확인 (ONE_ON_ONE 필수)
- occurred_at대화 일시
- idPK
- conversation_idFK
- object_key스토리지 경로
- duration_sec길이
- transcriptSTT 결과
- retentionKEEP | DELETE_AFTER_SUMMARY
- idPK
- conversation_idFK
- summary사용자 수정 반영본
- summary_originalAI 원본
- keywordsJSON
- profile_suggestions프로필 반영 제안
- idPK
- person_idFK → PERSON
- keyword키워드
- source_conversation_idFK
관계: USER 1—N PERSON · PERSON 1—N CONVERSATION · CONVERSATION 1—1 RECORDING · CONVERSATION 1—1 SUMMARY · PERSON 1—N PERSON_KEYWORD
설계 메모
- 타임라인은 별도 테이블이 아니라
CONVERSATION.occurred_at기준 조회 뷰다 (상태 CONFIRMED만 노출) type = ONE_ON_ONE이면서consent_confirmed = false인 생성 요청은 서버가 거부한다 (설계 원칙 3).PERSONAL(개인 녹음)은 동의 플래그 불필요SUMMARY.summary_original을 보존해 사용자 수정본과 AI 원본을 구분한다 (품질 개선 데이터로 활용)- 확장 대비 여지: PERSON에 연락처/장소 컬럼 추가 가능, CONVERSATION.type에 값 추가 가능. MVP에서는 구현하지 않는다
5. 기술 스택
| 영역 | 선택 | 비고 |
|---|---|---|
| 모바일 앱 | Flutter (확정) | 녹음 품질·백그라운드 녹음 플러그인(record, flutter_background_service 등) 사전 검증 필수 |
| API 서버 | Spring Boot / Java (확정) | API 전용 서버. AI 처리(STT/LLM 호출)는 비동기 잡으로 분리 |
| 주 DB | PostgreSQL (확정, 단독 운용) | 전사 원본 포함 전부 저장. 1시간 전사문 ≈ 100~200KB, TEXT 한도는 필드당 1GB이며 2KB 초과 값은 TOAST가 자동 압축·분리 저장. 전사문이 매우 커지면 오브젝트 스토리지로 이관 (DB엔 경로만) |
| 오브젝트 스토리지 | S3 호환 (AWS S3 / Cloudflare R2 / NCP Object Storage) | 음성 파일. 국내 리전 권장 (개인정보) |
| 작업 큐 | Spring 기준: @Async+DB 잡 테이블 → 필요 시 Redis 큐로 승격 | MVP는 단순한 것 우선. Kafka 등은 과설계 |
| STT | 무료 티어/무료 할당 API로 시작 → 품질·한도 문제 시 유료 전환 | 한국어 인식률 벤치마크 후 결정 (ADR-2). 후보: 클로바 스피치, Whisper API, Google STT 무료 할당 |
| LLM (요약/추출) | 무료 티어로 시작 → 이후 유료 API 전환 | 어댑터(설계 원칙 5) 뒤에 두어 전환 비용 최소화. ⚠️ 무료 티어는 입력 데이터의 학습 활용 약관이 흔함 — 대화 데이터 전송 전 약관 확인 필수 |
| 인증 | 소셜 로그인 (카카오/구글) + 자체 이메일 | 타겟이 국내 직장인이면 카카오 우선 고려. ADR-4 |
| 인프라 | 팀 결정 필요 | 베타 규모(50명)면 단일 서버 + 관리형 DB로 충분 |
전사문 한국어 전문검색(FR-405 확장)을 도입하게 되면 pg_trgm 또는 형태소 분석 확장이 필요하다. 검색 고도화 시점에 검토.
6. 보안 및 개인정보 설계
| 항목 | 설계 |
|---|---|
| 전송 암호화 | 전 구간 TLS |
| 저장 암호화 | DB 레벨 암호화 + 음성 파일 서버측 암호화(SSE). 민감 텍스트 필드 애플리케이션 레벨 암호화는 팀 결정 필요 |
| 접근 통제 | 모든 데이터는 user_id 스코프. 사용자 간 데이터 접근 경로 자체를 만들지 않음 (MVP) |
| 원본 음성 | 사용자 설정에 따라 요약 확정 후 자동 삭제 옵션 (RECORDING.retention) |
| 삭제권 | 탈퇴 시 전체 데이터 즉시 삭제 (스토리지 포함). 소프트 삭제(일정 기간 보관 후 완전 삭제) 여부 팀 결정 필요 |
| AI 학습 방지 | STT/LLM API 호출 시 데이터가 공급자 학습에 사용되지 않는 옵션/약관 확인 후 사용. 특히 무료 티어는 학습 활용 약관이 흔하므로 실사용자 데이터 전송 전 반드시 확인, 베타 사용자에게 고지 |
| 법적 경계 | 개인 메모 용도 한정. 조직 공유·체계적 DB화 기능 도입 시 개인정보보호법 재검토 선행 (법적 검토 문서 참조) |
7. 결정 대기 목록 (ADR 백로그)
결정할 때마다
adr/ 디렉터리에 한 장씩 기록 권장.| # | 결정 사항 | 상태 |
|---|---|---|
| ADR-1 | 모바일 프레임워크 선택 | ✅ 결정 — Flutter (2026-07-06) |
| ADR-2 | STT/LLM 공급자 선택 (무료 티어 한국어 벤치마크 결과 첨부, 학습 활용 약관 확인 포함) | 미정 — 개발 착수 전 |
| ADR-3 | 백엔드 프레임워크/언어 | ✅ 결정 — Spring Boot / Java (2026-07-06) |
| ADR-4 | 인증 방식 | 미정 — 앱 개발 전 |
| ADR-5 | 원본 음성 기본 보존 정책 (기본값: 삭제 vs 보존) | 미정 — 앱 개발 전 |
| ADR-6 | 인프라/배포 대상 | 미정 — 백엔드 착수 전 |
| ADR-7 | DB 구성 확정 / 데이터 모델 재정리 | DB는 ✅ 결정 — PostgreSQL 단독 (2026-07-06). 데이터 모델 재정리는 미정 — 개발 착수 전 |
DOCUMENT 04
화면기능정의서
1. 화면 목록
| ID | 화면명 | 목적 | 관련 요구사항 |
|---|---|---|---|
| SCR-01 | 온보딩/로그인 | 계정 생성, 서비스 소개, 약관 동의 | FR-501 |
| SCR-02 | 홈 (인물 목록) | 등록된 인물 조회·검색, 주요 진입점 | FR-103 |
| SCR-03 | 인물 등록/편집 | 인물 정보 입력·수정 | FR-101, FR-102 |
| SCR-04 | 인물 상세 (타임라인) | 프로필 + 대화 이력 시간순 조회, 기록 유형 선택 진입점 | FR-401~403 |
| SCR-05 | 녹음 동의 확인 | 1:1 대화 녹음에 한해 시작 전 상대방 동의 확인 | FR-202 |
| SCR-06 | 녹음 진행 | 녹음 제어 (1:1 대화 / 개인 녹음 공용) | FR-201, FR-203, FR-206, FR-207 |
| SCR-07 | AI 결과 확인/편집 | 요약·키워드 검수 후 확정 | FR-305, FR-304 |
| SCR-08 | 기록 상세 | 확정된 개별 기록 조회·수정·삭제 | FR-403, FR-404 |
| SCR-09 | 검색 | 키워드로 전체 기록 검색 | FR-405 |
| SCR-10 | 설정 | 계정, 음성 보존 정책, 데이터 삭제, 로그아웃 | FR-502, FR-503 |
2. 핵심 플로우
1:1 대화 녹음 플로우
SCR-02홈 → 인물 선택 →
SCR-04인물 상세 → + 기록 (1:1 대화) →
SCR-05동의 확인 →
SCR-06녹음 진행 → AI 처리 (비동기) →
SCR-07결과 확인/편집 → 확정 →
SCR-04타임라인 반영
개인 녹음 플로우
상대방이 없는 본인 단독 음성 메모. 동의 확인(SCR-05)을 거치지 않는 것이 1:1 플로우와의 유일한 차이다.
SCR-02홈 → 인물 선택 →
SCR-04인물 상세 → + 기록 (개인 녹음) →
SCR-06녹음 진행
동의 단계 없음 → AI 처리 (비동기) → SCR-07결과 확인/편집 → 확정 → SCR-04타임라인 반영
동의 단계 없음 → AI 처리 (비동기) → SCR-07결과 확인/편집 → 확정 → SCR-04타임라인 반영
다음 만남 전 조회 플로우
SCR-02홈 → 인물 검색 →
SCR-04인물 상세 → 최근 이슈 · 관심사 · 지난 대화 요약 즉시 확인
이 플로우가 서비스의 핵심 가치 순간이다. 3탭·10초 이내에 "지난번에 무슨 얘기 했더라"가 해결되어야 한다.
3. 화면별 상세 정의
구성 요소
서비스 소개 슬라이드 (최초 1회), 이용약관·개인정보처리방침 동의 체크, 로그인 버튼 (방식 팀 결정 필요)
기능
로그인/회원가입, 약관 동의 수집 (필수/선택 구분), 마이크 권한 요청 (최초 녹음 시점으로 지연 가능)
이동
로그인 성공 → SCR-02
예외
로그인 실패, 네트워크 오류 시 재시도 안내. 필수 약관 미동의 시 진행 불가
구성 요소
인물 카드 리스트 (이름, 소속/역할, 마지막 대화 일시, 최근 키워드 1~2개), 검색바, 인물 추가 버튼, 설정 진입
기능
인물 목록 조회 (정렬: 최근 대화순 기본), 이름 검색, 인물 추가
이동
인물 카드 → SCR-04 · 추가 → SCR-03 · 검색바 → SCR-09
빈 상태
인물 0명: 첫 인물 등록 유도 문구 + 버튼 (온보딩 직후 상태)
상태 표시
AI 처리 중인 기록이 있는 인물은 카드에 처리 중 인디케이터
구성 요소
입력 필드: 이름(필수), 역할/직무, 소속, 메모. 관심사/키워드(자동 축적, 편집 가능)
기능
저장, 수정, 삭제
이동
저장 → SCR-04 (신규) 또는 이전 화면
예외
삭제 시 확인 다이얼로그: 연결된 대화 기록 함께 삭제 여부 명시 (FR-102). 동명이인 등록 시 경고 없이 허용하되 소속으로 구분 표시
이 앱의 중심 화면. "사람 한 명을 떠올리면 그 사람에 대한 모든 것이 따라온다"를 구현한다.
구성 요소
상단: 프로필 (이름, 역할, 소속, 관심사 키워드 칩) · 중단: 타임라인 (날짜별 기록 카드 — 일시, 유형 배지(1:1/개인), 요약 첫 줄, 키워드) · 하단: 기록 추가 버튼
기능
타임라인 시간역순 조회, 기록 카드 탭 → 상세, 프로필 편집 진입, 기록 추가 시 유형 선택 (1:1 대화 녹음 / 개인 녹음)
이동
기록 추가(1:1 대화) → SCR-05 · 기록 추가(개인 녹음) → SCR-06 직행 · 기록 카드 → SCR-08 · 프로필 편집 → SCR-03
빈 상태
기록 0건: 첫 기록 유도 문구
상태 표시
처리 중(PENDING/TRANSCRIBED) 기록은 타임라인 상단에 처리 중 카드로 표시, 실패 시 재시도 버튼 (FR-306)
법적 검토 문서의 기본 원칙("동의 없이는 녹음이 시작되지 않는 구조")을 구현하는 화면. 우회 경로를 두지 않는다. 개인 녹음(본인 단독)은 이 화면을 거치지 않는다.
구성 요소
동의 안내 문구 (예: "상대방에게 기록을 위해 녹음함을 알리고 동의를 받았나요?"), 동의 확인 버튼, 취소
기능
동의 확인 체크 → 녹음 시작 가능. 동의 플래그는 기록에 저장됨 (consent_confirmed)
이동
동의 확인 → SCR-06 · 취소 → 이전 화면
설계 노트
문구 톤은 사용자 검증(인터뷰)에서 심리적 허들을 관찰 후 다듬는다. 반복 사용자를 위한 축약 UX(예: 확인 1탭)는 허용하되 생략은 불가
구성 요소
기록 유형 표시 (1:1 대화 / 개인 녹음), 경과 시간, 파형 또는 녹음 인디케이터, 일시정지/재개, 종료, 취소
기능
녹음 제어. 백그라운드 전환 시에도 녹음 유지 (Flutter 백그라운드 녹음 플러그인 검증 팀 결정 필요). 주기적 로컬 임시 저장 (FR-206). 종료 시 유형(ONE_ON_ONE/PERSONAL)과 함께 업로드
이동
종료 → 업로드 시작 + SCR-04 복귀 (처리 중 카드 표시)
예외
취소 시 확인 다이얼로그 ("녹음을 삭제할까요?"), 저장 공간 부족·마이크 권한 거부 처리, 업로드 실패 시 로컬 보관 후 자동 재시도
잘못된 기억이 축적되는 것을 막는 품질 게이트 (US-05).
구성 요소
요약 (편집 가능), 키워드 칩 (추가/삭제 가능), 프로필 반영 제안 (예: "관심사에 'MSA' 추가?" — 개별 수락/거절), 확정 버튼
기능
요약·키워드 수정, 프로필 제안 처리, 확정 → 타임라인 반영
이동
확정 → SCR-04
예외
확정 전 이탈 시 임시 저장 (미확정 상태 유지, 타임라인 미노출)
구성 요소
일시, 유형 (1:1/개인/회의), 요약 전문, 키워드, 전사 전문 보기 (STT 원문 — 접힘 상태 기본), (보존 시) 원본 음성 재생 (FR-406, 선택)
기능
요약 수정, 기록 삭제, 전사 전문 열람
이동
뒤로 → SCR-04
구성 요소
검색바, 결과 리스트 (인물 결과 + 기록 결과 구분 표시)
기능
인물명 검색 (필수), 키워드/요약 내용 검색 (권장, FR-405)
이동
인물 결과 → SCR-04 · 기록 결과 → SCR-08
구성 요소
계정 정보, 원본 음성 보존 정책 (요약 후 삭제/보존), 로그아웃, 데이터 전체 삭제(탈퇴), 약관/개인정보처리방침, 앱 버전
기능
보존 정책 변경 (FR-503), 로그아웃, 탈퇴 (FR-502 — 2단계 확인)
예외
탈퇴는 되돌릴 수 없음을 명시, 확인 문구 입력 등 안전장치
4. 공통 UI 규칙
- 처리 중 상태는 항상 보인다. AI 처리(STT/요약)는 수 초~수 분 걸릴 수 있다. 사용자가 "내 녹음이 사라졌나?"라고 느끼는 순간 신뢰가 깨진다. 처리 중/실패/재시도 상태를 타임라인에서 숨기지 않는다.
- 처리 완료 알림: 앱이 백그라운드일 때 AI 처리 완료를 푸시 알림으로 알릴지 여부 팀 결정 필요. 알림 없이는 사용자가 결과 확인(SCR-07)에 진입할 계기가 없다는 점을 고려할 것.
- 파괴적 동작은 2단계 확인. 인물 삭제, 기록 삭제, 탈퇴.
- 오프라인 허용 범위: 녹음은 오프라인 가능 (로컬 보관 후 업로드), 조회는 온라인 필수 (MVP 기준, 캐시 전략은 팀 결정 필요).
- 디자인 시스템 (색상, 타이포, 컴포넌트): 팀 결정 필요 — 별도 디자인 문서로 분리 권장.
5. 미결 검토 항목
이번 점검에서 화면 정의가 없거나 결정이 필요한 것으로 확인된 항목.
| # | 항목 | 상태 |
|---|---|---|
| 1 | 회의 유형(FR-205, 권장) 기록 화면 — 현재 미정의. MVP에서 구현 시 SCR-04 유형 선택에 "회의" 추가 필요 | 팀 결정 필요 |
| 2 | 빠른 녹음: 인물 선택 없이 홈에서 바로 녹음 시작 → 종료 후 인물 매핑. 입력 부담(R1)을 더 줄이는 안이나 플로우가 복잡해짐 | 검토 제안 |
| 3 | AI 처리 완료 푸시 알림 도입 여부 (공통 규칙 참조) | 팀 결정 필요 |