데이터 모델

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 규칙에서도 핵심입니다 — 같은 토픽에 페이지가 둘 이상 쌓이면 그 사이의 시간 차이페이지 타입 중복 을 신호로 묶어 보여줍니다.