# 🎯 Taskr의 실제 작동 방식

## 3.3 Tasks - 구성 요소

### 태스크 계층 구조 이해하기

태스크는 문서의 개요처럼 구성됩니다:

```
1.0 사용자 인증 구축 (상위 태스크)
  1.1 데이터베이스 테이블 설정 (하위 태스크)
    1.1.1 사용자 테이블 생성 (하위-하위 태스크)
    1.1.2 비밀번호 해싱 추가
  1.2 로그인 페이지 생성
    1.2.1 로그인 폼 디자인
    1.2.2 유효성 검사 추가
  1.3 로그아웃 구현
```

**영리한 부분:** 1.1.1과 1.1.2가 모두 완료되면 1.1은 자동으로 완료됩니다. 1.1, 1.2, 1.3이 모두 완료되면 1.0이 스스로 완료됩니다!

### 태스크 유형 설명

각 태스크에는 AI에게 어떤 종류의 작업인지 알려주는 유형이 있습니다:

- **setup** 🔧 - 준비 작업 (패키지 설치, 폴더 생성)
- **analysis** 🔍 - 분석 및 파악 (API 조사, 접근 방식 계획)
- **implementation** 💻 - 실제 구축 (코드 작성, 기능 생성)
- **validation** ✓ - 작동 확인 (로직 체크, 코드 리뷰)
- **testing** 🧪 - 작동 증명 (테스트 작성, 테스트 수트 실행)

### 태스크 상태 흐름

태스크는 컨베이어 벨트처럼 상태를 이동합니다:

1. **open** ⭕ - 시작 대기 중
2. **wip** 🔄 - 현재 작업 중 (Work In Progress)
3. **done** ✅ - 성공적으로 완료됨
4. **skipped** ⏭️ - 의도적으로 건너뜀 (필요하지 않음)

### 단일 태스크 원칙

매우 중요한 점이 있습니다: **AI는 한 번에 하나의 태스크만 작업할 수 있습니다.**

왜일까요? 멀티태스킹은 혼란을 야기하기 때문입니다! AI가 태스크를 "wip"으로 표시하면, `wip_agent_id` 필드를 통해 독점적인 소유권을 갖게 됩니다. 다른 어떤 에이전트도 이를 건드릴 수 없으며, 이 에이전트는 현재 태스크를 마칠 때까지 다른 태스크를 시작할 수 없습니다.

이는 PostgreSQL 트리거와 MCP 핸들러 코드를 통해 데이터베이스 수준에서 강제됩니다!

### 새 태스크 생성하기

AI는 `create_task` 도구를 사용하여 태스크를 생성합니다:

```
AI: "이 작업을 더 작은 조각으로 나누어야겠어"
생성: 현재 태스크 아래의 하위 태스크 또는 완전히 새로운 태스크 리스트
속도: 즉시
제어: AI가 사용자의 요구 사항에 따라 구조를 결정함
```

**팁:** 규모가 큰 프로젝트의 경우, 요구 사항을 먼저 AI 채팅에 붙여넣으세요. 그러면 AI가 더 철저하고 잘 구성된 태스크 계층 구조를 생성할 것입니다.

### `get_task`의 마법

AI가 `get_task`를 호출할 때 내부적으로 일어나는 일은 다음과 같습니다:

1. **기존 WIP 확인** - "내가 이미 작업 중인 것이 있는가?"
2. **논리적인 다음 태스크 탐색** - "순서상 다음 'open' 상태의 태스크는 무엇인가?"
3. **WIP로 표시** - "이제 이건 내 거야!"
4. **전체 컨텍스트 반환** - 태스크 상세 정보 + 노트 + 가이드 규칙
5. **충돌 방지** - 다른 어떤 에이전트도 이 태스크를 점유할 수 없음

데이터베이스 함수인 `get_task_for_agent`가 이 모든 과정을 원자적(atomically)으로 처리합니다!

---
