35 lines
1.4 KiB
Markdown
35 lines
1.4 KiB
Markdown
# 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** 拒绝
|