5. 노트와 페이지 — 두 레이어
v2 의 합성본 + 원본 합본 한 페이지 모델은 폐기됐습니다. v3 에서는 둘이 분리된 행으로 살고, 페이지에서 원본을 링크 로 따라갑니다.
5.1 왜 두 레이어인가
한 번의 대화는 보통 여러 주제를 동시에 다룹니다. 그걸 한 행으로 욱여넣으면:
- 토픽별 추출이 어렵고
- 한 주제만 나중에 갱신 할 때 다른 주제까지 영향을 받고
- 원본을 그대로 보존하자 는 카파시 규약이 깨집니다.
v3 는 이걸 분리합니다:
| 레이어 | 테이블 | 변경 가능? | 분류? | 한 줄 요약 |
|---|---|---|---|---|
| 노트(raw) | raw_items |
거의 불변 | 안 함 | 대화에서 떨어진 그대로 |
| 페이지(page) | notes |
자유롭게 | 토픽 + 타입 | 한 토픽 단위로 큐레이션 |
5.2 1 → N 분기
한 노트에서 페이지가 몇 개 나오느냐는 그 대화가 얼마나 다양한 주제를 다뤘느냐 에 달렸습니다. 일반적으로:
- 짧은 채팅 한 줄 → 페이지 0–1 개 (저장할 만큼은 아니거나, 한 토픽)
- 30 분짜리 작업 대화 → 페이지 2–4 개 (토픽 + 결정 + 학습 + 코드 스니펫)
- 한 시간짜리 페어 프로그래밍 세션 → 페이지 5+ 개 (인물별, 모듈별, 결정별)
페이지 디테일 화면 우측의 원본 보기 버튼으로 언제든 원본 노트로 돌아갈 수 있습니다. 거꾸로, 원본 노트 화면에서는 이 노트에서 추출된 페이지들 미니 인덱스가 페이지 목록으로 떠 있습니다.
5.3 페이지가 원본보다 자유로운 이유
페이지는 사용자가 손으로 다듬는 곳입니다. 헤딩을 추가하고, 멘션 칩을 더 박고, 결정의 결과 를 6 주 뒤에 추가로 적습니다. 그동안 원본은 그 시점의 대화 그대로 남아 있어서 — "내가 그 때 뭘 들었는지" 와 "지금 내가 어떻게 정리했는지" 가 분리됩니다.
이 분리는 린트 의 note_conflicts 규칙에서도 핵심입니다 — 같은 토픽에 페이지가 둘 이상 쌓이면 그 사이의 시간 차이 와 페이지 타입 중복 을 신호로 묶어 보여줍니다.