# 我的预约（兽医）— 功能需求

## 1. 文档说明

| 项 | 说明 |
| --- | --- |
| 模块名称 | 我的预约（兽医）（牧业疫病诊疗服务） |
| 目标 | 为**已绑定兽医身份**的登录用户提供「面向本人的诊疗预约」查询与处置能力：筛选预约单、查看详情、对**待确认**预约执行**确认接诊**或**拒绝接诊** |
| 使用端 | 业务后台（若依管理端）；登录用户须为「畜牧医疗资源管理」中为该兽医**已分配账号**的专家端角色用户 |
| 修订依据 | 同目录 `我的预约(兽医)功能需求-草稿.md`、界面原型；并关联分析 **我的预约（机构）**、**我的预约（专家）** 草稿与原型 |

本文档**仅描述功能需求与业务规则**，不涉及数据库表结构、接口路径、请求体字段命名、HTTP 报文、权限标识命名及技术栈选型。

---

## 2. 术语与业务对象

### 2.1 兽医预约单（一条记录）

- 表示牧民/用户在**移动端「预约服务」**中选择某位**已发布兽医**后提交的一条预约申请。  
- 预约单在业务上**归属该兽医**（与当前登录账号所绑定的兽医资源一一对应）；本模块**仅展示并操作「属于当前登录兽医」的单据**。  
- 一条预约单包含：预约人、预约日期、预约时段、联系方式、服务地址、服务需求、状态及（若已拒绝）拒绝理由等。

### 2.2 当前登录人（服务提供方视角）

- 指通过「畜牧医疗资源管理」**分配账号**（专家端角色，草稿约定角色编号 **100**）登录后台的**兽医本人**。  
- 列表与操作的数据范围：**自动限定为当前账号绑定的兽医资源 ID 下的预约记录**；不得查看或操作其他兽医的预约。

### 2.3 预约人（需求方）

- 在移动端填写预约信息的用户（姓名、电话、地址、需求等）；本模块**只读展示**，不在此维护预约人档案。

---

## 3. 关联需求分析（兽医 / 机构 / 专家）

三模块同属「**我的预约**」产品族：均为**服务提供方**在后台查看「指向自己的预约」。差异来自**预约对象类型**与**状态机复杂度**。

### 3.1 三端定位对照

| 维度 | 我的预约（兽医） | 我的预约（机构） | 我的预约（专家） |
| --- | --- | --- | --- |
| 所属业务 | 牧业疫病诊疗服务 | 牧业疫病诊疗服务 | 牧业养殖科技服务 |
| 预约对象 | **兽医人员**（移动端「预约服务-兽医」） | **诊疗机构**（「预约服务-诊疗机构」） | **科技专家**（「预约服务-专家」） |
| 账号来源 | 医疗资源管理-兽医**分配账号** | 医疗资源管理-机构**分配账号** | 科技资源管理-专家**分配账号** |
| 移动端提交后 | 进入 **待确认**，待兽医处置 | 进入 **已预约**（无待确认环节） | 进入 **待确认**，待专家处置 |
| 提供方处置 | **确认接诊 / 拒绝接诊** | **仅查看**（无确认/拒绝） | **确认接诊 / 拒绝接诊** |
| 拒绝理由 | 拒绝时**必填**（≤100 字） | 无 | 拒绝时**必填**（≤100 字） |
| 服务评价 | **本期不做**「查看评价」（见 **§3.3**） | 无 | **已完成**可「查看评价」及详情星级 |

### 3.2 状态模型对照

```mermaid
flowchart LR
    subgraph 兽医与专家["兽医 / 专家（需接单）"]
        A1[待确认] -->|确认接诊| B1[已确认]
        A1 -->|拒绝接诊| C1[已拒绝]
        A1 -->|用户取消| D1[已取消]
        B1 -->|业务闭环| E1[已完成]
        B1 -->|用户取消| D1
    end
    subgraph 机构["机构（登记制）"]
        A2[已预约] -->|用户取消| D2[已取消]
        A2 -->|业务闭环| E2[已完成]
    end
```

| 状态 | 兽医本模块 | 机构模块 | 专家模块 | 说明 |
| --- | --- | --- | --- | --- |
| **待确认** | ✓ | — | ✓ | 用户已提交，等待服务方确认或拒绝 |
| **已预约** | — | ✓ | — | 机构预约提交后即为此态（无接单动作） |
| **已确认** | ✓ | — | ✓ | 服务方已确认接诊；兽医/专家可 **完成接诊** |
| **已拒绝** | ✓ | — | ✓ | 服务方拒绝，须展示拒绝理由 |
| **已取消** | ✓ | ✓ | ✓ | 用户取消（或业务规则允许的取消） |
| **已完成** | ✓ | ✓ | ✓ | 服务已结束；专家端可延伸评价能力 |

> **本期约定（兽医）：** 状态取值与草稿一致，共 **五种**：待确认、已取消、已确认、已拒绝、已完成。**不出现**机构的「已预约」枚举，避免与「已确认」语义混淆。

### 3.3 与专家模块的差异（本期范围）

| 能力 | 兽医（本文档） | 专家（关联文档） |
| --- | --- | --- |
| 列表字段 | 含预约时段、服务地址、服务需求、拒绝理由 | 同左 |
| 待确认操作 | 查看、确认接诊、拒绝接诊 | 同左 |
| 已确认操作 | 查看、**完成接诊** | 查看、**完成接诊** |
| 已完成操作 | **仅查看** | 查看、**查看评价** |
| 详情-评价信息 | **不展示**星级与综合评价 | 已完成展示到场准时/服务态度/指导效果/综合评价 |
| 评价列表弹窗 | **无** | 有（评价人、评价时间、综合评价） |

若产品要求三端「已完成」体验一致，须单独立项将评价能力扩展到兽医端；**本期以兽医草稿为准，不实现评价相关功能**。

### 3.4 与机构模块的差异（本期范围）

| 能力 | 兽医（本文档） | 机构（关联文档） |
| --- | --- | --- |
| 列表字段 | **完整**（含时段、地址、需求、拒绝理由） | **精简**（预约人、日期、电话、状态） |
| 详情字段 | 同列表业务字段 | 含时段、地址、需求（详情比列表全） |
| 接单 | 有 | **无** |
| 状态筛选 | 五种 | 三种（已预约/已取消/已完成） |

机构侧为**登记查看型**；兽医侧为**接单处置型**，与专家侧处置逻辑对齐。

### 3.5 与上下游模块关系

| 上游/平行模块 | 关系 |
| --- | --- |
| **畜牧医疗资源管理** | 兽医须**已发布**且已**分配账号**，本模块才有数据与菜单入口；服务时段、服务周日、接诊方式等由资源管理维护，在**用户提交预约时**校验，本模块展示结果即可（**单日最大接诊人数**仅诊疗机构资源维护，不适用于兽医） |
| **移动端预约服务** | 用户选择兽医、填写预约信息并提交 → 生成 **待确认** 预约单；用户可在待确认/已确认等态**取消** → 本模块见 **已取消** |
| **我的预约（机构）** | 同一「预约服务」产品不同 Tab；**数据隔离**，不交叉列表 |
| **我的预约（专家）** | 同属预约服务族但业务域与资源表不同；**数据隔离** |
| **在线接诊（兽医）**（若实施） | 可与 **已确认** 预约衔接现场服务；完成服务后由业务规则将状态置为 **已完成**（具体触发方式由整体方案约定，本模块负责展示与只读） |

---

## 4. 预约状态与状态机（兽医）

### 4.1 状态定义

| 状态 | 含义 | 本模块可执行操作 |
| --- | --- | --- |
| **待确认** | 用户已提交，等待兽医确认或拒绝 | 查看、**确认接诊**、**拒绝接诊** |
| **已确认** | 兽医已确认，待履约 | 查看、**完成接诊** |
| **已拒绝** | 兽医已拒绝 | **仅查看**（须能看拒绝理由） |
| **已取消** | 预约已取消（通常为用户侧） | **仅查看** |
| **已完成** | 服务已结束 | **仅查看** |

### 4.2 状态迁移（兽医侧动作与用户侧）

```mermaid
stateDiagram-v2
    [*] --> 待确认: 用户提交预约
    待确认 --> 已确认: 兽医确认接诊
    待确认 --> 已拒绝: 兽医拒绝接诊(必填理由)
    待确认 --> 已取消: 用户取消
    已确认 --> 已完成: 服务完成(业务闭环)
    已确认 --> 已取消: 用户取消(若规则允许)
```

**兽医侧不得**将状态改为「已取消」或「已完成」；**不得**对已确认/已拒绝/已取消/已完成记录再次确认或拒绝。

### 4.3 并发与幂等

- 对同一条 **待确认** 记录，**确认接诊**与**拒绝接诊**互斥；成功后状态变更，重复点击应提示「当前状态不允许该操作」。  
- 若用户同时将预约取消为 **已取消**，兽医侧确认/拒绝应失败并提示状态已变更。

---

## 5. 功能范围

### 5.1 本期实现

| 能力 | 说明 |
| --- | --- |
| 分页列表 | 筛选 + 默认仅当前兽医预约；**§6.1** |
| 查看详情 | 全字段只读；**§6.2** |
| 确认接诊 | 仅 **待确认**；**§6.3** |
| 拒绝接诊 | 仅 **待确认**；必填拒绝理由；**§6.4** |

### 5.2 本期不实现

- **查看评价**、详情内星级与综合评价（见 **§3.3**，专家模块已有）  
- 兽医主动取消预约、代用户改期、改地址  
- 导出、批量确认/拒绝、消息推送配置  
- 机构/专家预约的跨类型查询  

---

## 6. 详细功能需求

### 6.1 预约记录列表

| 项 | 规则 |
| --- | --- |
| 数据范围 | **仅**当前登录账号绑定兽医的预约记录 |
| 分页 | 默认每页 **20** 条 |
| 排序 | 默认 **预约日期倒序**，同日按 **创建时间倒序**（或预约时段开始时间倒序，以实现为准，须稳定） |
| 工具栏 | **搜索**、**重置** |

**筛选条件**

| 筛选项 | 规则 |
| --- | --- |
| 预约人 | 选填；对**预约人姓名** **模糊**匹配 |
| 预约日期 | 选填；**起止日期** `startDate`、`endDate`（`yyyy-MM-dd`）；含起止日当天；`startDate` 不得晚于 `endDate` |
| 状态 | 选填；**精确**匹配五种状态之一；空则不过滤 |

**列表列（展示）**

| 列名 | 说明 |
| --- | --- |
| 预约人 | — |
| 预约日期 | `yyyy-MM-dd` |
| 预约时段 | `HH:mm~HH:mm`（开始~结束） |
| 联系电话 | — |
| 服务地址 | 过长可截断，详情看全文 |
| 服务需求 | 过长可截断 |
| 状态 | 标签展示，五种枚举 |
| 拒绝理由 | **已拒绝**时展示；其他状态可为空或「—」 |
| 操作 | 见 **§7** |

---

### 6.2 查看预约详情

| 项 | 规则 |
| --- | --- |
| 入口 | 任意状态均可「查看」 |
| 形式 | 弹窗或详情页，**只读** |
| 字段 | 预约人、预约日期（`yyyy-MM-dd`）、预约时段（`HH:mm~HH:mm`）、联系电话、服务地址、服务需求、**状态** |
| 拒绝理由 | 当状态为 **已拒绝** 时**必须展示**；其他状态不展示或展示为空 |
| 评价相关 | **本期不展示**（与专家模块区分） |

---

### 6.3 确认接诊

| 项 | 规则 |
| --- | --- |
| 前置 | 状态为 **待确认**；记录属于当前登录兽医 |
| 操作 | 用户点击「确认接诊」；宜二次确认（「确定接受该预约？」） |
| 结果 | 状态变为 **已确认**；记录操作人、操作时间（审计，若平台统一要求） |
| 拒绝 | 非待确认、已取消等 → 「当前状态不允许确认接诊」 |
| 成功后 | 列表刷新；移动端用户侧应同步为已确认（由整体预约服务保证） |

---

### 6.4 拒绝接诊

| 项 | 规则 |
| --- | --- |
| 前置 | 状态为 **待确认**；记录属于当前登录兽医 |
| 操作 | 用户点击「拒绝接诊」→ 弹出表单 |
| 拒绝理由 | **必填**；trim 后 **1～100** 字（字符计）；空或超长校验失败 |
| 结果 | 状态变为 **已拒绝**；拒绝理由落库并回显于列表/详情 |
| 取消弹窗 | 不提交则状态不变 |
| 拒绝 | 非待确认 → 「当前状态不允许拒绝接诊」 |

---

## 7. 操作与权限矩阵

| 操作 | 待确认 | 已确认 | 已拒绝 | 已取消 | 已完成 |
| --- | --- | --- | --- | --- | --- |
| 查看 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 确认接诊 | ✓ | — | — | — | — |
| 拒绝接诊 | ✓ | — | — | — | — |
| 完成接诊 | — | ✓ | — | — | — |

- 模块级：**列表查询**、**详情**、**确认**、**拒绝** 须按按钮粒度授权（具体标识由技术方案定义）。  
- 无「兽医」绑定关系的账号不应看到本菜单或列表为空。

---

## 8. 业务流程

### 8.1 模块总览

```mermaid
flowchart TD
    A[兽医登录后台] --> B[进入我的预约兽医]
    B --> C[列表筛选]
    C --> D{选择记录}
    D --> E[查看详情]
    D --> F{状态?}
    F -->|待确认| G[确认接诊]
    F -->|待确认| H[拒绝接诊+理由]
    F -->|其他| E
    G --> I[已确认]
    H --> J[已拒绝]
```

### 8.2 与移动端协同（牧民侧摘要）

1. 用户在「预约服务」选择兽医、日期时段并提交 → 兽医侧出现 **待确认**。  
2. 兽医 **确认** → 用户侧 **已确认**；兽医 **拒绝** → 用户侧 **已拒绝**并可见理由。  
3. 用户在允许状态下 **取消** → 兽医侧 **已取消**，确认/拒绝按钮消失。  
4. 服务完成后业务置 **已完成** → 兽医侧仅可查看（本期无评价入口）。

---

## 9. 提示约定（示例）

| 场景 | 示例文案 |
| --- | --- |
| 筛选 | 「结束日期不能早于开始日期」 |
| 拒绝理由 | 「请填写拒绝理由」「拒绝理由不能超过 100 字」 |
| 状态 | 「当前状态不允许确认接诊」「当前状态不允许拒绝接诊」「该预约已取消，无法操作」 |
| 范围 | 「未绑定兽医资源，无法查询预约」 |
| 成功 | 「确认接诊成功」「拒绝接诊成功」 |

---

## 10. 非功能建议

- 列表查询须带**当前兽医 ID** 条件，防止越权。  
- 确认/拒绝写操作日志。  
- 日期、时段展示格式与移动端、机构/专家模块保持一致。  
- 界面支持 i18n；状态标签颜色可与原型一致（待确认/已确认/已拒绝/已取消/已完成）。

---

## 11. 修订记录

| 版本 | 说明 |
| --- | --- |
| 2.0 | 依据兽医草稿与原型重写；补充与机构、专家关联分析；状态机与操作矩阵；明确本期不做评价；剔除技术栈与接口表述 |
