# backend/order Specification ## Purpose 定义服务机构端工单域的后端行为——八态工单、派单/调单/取消、时间冲突硬拦、批量推荐。 ## Requirements ### Requirement: 派单前置校验 `POST /order/assign` MUST 按序校验:工单态 → 老人态(treat_status ∈ {active, waiting_period},否则 1001)→ 有计划(否则 1002)→ 护理员当班 → 时间冲突(2001 硬拦)→ 资质(1006 提示)。 #### Scenario: 无有效待遇不可派单 - **WHEN** 派单时老人 treat_status 非 active/waiting_period - **THEN** 返回 1001 拒绝 ### Requirement: 时间冲突硬拦 同 assignee_id 且 time_slot 重叠 MUST 拒绝(2001)。 #### Scenario: 同时段重叠 - **WHEN** 同一护理员已有 09:00-10:00 工单,再派 09:30-10:30 - **THEN** 返回 2001,拒绝保存 ### Requirement: 调单与批量推荐 `POST /order/:id/reassign` MUST 记 reschedule_log(改前改后/时间/操作人);`GET /order/batch-recommend` MUST 只返回推荐(权重:同资质→历史服务过→距离近→负荷低),不自动派单。 #### Scenario: 调单留痕 - **WHEN** 调单改派护理员 - **THEN** 写 reschedule_log 并通知新护理员 ### Requirement: 工单八态 order_status MUST 支持 to_assign/assigned/serving/done/abnormal/cancelled/overdue/not_met;取消必填 cancel_reason。 #### Scenario: 取消需原因 - **WHEN** 取消工单缺 cancel_reason - **THEN** 拒绝