# 畜牧医疗资源管理 — 功能需求

## 1. 文档说明

| 项 | 说明 |
| --- | --- |
| 模块名称 | 畜牧医疗资源管理（牧业疫病诊疗服务） |
| 目标 | 在业务后台统一维护**兽医人员、专家团队、诊疗机构、医疗设备**四类医疗资源，支持分类检索、发布至移动端展示，并为诊疗预约、兽医/机构端登录等下游能力提供主数据 |
| 关联系统 | 业务后台；移动端资源展示；平台账号体系 |
| 修订依据 | 同目录 `畜牧医疗资源管理功能需求-草稿.md`、界面原型（列表 Tab、新增动态表单） |

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

---

## 2. 术语与业务对象

### 2.1 医疗资源（一条台账记录）

- 表示可在后台登记、经发布后在移动端对外展示的一类**牧业疫病诊疗相关资源**。  
- 由授权用户在后台**手工维护**；外部系统自动落账可在实施阶段扩展，**本期默认手工登记为主**。  
- 每条记录归属**唯一资源类型**；类型在首次保存后**不可变更**（若需改类型，应删除后按新类型重新登记）。

### 2.2 资源类型（固定四类）

类型编码来自资讯类别 **`parentCode=004`、`categoryType=6`**（接口 `GET /category/informationCategory/children`），落库字段 `resource_type` 为 **varchar**，存叶子 **`code`**（如 `004001` 兽医人员）。

| 编码 | 类型名称 | 业务定位 | 典型用途 |
| --- | --- | --- | --- |
| `004001` | **兽医人员** | 个体执业兽医 | 展示资质与服务能力；多种接诊方式；可分配登录账号 |
| `004002` | **专家团队** | 科研或临床专家集体 | 展示团队实力；**不**分配登录账号 |
| `004003` | **诊疗机构** | 动物诊所/动物医院 | 展示机构资质、地址与服务容量；可分配登录账号 |
| `004004` | **医疗设备** | 可对外介绍或预约关联的设备 | 展示设备信息；**不**分配登录账号 |

用户**不可**自定义第五类或修改上述类型含义（扩展须在资讯类别中维护后由系统识别）。

### 2.3 界面组织方式

| 形态 | 规则 |
| --- | --- |
| **分库列表** | 四个 **Tab**：兽医人员库、专家团队库、诊疗机构库、医疗设备库；**切换 Tab 即切换当前资源类型**，列表仅展示该类型 |
| **资源类型筛选** | 顶部下拉与 **Tab 联动**：切换 Tab 时下拉同步；在下拉选择类型时切换到对应 Tab |
| **动态表单** | 新增/编辑时按资源类型**切换字段集**；不得混用其他类型的必填项 |

### 2.4 发布状态与移动端

用**发布状态**控制移动端是否展示；并与后台「能否改删」绑定（见 **§6**）。

| 状态 | 含义 | 移动端 | 后台维护（摘要） |
| --- | --- | --- | --- |
| **未发布** | 已保存，未对外开放 | 不可见 | 可查看、编辑、删除、发布；兽医/机构可「分配账号」（未分配过） |
| **已发布** | 已对移动端生效 | 可见、可被下游引用 | **仅可查看、下架**；不可编辑、删除、新分配账号 |
| **已下架** | 曾发布，已撤回对外展示 | 不可见 | **权限同未发布**：可编辑、删除、再次发布；列表宜单独显示「已下架」标签 |

**允许的状态迁移：**

```mermaid
stateDiagram-v2
    [*] --> 未发布: 新增保存
    未发布 --> 已发布: 发布
    已发布 --> 已下架: 下架
    已下架 --> 已发布: 再次发布
```

> **已发布**期间：任何修改、删除、分配账号操作均应拒绝并提示先下架。

### 2.5 删除与可见性

- 采用**逻辑删除**：删除后默认不在列表展示，数据保留供审计；**本期无**回收站。  
- **已发布**须先**下架**再删除。  
- **已分配账号**（兽医/机构）：删除资源时**同时删除**关联的平台用户账号（与草稿 §10 一致）。  
- 若存在有效预约等下游引用，**宜禁止删除**并提示「存在关联业务，无法删除」（默认建议）。

### 2.6 列表筛选与字段关系

| 筛选项 | 规则 |
| --- | --- |
| 资源类型 | 与当前 **Tab** 一致；精确匹配 |
| 资源名称 | 选填；对展示名称（姓名/团队名/机构名/设备名）**模糊**匹配 |
| 发布状态 | 选填；**未发布 / 已发布 / 已下架** 精确筛选；空则不过滤 |

---

## 3. 功能范围

### 3.1 本期实现

| 能力 | 说明 |
| --- | --- |
| 四类资源 Tab 列表 | 分页、筛选；**§5.1** |
| 新增 | 动态表单；保存为 **未发布**；**§5.2～§5.7** |
| 修改 | 仅 **未发布、已下架**；**§5.8** |
| 查看 | 全状态只读；**§5.9** |
| 逻辑删除 | 仅 **未发布、已下架**；**§5.10** |
| 发布 / 下架 | 同步/撤回移动端；**§5.11** |
| 分配账号 | 仅兽医、机构；每条仅成功一次；**§5.12** |
| 照片 | 单图上传；**§5.2** |

### 3.2 本期不实现

- **地图标点**（机构库、设备库原型有入口，本期隐藏或置灰并说明后续提供）  
- 移动端页面本身、在线预约执行、排班自动调度  
- 专家团队/医疗设备的账号分配  
- 批量导入导出、资源类型自定义  

---

## 4. 业务流程

### 4.1 模块总览

```mermaid
flowchart TD
    A[进入模块] --> B[选择 Tab / 资源类型]
    B --> C[列表查询]
    C --> D{操作}
    D --> E[新增 → 未发布]
    D --> F[查看]
    D --> G[编辑]
    D --> H[删除]
    D --> I[发布]
    D --> J[下架]
    D --> K[分配账号]
    G --> L{未发布或已下架?}
    L -->|否| M[拒绝]
    L -->|是| N[保存]
    H --> O{未发布或已下架?}
    O -->|否| P[拒绝]
    O -->|是| Q[逻辑删除]
    I --> R[已发布 → 同步移动端]
    J --> S[已下架 → 撤回移动端]
```

### 4.2 典型运营顺序

1. 在对应 Tab **新增**并上传照片 → **未发布**。  
2. （可选）兽医/机构 **分配账号**。  
3. **发布** → 移动端可见。  
4. 信息有误 → **下架** → **编辑** → **再次发布**。  
5. 废弃 → **下架**（若仍发布中）→ **删除**。  

### 4.3 新增：类型与表单

用户点击 **新增** → **必选资源类型** → 展示对应字段集 → 校验通过 → 保存为 **未发布**（类型保存后不可改）。

---

## 5. 详细功能需求

### 5.1 列表与查询

| 项 | 规则 |
| --- | --- |
| Tab | 四个固定 Tab，与四类资源一一对应 |
| 分页 | 默认每页 **20** 条 |
| 排序 | 默认 **创建时间倒序** |
| 展示列 | **通用**：资源类型、展示名称、发布状态、创建时间、操作。**分类型**：介绍摘要、联系方式、隶属单位、地址/级别/型号等（与原型一致，长文本可省略） |
| 工具栏 | **搜索**、**重置**、**新增** |
| 操作列 | 见 **§6**；各状态均宜有 **查看** |

---

### 5.2 新增（通用规则）

| 项 | 规则 |
| --- | --- |
| 资源类型 | **必选**；决定表单字段；保存后**不可改** |
| 初始状态 | **未发布** |
| 照片 | **必填**；**单图**；**jpg / jpeg / png**；**≤ 10MB** |
| 联系方式 | 该类型要求的字段均 **必填** + **大陆手机号**校验 |
| 文本 | 字数按**字符**计；trim 后校验 |

---

### 5.3 字段适用矩阵

| 业务字段 | 兽医 | 团队 | 机构 | 设备 |
| --- | --- | --- | --- | --- |
| 展示名称 | ✓ | ✓ | ✓ | ✓ |
| 照片 / 介绍 | ✓ | ✓ | ✓ | ✓ |
| 联系方式 | ✓ | ✓ | ✓ | — |
| 隶属单位 | ✓ | ✓ | — | ✓ |
| 详细地址 | ✓ | — | ✓ | — |
| 接诊方式（多选） | ✓ | — | — | — |
| 服务区域 | ✓ | — | — | — |
| 收费标准（元/小时，正数） | ✓ | — | — | — |
| 服务时段 / 服务周日 | ✓ | — | ✓ | — |
| 单日最大接诊人数 | — | — | ✓ | — |
| 成立时间 / 团队规模 | — | ✓ | — | — |
| 团队成员（选填） | — | ✓ | — | — |
| 负责人 | — | ✓ | ✓ | — |
| 机构级别（单选） | — | — | ✓ | — |
| 设备型号 | — | — | — | ✓ |

---

### 5.4 兽医人员

| 字段 | 规则 |
| --- | --- |
| 兽医姓名 | **必填**；**1～10** 字 |
| 兽医照片 | **必填**；**§5.2** |
| 兽医介绍 | **必填**；**1～500** 字 |
| 联系方式 | **必填**；手机号 |
| 隶属单位 | **必填**；**1～20** 字 |
| 详细地址 | **必填**；**1～100** 字 |
| 接诊方式 | **必填**；**多选**至少一项：定点接诊、上门接诊、在线接诊 |
| 服务区域 | **必填**；**1～100** 字 |
| 收费标准 | **必填**；**正数**；**元/小时** |
| 服务时段 | **必填**；**HH:mm** 起止；结束 **≥** 开始 |
| 服务周日 | **必填**；**多选** 周一至周日；至少一天 |

---

### 5.5 专家团队

| 字段 | 规则 |
| --- | --- |
| 团队名称 | **必填**；**1～10** 字 |
| 团队照片 / 介绍 | **必填**；介绍 **1～500** 字 |
| 成立时间 | **必填**；**YYYY-MM-DD**；不宜为未来日期 |
| 团队规模 | **必填**；**正整数**；单位 **人** |
| 团队成员 | **选填**；≤ **500** 字 |
| 团队负责人 | **必填**；**1～10** 字 |
| 联系方式 / 隶属单位 | **必填**；手机号；单位 **1～20** 字 |

---

### 5.6 诊疗机构

| 字段 | 规则 |
| --- | --- |
| 机构名称 | **必填**；**1～10** 字 |
| 机构照片 / 介绍 | **必填**；介绍 **1～500** 字 |
| 机构级别 | **必填**；**单选**：动物诊所、动物医院 |
| 详细地址 | **必填**；**1～100** 字 |
| 负责人 | **必填**；**1～10** 字 |
| 联系方式 | **必填**；手机号 |
| 服务时段 / 服务周日 | **必填**；规则同兽医 **§5.4** 中「服务时段」「服务周日」 |
| 单日最大接诊人数 | **必填**；**正整数**；单位 **人**（供预约模块判断，本模块不执行预约） |

---

### 5.7 医疗设备

| 字段 | 规则 |
| --- | --- |
| 设备名称 | **必填**；**1～10** 字 |
| 设备型号 | **必填**；**1～10** 字 |
| 设备照片 / 介绍 | **必填**；介绍 **1～500** 字 |
| 隶属单位 | **必填**；**1～20** 字 |

---

### 5.8 修改

| 项 | 规则 |
| --- | --- |
| 允许 | **未发布**、**已下架** |
| 拒绝 | **已发布** → 「已发布资源请先下架后再编辑」 |
| 范围 | 除资源类型外，该类型全部字段可改；校验同新增 |
| 保存后 | **不自动发布** |

---

### 5.9 查看

- **任意状态**可查看；只读展示全部业务字段、发布状态、是否已分配账号（兽医/机构）、审计信息。  
- **已发布**：不提供编辑入口；**未发布/已下架** 可提供「编辑」。

---

### 5.10 逻辑删除

| 项 | 规则 |
| --- | --- |
| 允许 | **未发布**、**已下架** |
| 拒绝 | **已发布** → 须先下架 |
| 方式 | **本期单条**；二次确认；展示资源名称 |
| 副作用 | `del_flag` 置删除；删除照片物理文件；**若 `account_assigned=已分配`**，同步删除 `sys_user` 对应账号 |

---

### 5.11 发布与下架

| 操作 | 前置 | 结果 |
| --- | --- | --- |
| **发布** | **未发布** 或 **已下架**；数据完整合法 | **已发布**；**同步移动端** |
| **发布**（拒） | 已 **已发布** | 「该资源已发布」 |
| **下架** | **已发布** | **已下架**；**撤回移动端** |
| **下架**（拒） | 未发布 / 已下架 | 「仅已发布资源可下架」 |

发布、下架宜二次确认。已下架记录可 **再次发布**。

---

### 5.12 分配账号（兽医、机构）

| 项 | 规则 |
| --- | --- |
| 范围 | **仅** 兽医人员库、诊疗机构库 |
| 次数 | **每条仅成功一次**；已分配则不可重复 |
| 默认登录名 | **展示名称汉语拼音（全拼、无空格、小写）** + **该条资源唯一业务编号** |
| 默认角色 | **兽医** → 预置兽医端角色（草稿：**编号 100**）。**机构** → 预置机构端角色（草稿：**编号 102**）。以系统角色配置为准 |
| 与发布 | **默认未发布可分配**；**已发布不可新分配** |
| 失败 | 明确原因；**不**记为已分配，可重试（仍仅一次成功） |

---

### 5.13 地图标点（本期不实现）

机构库、设备库原型含「地图标点」；**本期不做**。预留：后续维护坐标，与详细地址并存。

---

## 6. 操作与权限矩阵

| 操作 | 未发布 | 已发布 | 已下架 |
| --- | --- | --- | --- |
| 查看 | ✓ | ✓ | ✓ |
| 编辑 | ✓ | — | ✓ |
| 删除 | ✓ | — | ✓ |
| 发布 | ✓ | — | ✓ |
| 下架 | — | ✓ | — |
| 分配账号 | ✓（未分配） | — | ✓（未分配） |

列表级：**新增**、**搜索**、**重置** 需对应权限。无权限按钮不展示或禁用。

---

## 7. 与下游衔接

| 下游 | 本模块提供 |
| --- | --- |
| 移动端展示 | 仅 **已发布** 且未删除的记录 |
| 诊疗预约 | 兽医：服务时段、服务周日、接诊方式；机构：服务时段、服务周日、单日最大接诊人数 |
| 兽医/机构登录 | 分配账号产生的平台账号 |

---

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

| 场景 | 示例文案 |
| --- | --- |
| 必填/超长 | 「请填写【团队名称】」「【兽医介绍】不能超过 500 字」 |
| 手机号/时段/收费 | 「联系方式格式不正确」「结束时间不能早于开始时间」「收费标准须为正数」 |
| 图片 | 「仅支持 jpg/jpeg/png，且不超过 10MB」 |
| 发布态 | 「已发布资源请先下架后再操作」「该资源已发布」「仅已发布资源可下架」 |
| 账号 | 「该资源已分配账号，不可重复分配」「账号创建失败：{原因}」 |

---

## 9. 非功能建议

权限分按钮；发布/下架/分配账号/删除记审计日志；分库分页性能可接受；四类用语与原型、移动端一致；界面支持 i18n。

---

## 10. 修订记录

| 版本 | 说明 |
| --- | --- |
| 2.0 | 依据草稿与原型重写：状态机、操作矩阵、字段矩阵、流程图；无库表/接口；Tab 与筛选联动；列表名称模糊；角色 100/102 |
| 2.1 | 对齐草稿 §10：逻辑删除时联动删除已分配平台账号 |
| 2.2 | 对齐草稿 §2：兽医人员不含「单日最大接诊人数」；仅诊疗机构必填；保存兽医时该字段不落库 |
