태스크 개요
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_task | Soft delete (30일 후 영구) |
list_tasks | 18개 필터 + 자연어 |
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 영구 삭제 |
TaskReminderJob | 5분마다 | 마감 임박 알림 발송 |
NotificationSchedulerJob | 15분마다 | 스케줄된 알림 처리 |
SmartNotificationSchedulerJob | 매시간 | 일일 요약, 아침 브리핑 |
NotificationCleanupJob | 매일 4시 | 3일 지난 읽은 알림 삭제 |
CleanupStaleFcmTokensJob | 매일 3시 | 만료 FCM 토큰 정리 |
알림 채널
태스크 마감 임박 시 동시 발송:
- 📱 iOS / Android 푸시 (FCM + APNs)
- 💬 Telegram (계정 연동 시)
- 🌐 Web Push (브라우저 PWA)
- ⌚ Apple Watch (iOS 동기화)