---
html:
embed_local_images: false
embed_svg: true
offline: false
toc: true
print_background: false
export_on_save:
html: true
---
```mermaid
flowchart TD
%% 开始
Start([开始服务流程]) --> A
%% 主要服务状态
A[技师出发] --> B[技师到达]
B --> C[开始服务]
C --> D[服务进行中]
D --> E[服务结束]
E --> F[用户确认技师离开]
F --> G[技师撤离]
G --> H[订单结算]
H --> EndNode([订单完成])
%% 技师出发阶段异常
A --> A1{用户取消订单?}
A1 -->|是| A2[客服介入沟通]
A2 --> A3{用户是否继续?}
A3 -->|是| A
A3 -->|否| A4[技师撤离]
A4 --> A5[扣除违约金]
A5 --> EndNode
A --> B1{技师终止订单?}
B1 -->|是| B2[客服介入沟通]
B2 --> B3{技师是否继续?}
B3 -->|是| A
B3 -->|否| B4[客服联系用户]
B4 --> B5{是否更换技师?}
B5 -->|是| B6[重新分配技师]
B6 --> A
B5 -->|否| B7[订单结束]
B7 --> EndNode
%% 技师到达阶段异常
B --> C1{线下用户取消订单?}
C1 -->|是| C2[客服介入沟通]
C2 --> C3{用户是否继续?}
C3 -->|是| B
C3 -->|否| C4[技师撤离]
C4 --> C5[扣除违约金]
C5 --> EndNode
B --> D1{联系不上用户?}
D1 -->|是| D2[技师等待]
D2 --> D3{等待>10分钟?}
D3 -->|否| D2
D3 -->|是| D4[技师撤离]
D4 --> D5[扣除违约金]
D5 --> EndNode
%% 服务进行中操作
D --> E1{用户结束订单?}
E1 -->|是| E2[更新订单状态]
E2 --> E
D --> F1{用户打赏?}
F1 -->|是| F2[创建打赏订单]
F2 --> D
D --> G1{用户加钟?}
G1 -->|是| G2[更新服务时长]
G2 -->G3{是否发生下一个客户服务时间冲突}
G3 -->|是|G4[客服介入]
G3 -->|否| G11
G4 --> G5{技师和下一个用户协商往后延时?}
G5 -->|下一个用户不同意| G6[下一个用户与平台继续协商]
G6 -->G7{是否同意更换技师}
G7 -->|是| G8[更换技师]
G7 -->|否| G9[订单结束]
G5 -->|下一个用户同意| G10[更改下一订单开始服务时间]
G11 --> D
%% 样式定义
classDef default fill:#f9f9f9,stroke:#333,stroke-width:2px
classDef startEnd fill:#b2dfdb,stroke:#004d40,stroke-width:2px
classDef process fill:#c8e6c9,stroke:#1b5e20,stroke-width:2px
classDef decision fill:#fff3e0,stroke:#e65100,stroke-width:2px
%% 应用样式
class Start,EndNode startEnd
class A,B,C,D,E,F,G,H process
class A1,B1,C1,D1,E1,F1,G1,A3,B3,B5,C3,D3 decision
click A href "#技师出发"
click A1 href "#技师出发中,用户取消订单"
click B1 href "#技师出发中,技师终止订单"
click B href "#技师到达"
click C1 href "#技师到达中,用户线下取消订单"
click D1 href "#技师到达,联系不上用户"
click D href "#开始服务"
click E1 href "#服务进行中,用户结束订单"
click F1 href "#服务进行中,用户打赏"
click G1 href "#服务进行中,用户加钟"
click E href "#服务结束"
click F href "#用户确认技师离开"
click G href "#技师撤离"
click H href "#订单结算"
```
#### 技师出发
**_后台逻辑:_**
1. 技师点击确认[出发](#出发)
#### 技师出发中,用户[取消订单](#用户取消订单)
**_后台逻辑:_**
1. 技师未到达前,用户点击[取消订单](#用户取消订单),算是订单结束,扣除违约金
TODO:技师到达前,用户取消订单,客服介入,联系用户,确认取消,订单取消,扣除违约金(50%项目金额+车费)
2. 线下客服介入,联系用户
#### 技师出发中,技师终止订单
**_后台逻辑:_**
1. 技师点击终止订单,扣除违约金,客服介入,联系技师
TODO: 技师无法线上终止订单,联系客服
#### 技师到达前,用户线下取消订单
**_后台逻辑:_**
1. 技师未到达前,用户线下[取消订单](#用户取消订单),算是订单结束,扣除违约金
TODO:技师到达前,用户取消订单,客服介入,联系用户,确认取消,订单取消,扣除违约金(50%项目金额+车费)
2. 线下客服介入,联系用户,联系技师
#### 技师到达,联系不上用户
**_后台逻辑:_**
1. 技师等待,等待时间超过 10 分钟,技师点击撤离,扣除违约金,订单结束
2. 客服介入,联系用户,联系技师
#### 开始服务
**_后台逻辑:_**
1. 技师点击开始服务,进行扫码
#### 服务进行中,用户结束订单
**_后台逻辑:_**
1. 用户点击[结束订单](#结束订单),算是服务结束
#### 服务进行中,用户打赏
**_后台逻辑:_**
1. 用户打赏,后台创建一个关联订单的子订单的打赏订单
TODO: 后台暂无打赏逻辑
#### 服务进行中,用户加钟
**_后台逻辑:_**
1. 用户获取[加钟项目列表](#获取项目列表-加钟)
1. 用户点击[加钟](#加钟),后台创建新的订单和目前的订单有关联即可
1. 在原有剩余的时长增加时长
#### 服务结束
**_后台逻辑:_**
1. 服务时长结束,服务结束
TODO:系统自动结束订单
#### 用户确认技师离开
**_后台逻辑:_**
1. 用户点击[确认技师离开](#确认技师离开)
#### 技师撤离
**_后台逻辑:_**
1. 技师点击[撤离](#撤离),订单结束
#### 订单结算
**_后台逻辑:_**
1. 订单结算