Files
mission-control-v2/backend/routers/reminders.py
T
Hitonabi 21ea7e1dd3 backend: Pydantic response_models für 5 GET-Endpoints hinzufügen
- health.py: HealthResponse
- eigenleben.py: EigenlebenOverviewResponse + SkillTextResponse
- chronik.py: ChronikResponse + ChronikItem
- wissen.py: WissenListResponse + WissenFileResponse
- reminders.py: ReminderListResponse + ReminderOut

py_compile bestanden, /docs zeigt neue Schemata.
Response-Payloads unverändert — nur Typisierung hinzugefügt.
2026-07-15 19:33:39 +02:00

52 lines
1.4 KiB
Python

"""Erinnerungen & Routinen (A3) — dünner REST-Layer über services/reminders.py.
Konsument ist v.a. der Hermes-Agent via mcp_mc.py (reminder_create/list/delete);
LAN-only wie alle MC2-Endpoints."""
from pydantic import BaseModel
from fastapi import APIRouter, HTTPException
from services import reminders
router = APIRouter(prefix="/api")
class ReminderIn(BaseModel):
text: str # was angesagt werden soll
when: str # ISO-8601; ohne Offset = Commander-Zeitzone (Europe/Berlin)
repeat: str = "" # '' einmalig | daily | weekdays | weekly
class ReminderOut(BaseModel):
id: int
text: str
next_ts: float
repeat: str
created_ts: float
when_local: str
class ReminderListResponse(BaseModel):
items: list[ReminderOut]
@router.get("/reminders", response_model=ReminderListResponse)
def list_reminders() -> dict:
return {"items": reminders.list_all()}
@router.post("/reminders")
def create_reminder(body: ReminderIn) -> dict:
try:
return {"ok": True, "item": reminders.create(body.text, body.when, body.repeat)}
except ValueError as exc:
raise HTTPException(400, str(exc))
@router.delete("/reminders/{reminder_id}")
def delete_reminder(reminder_id: int) -> dict:
try:
return {"ok": True, "deleted": reminders.delete(reminder_id)}
except KeyError as exc:
raise HTTPException(404, str(exc.args[0]))