# 🎯 Taskr의 실제 작동 방식

## 3.4 Notes - AI의 메모리 시스템

### 노트의 실체

노트는 단순한 텍스트가 아닙니다—이전의 일을 AI가 이해하도록 돕는 구조화된 기억입니다. 다음과 같이 생각하세요:
- 중요한 페이지에 붙인 **포스트잇**
- 교과서의 **여백 메모**
- 실험을 기록한 **연구 노트**

### 5가지 노트 유형

**FILE_LIST** 📁
- "이 5개의 파일을 수정했어"
- 무엇이 왜 수정되었는지 나열함
- 변경 범위(scope)를 추적하도록 도움

**PROGRESS** 📈
- "로그인 시스템을 완료했어!"
- 주요 마일스톤 및 성과
- 모든 사소한 작업이 아닌 큰 성과에만 사용됨

**CONTEXT** 📚
- "이러한 이유로 JWT 토큰을 사용하기로 했어..."
- 배경 정보 및 결정 사항
- 선택의 이유("why")

**FINDING** 🔍
- "유효성 검사에서 버그를 발견했어"
- "API가 예상과 다르게 데이터를 반환함"
- 발견한 내용, 문제점 및 해결책

**OTHER** 📝
- 그 외 모든 것
- 일반적인 관찰 사항
- 최후의 수단 카테고리

### 노트와 태스크의 연결 방식

모든 노트는 `task_id`를 사용하여 태스크에 "첨부"될 수 있습니다. 이를 통해 타임라인이 생성됩니다:

```
태스크 1.2: "로그인 폼 생성"
  └─ NOTE (FILE_LIST): login.tsx, auth.css 수정됨
  └─ NOTE (FINDING): 폼 라이브러리에 내장 유효성 검사가 있음
  └─ NOTE (PROGRESS): 로그인 폼 완료 및 작동 확인
```

나중에 작업할 에이전트는 각 태스크 중에 정확히 어떤 일이 일어났는지 확인할 수 있습니다!

### 노트 ID

각 노트는 `NT_ABC123XYZ...`와 같은 고유 ID를 갖습니다 (NT = Note). 웹 인터페이스의 노트 카드 모서리에서 이 ID를 볼 수 있습니다. "노트 NT_ABC123에서 언급했듯이..."와 같이 참조할 수 있습니다.

### 데이터베이스 구현

노트는 다음 정보를 포함하여 `notes` 테이블에 저장됩니다:
- PostgreSQL enum을 통한 엄격한 노트 유형 정의
- `search_notes` 함수를 위한 풀텍스트 검색 인덱싱
- 이력 보존을 위한 소프트 삭제(`deleted_at` 필드)
- 외래 키(foreign key) 관계를 통한 태스크 연결

---
