Coverage for session_buddy / utils / scheduler / models.py: 100.00%
36 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-04 00:43 -0800
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-04 00:43 -0800
1"""Data models for natural language scheduler.
3This module provides data models for reminders, scheduling context,
4and reminder types/statuses used throughout the scheduler system.
5"""
7from __future__ import annotations
9from dataclasses import dataclass, field
10from datetime import datetime
11from enum import Enum
12from typing import Any
15class ReminderType(Enum):
16 """Type of reminder."""
18 TASK = "task"
19 DEADLINE = "deadline"
20 RECURRING = "recurring"
21 SESSION_RELATIVE = "session_relative"
24class ReminderStatus(Enum):
25 """Status of a reminder."""
27 PENDING = "pending"
28 EXECUTED = "executed"
29 CANCELLED = "cancelled"
30 FAILED = "failed"
31 EXPIRED = "expired"
34@dataclass
35class NaturalReminder:
36 """Represents a reminder created from natural language."""
38 reminder_id: str
39 reminder_type: ReminderType
40 expression: str
41 scheduled_time: datetime
42 action: str
43 status: ReminderStatus = ReminderStatus.PENDING
44 created_at: datetime = field(default_factory=datetime.now)
45 executed_at: datetime | None = None
46 failure_reason: str | None = None
47 recurrence_pattern: str | None = None
48 metadata: dict[str, Any] = field(default_factory=dict)
51@dataclass
52class SchedulingContext:
53 """Context for scheduling operations."""
55 session_start: datetime | None = None
56 session_end: datetime | None = None
57 current_task: str | None = None
58 project: str | None = None
59 metadata: dict[str, Any] = field(default_factory=dict)