- New GET /api/logs/timeline endpoint joins TimerEvent with block/subject/session data
- New PATCH and DELETE /api/logs/timeline/{id} endpoints for editing/removing events
- LogView redesigned as a chronological timeline grouped by date
- Edit inline: timer events support type + time correction; notes support text edit
- Delete works for both auto events and manual notes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
48 lines
1.0 KiB
Python
48 lines
1.0 KiB
Python
from datetime import date, datetime
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class ActivityLogCreate(BaseModel):
|
|
child_id: int
|
|
subject_id: int | None = None
|
|
session_id: int | None = None
|
|
log_date: date
|
|
notes: str | None = None
|
|
duration_minutes: int | None = None
|
|
|
|
|
|
class ActivityLogUpdate(BaseModel):
|
|
notes: str | None = None
|
|
duration_minutes: int | None = None
|
|
subject_id: int | None = None
|
|
|
|
|
|
class ActivityLogOut(BaseModel):
|
|
id: int
|
|
child_id: int
|
|
subject_id: int | None
|
|
session_id: int | None
|
|
log_date: date
|
|
notes: str | None
|
|
duration_minutes: int | None
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class TimelineEventUpdate(BaseModel):
|
|
event_type: str | None = None
|
|
occurred_at: datetime | None = None
|
|
|
|
|
|
class TimelineEventOut(BaseModel):
|
|
id: int
|
|
event_type: str
|
|
occurred_at: datetime
|
|
session_date: date
|
|
child_id: int
|
|
child_name: str
|
|
block_label: str | None = None
|
|
subject_name: str | None = None
|
|
subject_icon: str | None = None
|
|
subject_color: str | None = None
|