Add time-based day progress bar to dashboards

Replaces block-count progress with a wall-clock progress bar driven by
configurable day start/end hours on each schedule template.

- ScheduleTemplate: add day_start_time / day_end_time (TIME, nullable)
- Startup migration: idempotent ALTER TABLE for existing DBs
- Dashboard snapshot: includes day_start_time / day_end_time from template
- Admin → Schedules: time pickers in block editor to set day hours
- Dashboard view: time-based progress bar with start/current/end labels
- TV view: full-width day progress strip between header and main content

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-28 10:08:07 -08:00
parent 462205cdc1
commit 3e7ff2a50b
10 changed files with 213 additions and 38 deletions

View File

@@ -27,6 +27,8 @@ class ScheduleTemplateCreate(BaseModel):
name: str
child_id: int | None = None
is_default: bool = False
day_start_time: time | None = None
day_end_time: time | None = None
blocks: list[ScheduleBlockCreate] = []
@@ -34,6 +36,8 @@ class ScheduleTemplateUpdate(BaseModel):
name: str | None = None
child_id: int | None = None
is_default: bool | None = None
day_start_time: time | None = None
day_end_time: time | None = None
class ScheduleTemplateOut(BaseModel):
@@ -41,6 +45,8 @@ class ScheduleTemplateOut(BaseModel):
name: str
child_id: int | None
is_default: bool
day_start_time: time | None
day_end_time: time | None
blocks: list[ScheduleBlockOut] = []
model_config = {"from_attributes": True}