# schedule-creation Specification ## Purpose TBD - created by archiving change weapp-fixes-and-schedule-creation. Update Purpose after archive. ## Requirements ### Requirement: Schedule page can create a new schedule The system SHALL provide a schedule creation entry on the schedule page that opens a form, collects required fields, and saves a new `DispatchSchedule` via the backend `POST /schedule` endpoint. #### Scenario: Open create schedule form - **WHEN** the user taps the "新增排班" button on `pages/schedule/schedule` - **THEN** a form popup opens with fields for team, work date, shift type, vehicles, staff, and remark #### Scenario: Select team - **WHEN** the user opens the team dropdown - **THEN** the system calls `GET /team/simple-list` and displays `{ value, label }` options #### Scenario: Select vehicles - **WHEN** the user opens the vehicle selector - **THEN** the system calls `GET /vehicle/simple-list` and displays vehicles by plate number #### Scenario: Select staff - **WHEN** the user opens the staff selector - **THEN** the system calls `GET /staff/simple-list` and displays staff by name #### Scenario: Save new schedule - **WHEN** the user fills the form and taps save - **THEN** the system calls `POST /schedule` with `teamId`, `teamName`, `workDate`, `shiftType` (`month_plan`/`emergency`), `vehicleIds`, `staffIds`, `status`, and `remark` - **AND** the popup closes and the schedule list for the selected date refreshes #### Scenario: Cancel create schedule - **WHEN** the user taps cancel or the mask area - **THEN** the popup closes without saving ### Requirement: Schedule creation follows V21-SOP prototype interaction The system SHALL align the schedule creation flow, field labels, and value mapping with the V21-SOP prototype. #### Scenario: Shift type mapping - **WHEN** the user selects "月计划" or "应急" - **THEN** the system stores the value as `month_plan` or `emergency` respectively before submitting to the backend #### Scenario: Form validation - **WHEN** the user attempts to save with missing required fields - **THEN** the system shows a validation message and does not call the backend