# File, Link, And Media Usage Model

## 목적

메신저 안에서 많은 업무와 일상은 결국 `파일`, `링크`, `사진`, `짧은 캡처`, `자료 재발견`으로 귀결된다.  
채팅창에 메시지 전송만 잘 되는 수준으로는 업무 효율을 올릴 수 없다.  
이 문서는 KoTalk가 단순 대화 앱이 아니라 `작업 재료를 쉽게 주고받고 다시 찾는 도구`가 되기 위한 정보 구조와 UX 기준을 정의한다.

## 문제 정의

- 파일이 대화 속으로 묻혀 다시 찾기 어렵다.
- 링크가 많아질수록 어느 링크가 중요한지 구분되지 않는다.
- 사진과 이미지가 단순 첨부로만 취급되어 업무 흐름과 분리된다.
- 메신저를 파일 저장소처럼 쓰게 되지만 정작 나중에 찾기는 힘들다.
- 모바일에서는 업로드가 어렵고, 데스크톱에서는 정리가 부족하다.

## 핵심 원칙

### 1. 첨부는 메시지의 부속물이 아니라 재사용 자산이다

- 파일과 링크는 전송 순간보다 `나중에 다시 찾을 때` 가치가 커진다.
- 따라서 대화창 안 표현과 별개로 전용 재발견 경로가 반드시 있어야 한다.

### 2. 업무와 친근한 대화의 미디어 사용 목적은 다르다

- 업무는 문서, 캡처, 링크, 버전 파일, 검토 요청이 핵심이다.
- 친근한 소통은 사진, 짧은 영상, 음성, 반응, 공유 속도가 중요하다.
- 같은 첨부 시스템 위에서 우선 노출 방식은 달라져야 한다.

### 3. 전송보다 정리와 복귀가 더 중요하다

- 사용자는 보내는 순간보다 `그때 보낸 자료 어디 있지?`를 더 자주 경험한다.
- 파일·링크·미디어 탭은 첫 릴리즈부터 중요하다.

## 도메인 모델

- FileAsset
- LinkAsset
- ImageAsset
- AudioAsset
- AttachmentBundle
- PreviewCard
- SavedForLater
- RecentSharedItems
- ConversationResourceIndex

각 자산은 메시지와 연결되지만 독립 인덱스도 가진다.

## 파일 UX

## 업무 중심 시나리오

- 계약서 PDF 공유 후 상대 검토 여부 확인
- 회의 자료 슬라이드 전송
- 화면 캡처에 코멘트 붙여 전달
- 최신 버전 파일 교체
- 특정 방에서 오간 문서만 빠르게 모아 보기

## 설계 기준

- 파일 카드에 최소한 파일명, 크기, 유형, 업로드 시각, 보낸 사람, 간단한 상태를 표시한다.
- 동일 이름 파일의 후속 버전이 올라오면 `업데이트된 파일` 흐름으로 묶는다.
- 미리보기 가능한 형식은 가능한 범위에서 즉시 미리보기를 제공한다.
- 다운로드 버튼과 원본 열기 버튼의 의미를 분리한다.
- 데스크톱에서는 드래그 앤 드롭, 붙여넣기, 최근 파일 빠른 재첨부를 지원한다.

## 링크 UX

## 업무 중심 시나리오

- 문서 링크와 회의 링크를 구분해 찾기
- 여러 참고 링크를 한 번에 모아 전달
- 자주 보는 내부 위키 링크 재공유

## 설계 기준

- 링크는 도메인, 제목, 설명, 썸네일을 카드화한다.
- 회의 링크, 문서 링크, 작업 티켓 링크를 유형별로 구분한다.
- 사용자가 링크를 보내기 전에 짧은 설명을 붙일 수 있어야 한다.
- 대화별 링크 탭에서 최근 공유 링크를 시간순과 중요순으로 둘 다 볼 수 있어야 한다.

## 이미지/미디어 UX

## 친근한 소통 시나리오

- 사진 여러 장을 한 번에 보낸다.
- 대화 중 중요한 캡처를 빠르게 올린다.
- 이모지, 반응, 가벼운 이미지 공유가 많다.

## 업무적 시나리오

- 버그 스크린샷을 설명과 함께 보낸다.
- 비교 전후 이미지를 나란히 검토한다.
- 현장 사진을 메모와 함께 공유한다.

## 설계 기준

- 사진 여러 장은 묶음 갤러리로 보여 준다.
- 묶음 안에서도 개별 코멘트와 반응이 가능해야 한다.
- 이미지 확대 전환은 빠르고 단순해야 하며 과도한 애니메이션을 피한다.
- 모바일은 한 손 조작을 고려해 첨부 패널을 하단 시트 구조로 둔다.

## 검색과 재발견

### 대화 안에서 찾기

- `이 방의 파일`
- `이 방의 링크`
- `이 방의 사진`
- `내가 올린 자료`
- `최근 7일`

### 전체에서 찾기

- 파일명으로 찾기
- 보낸 사람으로 찾기
- 유형별 찾기
- 대화별로 묶어 보기
- `최근 본 파일 다시 열기`

### 저장 기능

- 중요한 자료는 `나중에 보기` 또는 `보관함`으로 저장한다.
- 보관함은 메모앱처럼 무겁게 가지 않고, 가벼운 북마크 허브 수준에서 시작한다.

## UI 원칙

- 첨부 패널은 컴팩트해야 한다.
- 버튼이 많아 보이지 않도록 사용 빈도 높은 순서로 노출한다.
- 모바일 웹에서는 `사진`, `카메라`, `파일`, `링크 붙여넣기`만 우선 노출하고 고급 기능은 감춘다.
- 데스크톱은 입력창 주변보다 드래그, 붙여넣기, 컨텍스트 메뉴에 무게를 둔다.

## 대화 타입별 우선순위

### 업무방

- 파일 탭과 링크 탭을 대화 헤더 바로 아래에서 잘 찾게 한다.
- 최근 공유 파일은 대화 정보 패널에 상시 노출한다.
- `마지막 파일 이후 무응답` 같은 상황을 쉽게 파악할 수 있어야 한다.

### 친한 대화

- 사진과 반응, 묶음 보기, 가벼운 공유가 핵심이다.
- 업무형 메타데이터는 최대한 숨긴다.

### 나에게 보내기

- 개인 임시 저장소 역할이 강하다.
- 클립보드 링크, 스크린샷, 파일, 메모가 빨리 쌓이고 빨리 다시 열려야 한다.

## 저장소 및 인프라 기준

- 원본 파일은 MinIO 등 객체 저장소를 전제로 한다.
- 썸네일, 미리보기, 원본 링크 만료 시간을 분리 관리한다.
- 링크 메타데이터 수집은 지연 실패를 허용해야 한다.
- 바이러스 검사, 확장자 정책, 용량 제한을 단계적으로 강화한다.

## 신뢰와 안전

- 민감 파일은 다운로드 경로를 짧게 노출하지 않는다.
- 공개 링크 재사용을 막고 대화 맥락 기반 권한을 둔다.
- 파일 삭제와 메시지 삭제의 관계를 사용자가 이해할 수 있게 해야 한다.
- 모바일 캐시에 남는 첨부는 최소화하고, 사용자가 정리할 수 있어야 한다.

## 실패 시나리오

- 업로드 중 네트워크 단절
- 모바일 백그라운드 전환으로 업로드 중단
- 미리보기 생성 실패
- 권한 없는 파일 접근
- 만료된 원본 URL

각 경우 사용자에게 `무엇이 올라갔고`, `무엇이 아직 안 끝났고`, `다음에 무엇을 누르면 되는지`를 명확히 보여 준다.

## 단계별 범위

### Alpha

- 파일 1개 업로드/다운로드
- 링크 프리뷰
- 대화별 파일/링크 탭
- 나에게 보내기 첨부

### Beta

- 다중 파일 첨부
- 이미지 갤러리
- 최근 공유 자료 허브
- 모바일 카메라/갤러리 연결

### Later

- 파일 버전 관리
- 인라인 주석
- OCR/텍스트 추출
- 스마트 추천 자료

## 완료 기준

- 사용자가 메신저를 `자료가 묻히는 곳`이 아니라 `자료를 다시 쉽게 찾는 곳`으로 인식해야 한다.
- 업무방에서 파일과 링크를 찾는 시간이 체감상 확실히 줄어야 한다.
- 친한 대화에서는 첨부가 부담스럽지 않고, 사적인 공유 흐름을 방해하지 않아야 한다.
