02-types-task
Dec 7, 2025
TaskNode
📁 관련 코드:
lib/types/nodes/task.ts
이메일에서 추출된 할일/요청을 저장합니다.
핵심 개념: Task vs Memory
왜 분리하는가?
Memory | Task | |
|---|---|---|
역할 | 정보 저장 | 액션 추적 |
상태 | 없음 (사실) | 있음 (pending → completed) |
시간 | occurredAt (발생 시점) | dueDate (마감 시점) |
Memory: "김철수가 보고서를 요청했다"라는 사실 Task: "보고서를 제출해야 한다"라는 할일
TaskStatus
상태 전이
상태별 쿼리 예시
TaskPriority
Priority vs Importance
TaskPriority | ImportanceTier | |
|---|---|---|
적용 대상 | TaskNode | MemoryNode |
의미 | 언제 해야 하나 | 얼마나 중요한 정보인가 |
예시 | URGENT = 오늘 해야 함 | CRITICAL = 계약금 정보 |
inferTaskPriority: 자동 우선순위
우선순위 결정 로직:
키워드 기반
urgent,asap,긴급,즉시→ URGENTimportant,중요,priority→ HIGH
마감일 기반
1일 이내 → URGENT
3일 이내 → HIGH
그 외 → NORMAL
People: Assignee vs Requester
사용 시나리오
왜 ID만 저장하는가?
대안 1: Person 객체 전체 포함
대안 2: ID만 저장하고 필요시 조회
sourceMemoryId: 원본 추적
왜 필요한가?
시나리오: "이 할일이 어디서 나온 거야?"
그래프 관계
Helper Functions
isTaskOverdue
체크 로직:
dueDate가 없으면 → false
COMPLETED/CANCELLED면 → false
현재 시간 > dueDate면 → true
completeTask
그래프에서의 관계
Factory 사용 예시
다음 문서
→ Implicit Relationships: 암시적 관계
→ MemoryNode: Task의 원본 Memory