UMBRA/backend/app/schemas/reminder.py
Kyle Pope 5080e23256 Add real-time reminder alerts with snooze/dismiss
- Backend: GET /api/reminders/due endpoint, PATCH snooze endpoint,
  snoozed_until column + migration
- Frontend: useAlerts hook polls every 30s, fires Sonner toasts on
  non-dashboard pages (max 3 + summary), renders AlertBanner on
  dashboard below stats row
- Dashboard Active Reminders card filters out items shown in banner

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 23:15:56 +08:00

40 lines
995 B
Python

from pydantic import BaseModel, ConfigDict
from datetime import datetime
from typing import Literal, Optional
class ReminderCreate(BaseModel):
title: str
description: Optional[str] = None
remind_at: Optional[datetime] = None
is_active: bool = True
recurrence_rule: Optional[str] = None
class ReminderUpdate(BaseModel):
title: Optional[str] = None
description: Optional[str] = None
remind_at: Optional[datetime] = None
is_active: Optional[bool] = None
is_dismissed: Optional[bool] = None
recurrence_rule: Optional[str] = None
class ReminderSnooze(BaseModel):
minutes: Literal[5, 10, 15]
class ReminderResponse(BaseModel):
id: int
title: str
description: Optional[str]
remind_at: Optional[datetime]
is_active: bool
is_dismissed: bool
snoozed_until: Optional[datetime] = None
recurrence_rule: Optional[str]
created_at: datetime
updated_at: datetime
model_config = ConfigDict(from_attributes=True)