21ea7e1dd3
- 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.
31 lines
819 B
Python
31 lines
819 B
Python
"""Chronik — die lesbare Timeline dessen, was die Box von allein getan und gemeldet hat.
|
|
Quelle ist der persistente Melde-Briefkasten (services/announce.py): Health-Wächter,
|
|
Auto-Updates, Erinnerungen, Radar/Traum/Chef-Gutachter-Crons, Auftragsbuch — alle
|
|
autonomen Kanäle laufen dort bereits durch. Hier wird nichts Neues erhoben, nur erzählt."""
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from fastapi import APIRouter
|
|
|
|
from services import announce
|
|
|
|
router = APIRouter(prefix="/api")
|
|
|
|
|
|
class ChronikItem(BaseModel):
|
|
id: int
|
|
ts: float
|
|
subject: str
|
|
text: str
|
|
source: str
|
|
priority: str
|
|
|
|
|
|
class ChronikResponse(BaseModel):
|
|
items: list[ChronikItem]
|
|
|
|
|
|
@router.get("/chronik", response_model=ChronikResponse)
|
|
def chronik(limit: int = 150) -> dict:
|
|
return {"items": announce.list_recent(limit)}
|