# 疫病诊疗标准管理 — 功能需求

## 1. 文档说明

| 项 | 说明 |
| --- | --- |
| 模块名称 | 疫病诊疗标准管理 |
| 目标 | 对疫病诊疗标准进行增删改查、正文附件与封面管理，并与知识库同步、发布生命周期衔接 |
| 关联系统 | 业务后台、知识库 |
| 流程修订依据 | 同目录 `疫病诊疗标准管理功能需求-草稿.md`；《**养殖标准管理功能需求**》中业务状态、生命周期、下架回流、删除与知识库通知等语义（本模块与之对齐，领域文案按疫病诊疗调整） |

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

---

## 2. 术语与状态

### 2.1 标准类型（资讯类别编码，单选）

标准类型持久化与接口传参均为 **资讯类别编码**（`varchar`）。可选范围由资讯类别子节点维护，本模块取 `parentCode=001`、`categoryType=5`（当前种子数据示例如下，后续可在资讯类别中扩展子项而无需改状态机）：

| 编码 | 名称（示例） |
| --- | --- |
| `001013` | 疾病决策 |

新增/修改保存时编码须在上述接口返回的有效集合内；列表筛选为 **编码精确匹配**。

### 2.2 业务状态（与养殖标准一致的两维模型）

业务状态拆成 **上架状态** 与 **知识库同步状态** 两个**正交维度**，避免出现单一枚举无法表达的非法组合；两维度在系统中如何记录由实现决定，本文只约定**语义、合法组合与操作后果**。

#### 2.2.1 上架状态（互斥，单值）

| 取值 | 含义概要 |
| --- | --- |
| **未发布** | 未对外发布阶段：含新建草稿、从未同步或已同步下的编辑、**已从已发布下架回流**等；在满足矩阵规则下可编辑；同步 / 移出 / 发布 / 删除规则见 **第 4～5 节** |
| **已发布** | 对外可见或可检索（与产品定义一致）；**不允许修改**；不可直接删除，须先执行 **下架** |

**下架与「已下架」稳态：** 执行「下架」后，业务侧**不将本条单独固化为「已下架」业务终态**。下架完成后，上架状态为 **未发布**，知识库同步状态为 **已同步**（见 **4.8**）。**产品定论（与养殖标准一致）：** 下架后知识库内**仍保留**与本标准对应的**可编辑副本**（条目不删除，可与「对外发布 / 检索可见」解耦），业务侧稳态为 **未发布 + 已同步**，允许再次修改并重新发布，**无须新建**一条疫病诊疗标准。

> 若历史版本或展示层曾出现「已下架」表述，须在说明中与「下架回流 = 未发布 + 已同步」的关系写清，避免与当前流程冲突。

#### 2.2.2 知识库同步状态（与上架状态正交，单值）

| 取值 | 含义概要 |
| --- | --- |
| **未同步** | 知识库中无对应有效条目（或已移出）；在满足矩阵规则下可执行手动「同步知识库」（仅当上架状态为 **未发布** 时，见 **4.6**） |
| **已同步** | 知识库中存在与本标准对应的条目；当上架状态仍为 **未发布** 时，修改保存可按 **4.3** 自动更新知识库 |

「移出知识库」见 **4.7**：执行后须将本维度置为 **未同步**。

#### 2.2.3 合法组合（上架 × 知识库）

以下组合**允许作为稳态存在**；其余组合（例如 **已发布 + 未同步**）视为 **非法**，不得在业务流程中作为稳态出现；各入口须拒绝导致非法组合的操作。

| 上架状态 | 知识库同步 | 说明 |
| --- | --- | --- |
| 未发布 | 未同步 | 初始或移出后；可手动同步、可编辑；**未同步**条件下允许删除（见 **4.4**） |
| 未发布 | 已同步 | 已入库（含手动同步、或**已发布下架回流**）；可编辑（保存自动推库，**4.3**）、可发布、可移出；删除规则见 **4.4** |
| 已发布 | 已同步 | 发布的前提为已同步（**4.8**）；对外展示中，不可改、不可删，仅可下架 |

**说明：** 按 **4.8**，下架完成后的目标稳态为 **未发布 + 已同步**（库内保留可编辑副本），**不**将「已下架 + 未同步」作为下架必经业务终态。须与「移出知识库」（**4.7**，库侧条目删除或下线并置 **未同步**）严格区分。

**操作可用性以第 5 节矩阵为准**。

---

## 3. 功能范围

- 疫病诊疗标准的新增、修改、删除、分页列表查询、详情查看  
- 标准正文附件（非结构化文档）与封面图的上传、替换、展示及删除时的存储联动清理  
- 与知识库的同步、移出  
- 发布、下架及与知识库的一致性处理  
- 面向使用方的错误信息呈现约定（见第 6 章）

### 3.1 业务流程概览（与养殖标准一致）

下列顺序描述**典型闭环**；具体操作禁忌以 **第 5 节矩阵** 为准。

1. **新建**：录入必填项并上传正文（及可选封面）→ 初始为 **未发布 + 未同步**。  
2. **首次入库**：在 **未发布 + 未同步** 下执行「同步知识库」→ **未发布 + 已同步**。  
3. **迭代编辑**：在 **未发布**（含未同步或已同步）下修改；若为 **已同步**，保存成功后须 **自动** 更新知识库（见 **4.3**）；若为 **未同步**，保存仅作用于业务侧，仍依赖步骤 2。  
4. **发布**：仅在 **未发布 + 已同步** 下允许 → **已发布 + 已同步**。  
5. **下架**：仅在 **已发布** 下允许 → 回到 **未发布 + 已同步**（库内保留条目，非移出）。  
6. **再编辑 / 再发布**：重复步骤 3～4（**无须新建**记录）。  
7. **彻底移出知识库**：在 **未发布 + 已同步** 下主动「移出」→ **未发布 + 未同步**。  
8. **删除**：在 **未同步** 下允许直接删除（含删存储文件与通知知识库删除侧条目）；若当前为 **未发布 + 已同步**，须先执行步骤 7，或在「删除」流程中 **原子联动** 完成库侧清理后再删（见 **4.4**）。

---

## 4. 详细功能需求

### 4.1 新增疫病诊疗标准

| 字段 | 规则 |
| --- | --- |
| 标准名称 | 必填；长度 **1～20** 个字符（字符计数规则与项目全局一致） |
| 标准类型 | 必填；单选，取值须为第 **2.1** 节所列资讯类别编码之一 |
| 标准简介 | **选填**；若有内容，长度不超过 **50 字**（字数口径与项目全局一致） |
| 标准内容 | **必填**；通过**单个**附件上传；允许后缀：`pdf`、`md`、`doc`、`docx`、`xls`、`xlsx`、`ppt`、`pptx`；单文件 ≤ **30 MB** |
| 封面 | **选填**；通过**单个**图片上传；允许后缀：`jpg`、`jpeg`、`png`（若产品要求支持 `webp` 等可追加）；单文件 ≤ **10 MB** |

**必填字段汇总：** 标准名称、标准类型、标准内容。

**校验：**  
须校验文件类型（后缀与白名单 / MIME 策略以项目安全规范为准）与大小；超限或格式不符时给出**可区分**的错误分类提示。若业务要求标准名称在适用范围（如租户 / 组织）内唯一，应在评审时单独约定并写入本节。

**初始状态：** 新建成功后，上架状态为 **未发布**，知识库同步状态为 **未同步**（与养殖标准初始化规则一致，除非产品另有统一约定）。

---

### 4.2 查询疫病诊疗标准列表

- **关键字：** 对「标准名称」或「标准简介」**模糊**匹配（二者为 OR 关系）。  
- **标准类型：** **精确**匹配筛选。  
- **分页：** 支持分页；默认 **每页 20 条**，默认首页为第一页；单页条数上限与后台列表通用规范一致（若有）。  
- **排序：** 默认按 **创建时间倒序**（最新在前）；次要排序键与项目列表规范一致（若有）。  

列表宜展示上架状态、知识库同步状态，便于用户理解当前可执行操作。

---

### 4.3 修改疫病诊疗标准

- **状态约束：** **仅未发布**（含未同步、已同步，**含已从已发布下架回流**）允许修改。**已发布**状态下**不允许修改**（列表 / 详情不提供可提交的编辑入口，或仅为只读；任何保存类修改须被拒绝并给出明确业务原因）。  
- **可修改项：** 标准名称、标准类型、标准简介、标准内容（附件）、封面。  
- **保存约束：** **标准名称、标准类型、标准内容** 始终保持必填（提交时不得为空、不得因操作导致无正文附件）；**标准简介**仍为选填。  
- **与知识库一致性（已同步自动推送）：** 当标准当前为 **已同步至知识库** 且上架状态仍为 **未发布**（含下架回流）时，用户修改并**保存成功**后，系统须 **自动** 将变更推送至知识库（更新知识库侧已有条目；推送字段范围与手动同步一致，如名称、类型、简介、正文、封面等，**以与知识库的对接约定为准**）。**未同步**状态下保存仅更新业务侧，不自动写入知识库，仍依赖用户触发 **4.6** 的「同步知识库」。  
- **失败处理：** 自动推送失败时须有可识别的错误说明；**保存与推送是否视为同一业务成败**由实现阶段约定（推荐：**推送失败则本次保存视为失败**，避免两侧长期不一致）。

---

### 4.4 删除疫病诊疗标准

- 删除本条业务记录时，须**同步删除**关联存储中的标准内容文件与封面文件；并**通知知识库**删除与本标准对应的条目，避免孤儿数据。  
- **允许删除：** **未同步** 的标准允许删除（典型为 **未发布 + 未同步**，含移出后的情形）。  
- **不允许删除：** **已发布** 的标准；须先执行「下架」（**4.8**）回到 **未发布** 后再按本条处理。  
- **未发布且已同步：** **不得**在无知识库处理的前提下直接删除；须先 **移出知识库**（**4.7**）使同步维度变为 **未同步** 后再删；或在「删除」流程内 **原子联动** 完成知识库侧删除 / 下线后再删除业务记录与文件。

---

### 4.5 查看疫病诊疗标准详情

- 展示：**标准名称、标准类型、标准简介、标准内容（附件下载或预览入口）、正文附件原始名称（与上传文件名一致，便于识别）、封面**；宜展示当前 **上架状态** 与 **知识库同步状态**。  
- **已发布** 场景下详情为 **只读**（无保存类编辑）；**未发布**（含下架回流）在具备编辑权限时可进入编辑流程。  
- 在线预览能力（如 PDF、图片）若需要，可作为迭代项单列。

---

### 4.6 同步至知识库（手动）

- **适用：** 标准为 **未发布** 且 **未同步** 时，由用户触发「同步知识库」，将当前标准**首次**写入知识库（或对接语义下的首次挂载）。**已发布** 不适用本入口（须先下架回到 **未发布** 后再视同步维度操作）。  
- **已同步后的变更：** 已通过同步的标准，后续字段变更不在此按钮重复全量流程，而在 **4.3** 保存修改时 **自动** 更新知识库。  
- **结果：** 手动同步成功后，知识库同步维度为 **已同步**，为发布做准备。  
- **失败：** 须给出明确、可区分的失败原因，支持用户重试。

---

### 4.7 移出知识库

- **语义区分：** 「移出知识库」为**主动**删除或下线知识库侧对应条目；与「下架」（**4.8**）不同——**下架不删除库内副本**，业务侧仍为 **已同步**。  
- **前置：** 仅 **未发布** 且 **已同步** 时可提供「移出知识库」。**已发布** 不提供「移出」；须先 **下架** 回到 **未发布 + 已同步** 后，用户再按需执行「移出」（**非**下架自动移出）。  
- **结果：** 知识库侧对应条目删除或下线完成后，业务侧知识库同步维度须为 **未同步**；后续操作见 **第 5 节** 矩阵。

---

### 4.8 发布与下架

- **发布：**  
  - **仅当**标准**已同步知识库**且上架状态为 **未发布** 时，允许「发布」。  
  - 发布后上架状态为 **已发布**，知识库同步状态为 **已同步**。  
- **下架：**  
  - **已发布** 的标准可「下架」。  
  - 下架时须完成与知识库的一致性处理：**结束对外发布 / 对外检索可见** 等，但**不删除**知识库内与本标准对应的条目——库内**保留可编辑副本**，以便后续修改与再次发布（知识库侧「可见性 / 发布态」**以与知识库的对接约定为准**）。  
  - **下架完成后的业务状态：** 上架状态为 **未发布**，知识库同步状态为 **已同步**；允许用户再次修改并在满足「已同步」前提下 **再次发布**，**无须新建**记录。  
  - 若需从库内**彻底清除**条目，须由用户在 **未发布 + 已同步** 下主动执行 **移出知识库**（**4.7**），而非由下架子流程替代。

---

## 5. 状态与操作矩阵（汇总）

以下便于评审与测试映射。**已移除「已下架」作为独立矩阵行**：下架完成后回到 **未发布且已同步**（库内保留可编辑副本），与第二行合并理解。

| 当前状态（示意） | 修改 | 同步知识库 | 移出知识库 | 发布 | 下架 | 删除 |
| --- | --- | --- | --- | --- | --- | --- |
| 未发布且未同步 | ✓ | ✓ | — | — | — | ✓（未同步允许删） |
| 未发布且已同步 | ✓ | — | ✓ | ✓ | — | ✗（须先移出或删除时联动库侧清理） |
| 已发布 | ✗ | — | — | — | ✓（回流为未发布+已同步） | ✗ |

**补充：** 从「已发布」下架后，记录进入 **未发布且已同步**，操作权限按上表第二行执行（可改、可发布、可移出；删除规则同 **4.4**）。

---

## 6. 错误与提示约定

- 业务与系统错误宜采用项目统一的 **`code`、`msg`、`data`** 结构呈现，便于前端与运维识别（不涉及具体协议与路径设计）。  
- 文件相关错误（格式不支持、大小超限、上传失败等）宜有可区分的错误分类或文案。

---

## 7. 非功能需求（建议）

| 类别 | 建议 |
| --- | --- |
| 权限 | 菜单与按钮级权限：新增、编辑、删除、发布、下架、同步、移出等是否分角色 |
| 审计 | 关键操作记操作日志（发布、下架、手动同步、修改触发的自动同步、删除） |
| 安全 | 上传文件类型校验、存储路径不可预测、下载鉴权 |
| 性能 | 列表查询避免低效模式；大附件若后续需直传或分片再扩展 |

---

## 8. 修订说明（相对目录内草稿）

- 将业务状态与《养殖标准管理功能需求》对齐为 **上架状态 × 知识库同步状态**，给出 **合法 / 非法组合** 与 **下架 ≠ 移出** 产品定论；修正草稿中 **两条「10.」** 的编号问题。  
- 增补 **§3.1 业务流程概览**、**§5 操作矩阵**；删除、同步、发布、下架与知识库通知语义与养殖标准对齐。  
- **标准简介**、**封面** 与养殖标准对齐为 **选填**；简介若有内容仍受 50 字上限约束。  
- **标准名称** 长度为 **1～20** 字符（与同目录草稿及《养殖标准管理功能需求》一致）。  
- **不**在本文展开技术栈、库表与接口设计；草稿第 11 条错误结构归入 **§6** 作为呈现约定；草稿第 12 条技术栈删除（由技术方案或项目统一说明）。
