# 🎯 Taskrの仕組み

## 3.4 ノート - AIの記憶システム

### ノートの正体

ノートは単なるランダムなテキストではありません。AIが以前に何が起きたかを理解するのに役立つ、構造化された「記憶」です。次のように考えてください：
- **付箋** - 重要なページに貼られたメモ
- **余白の書き込み** - 教科書の端に書かれたメモ
- **ラボノート** - 実験の記録

### 5つのノートタイプ

**FILE_LIST** 📁
- 「これら5つのファイルを変更しました」
- 変更箇所とその理由をリスト化
- 変更範囲の追跡に役立つ

**PROGRESS** 📈
- 「ログインシステムを完了しました！」
- 主要なマイルストーンと成果
- 大きな成果のみを記録し、些細なタスクごとは記録しません

**CONTEXT** 📚
- 「JWTトークンを使用している理由は...」
- 背景情報と決定事項
- 選択の裏にある「理由」

**FINDING** 🔍
- 「バリデーションにバグを発見しました」
- 「APIが期待とは異なるデータを返します」
- 発見、問題、および解決策

**OTHER** 📝
- その他すべて
- 一般的な観察
- 最後の手段のカテゴリ

### ノートとタスクの紐付け

すべてのノートは `task_id` を使用してタスクに「添付」できます。これにより、次のようなタイムラインが作成されます：

```
Task 1.2: "Create login form"
  └─ NOTE (FILE_LIST): Modified login.tsx, auth.css
  └─ NOTE (FINDING): Form library has built-in validation
  └─ NOTE (PROGRESS): Login form complete and working
```

後続のエージェントは、各タスク中に何が起きたかを正確に確認できます！

### ノート ID

各ノートには `NT_ABC123XYZ...`（NT = Note）のような一意のIDが付与されます。Webインターフェースのノートカードの隅にこれらが表示されます。「ノート NT_ABC123 で述べたように...」といった形で参照できます。

### データベースの実装

ノートは以下の機能を備えた `notes` テーブルに保存されます：
- PostgreSQLの列挙型（enum）による厳密な型定義
- `search_notes` 関数のための全文検索インデックス
- 履歴を保持するための論理削除（deleted_at フィールド）
- 外部キー関係によるタスクの紐付け

---
