package models // AvailabilityBlock is one recurring weekly window of time the user has // manually declared as available (e.g. "weekday evenings 18:00-20:00"). // Reduced by real calendar events at computation time -- see // handlers.ComputeBudgetPeriod. type AvailabilityBlock struct { ID string `json:"id"` Weekday int `json:"weekday"` // 0-6, Sun-Sat StartTime string `json:"start_time"` // "18:00" EndTime string `json:"end_time"` // "20:00" Label string `json:"label"` } // BudgetPeriod is the scheduled-vs-available load for one window of time. // Purely informational -- no field here ever drives auto-scheduling. type BudgetPeriod struct { ScheduledMinutes int `json:"scheduled_minutes"` AvailableMinutes int `json:"available_minutes"` } // BudgetStatus bundles today's and this rolling week's load. Only present // on API responses when at least one budget-tracked task exists in the // wider (Week) window. type BudgetStatus struct { Today BudgetPeriod `json:"today"` Week BudgetPeriod `json:"week"` }