pub fn generate_shift_ics(
start_date: NaiveDate,
end_date: NaiveDate,
config: &ShiftCycleConfig,
team_phase_offset: u32,
team_id: u32,
alarms: Option<&AlarmConfig>,
timezone: &str,
) -> StringExpand description
Generate an ICS calendar file covering a date range.
One VEVENT per day. Night shifts cross midnight (DTSTART 22:00 → DTEND next day 06:00). Rest/Study are all-day events. Morning/Afternoon have configurable start times.