Skip to content

태스크 개요

ainote 의 첫 번째 1급 시민 — AI 가 직접 추가/수정/삭제하는 할 일.

핵심 모델 (실제 스키마)

ts
Task {
  id: string (UUID)
  content: string                  // 필수
  notes?: string                   // 자유 메모 / 상세
  due_date?: string (ISO 8601)
  due_time?: string ("HH:MM")
  start_date?: string (ISO 8601)   // 다일 이벤트
  is_all_day?: boolean
  is_important?: boolean
  category_id?: string (UUID)
  location?: string
  location_lat?: number
  location_lng?: number
  travel_time?: number             // 분
  repeat_rule?: string             // "daily" / "weekly" / "monthly" / RRULE
  notification_minutes_before?: number
  completed_at?: string (ISO) | null
}

자연어 → 구조화

Claude 에서 "내일 오전 10시 강남역에서 미팅, 30분 전 알려줘" →

json
{
  "content": "강남역 미팅",
  "due_date": "2026-05-08T10:00:00+09:00",
  "location": "강남역",
  "notification_minutes_before": 30
}

ainote MCP 가 시간 표현 ("내일", "다음주 화요일", "오후 3시") + 위치 + 알림 모두 파싱.

MCP 도구 5개

도구용도
create_task새 태스크 (필수: content)
update_task수정 (completed_at 으로 완료 처리)
delete_taskSoft delete (30일 후 영구)
list_tasks18개 필터 + 자연어
list_categories카테고리 목록

주요 필터 (18개 전체)

오늘 할 일      → status: pending, due_today: true
중요 표시만     → is_important: true
"회의" 검색     → search: "회의"
강남 관련       → location: "강남"
완료 (지난주)   → status: completed, completed_date_start: "...", completed_date_end: "..."
지난 마감       → overdue: true
알림 설정된     → has_notification: true

자동 백그라운드 작업 (Solid Queue)

Job주기설명
TaskCleanupJob매일 2시30일 지난 soft-delete 영구 삭제
TaskReminderJob5분마다마감 임박 알림 발송
NotificationSchedulerJob15분마다스케줄된 알림 처리
SmartNotificationSchedulerJob매시간일일 요약, 아침 브리핑
NotificationCleanupJob매일 4시3일 지난 읽은 알림 삭제
CleanupStaleFcmTokensJob매일 3시만료 FCM 토큰 정리

알림 채널

태스크 마감 임박 시 동시 발송:

  • 📱 iOS / Android 푸시 (FCM + APNs)
  • 💬 Telegram (계정 연동 시)
  • 🌐 Web Push (브라우저 PWA)
  • ⌚ Apple Watch (iOS 동기화)

다음

MIT License · ainote.dev