liuyun 19876fdadd chore(openspec): 归档 C1/C2/C3 change,spec 合并进主 specs
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-15 01:13:08 +08:00

35 lines
1.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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** 拒绝