# Feature: Scheduling & Publishing **Source:** VSMS Functional Requirements v1.1, Section 3 --- ## Shift Templates Admins manage the recurring schedule through weekly shift templates. Each template defines the base structure for a shift that repeats each week. **Template fields:** - Name (e.g. `Morning Shift`) - Day of week - Start time and end time - Minimum and maximum volunteer capacity (e.g. min 3, max 5) - Role requirements per shift (e.g. 1 Behaviour Team, 3 Dog Shelter Volunteers, 1 Dog Log Monitor) - Recurring volunteer assignments — volunteers assigned to a template automatically appear on every generated instance of that shift ### Template Requirements | FR ID | Requirement | Notes | |-------|-------------|-------| | **FR-S01** | Admin can create, edit, and delete shift templates. | Deleting a template does not affect already-generated shift instances. | | **FR-S02** | Admin manually triggers shift generation for a given period (e.g. a month). The system generates instances from all active templates for that period. Duplicate generation is prevented. | Auto-rolling generation is out of scope for MVP. | | **FR-S03** | Editing a shift template applies only to shift instances that have not yet been published. Published instances are protected from template changes. | Published instances can still be edited manually — see FR-S07/FR-S08. | --- ## Publishing Generated shift instances are in **draft (unpublished)** state until Admin publishes them. Publishing makes the schedule visible to volunteers and triggers notifications. | FR ID | Requirement | Notes | |-------|-------------|-------| | **FR-S04** | Admin manually publishes a month's schedule. On publish, each assigned volunteer receives a single email listing all their shifts for that month. | See [notifications.md](notifications.md) for details. | | **FR-S05** | Admin can unpublish a published month. All volunteers assigned to shifts in that month are notified that the schedule has been retracted. | Intended for accidental early-publish scenarios. | | **FR-S06** | Admin can see unconfirmed volunteers (those who have not acknowledged the monthly schedule email) flagged on the schedule view. | | --- ## Editing Published Shifts Admin can manually edit individual shift instances at any time, including after publishing. These edits do not affect the underlying template or other weeks. | FR ID | Requirement | Notes | |-------|-------------|-------| | **FR-S07** | Admin can adjust volunteer assignments on any individual shift instance (add or remove a specific volunteer for that occurrence only). | | | **FR-S08** | Admin can adjust the min/max volunteer headcount on any individual shift instance. | | | **FR-S09** | When Admin edits a published shift (assignments or capacity), all volunteers assigned to that shift have their confirmation status reset and must re-acknowledge. | Volunteers are notified of the change — see FR-N09. | | **FR-S10** | When Admin adds a volunteer to a shift mid-month (after publishing), that volunteer receives a notification about the newly added shift. | See FR-N10. | --- ## State Model ``` Template → [generate] → Draft Instance → [publish] → Published Instance ↓ Admin can edit (FR-S07/S08) Resets acknowledgement (FR-S09) ```