# 畜牧科技资源管理 — 功能需求 ## 1. 文档说明 | 项 | 说明 | | --- | --- | | 模块名称 | 畜牧科技资源管理(牧业养殖科技服务) | | 目标 | 在业务后台统一维护**专家、技术成果、共享仪器、视频课程**四类科技资源,支持分库检索、发布至移动端展示,并为科技咨询预约、仪器借用、在线学习及专家端登录等下游能力提供主数据 | | 关联系统 | 业务后台;移动端资源展示;平台账号体系 | | 修订依据 | 同目录 `畜牧科技资源管理功能需求-草稿.md`、界面原型(列表 Tab、新增动态表单) | 本文档**仅描述功能需求与业务规则**,不涉及数据库表结构、接口路径、请求体字段命名、HTTP 报文、权限标识命名及技术栈选型。 --- ## 2. 术语与业务对象 ### 2.1 科技资源(一条台账记录) - 表示可在后台登记、经发布后在移动端对外展示的一类**牧业养殖科技服务资源**。 - 由授权用户在后台**手工维护**;外部系统自动落账可在实施阶段扩展,**本期默认手工登记为主**。 - 每条记录归属**唯一资源类型**;类型在首次保存后**不可变更**(若需改类型,应删除后按新类型重新登记)。 ### 2.2 资源类型(固定四类) 类型编码来自资讯类别 **`parentCode=004`、`categoryType=7`**(接口 `GET /category/informationCategory/children`),落库字段 `resource_type` 为 **varchar**,存叶子 **`code`**。 | `code` | 类型名称 | 业务定位 | 典型用途 | | --- | --- | --- | --- | | `004005` | **专家** | 个体科技服务专家 | 展示专业能力与服务时段;支持分配登录账号 | | `004006` | **技术成果** | 科研成果或适用技术条目 | 展示研究方向、技术要点与优势,供浏览与引用 | | `004007` | **共享仪器** | 可预约借用的仪器设备 | 展示仪器信息、地点、预约流程与借用计费 | | `004008` | **视频课程** | 在线培训课程 | 提供课程简介与视频内容,供移动端学习 | 用户**不可**自定义第五类或修改上述类型含义(扩展须单独立项;须在 `biz_information_category` 维护后由接口返回)。 ### 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**(专家照片、仪器照片、技术成果封面、课程封面等适用) | | 视频 | 仅视频课程:单文件;**mp4**;**≤ 30MB** | | 联系方式 | 该类型要求的字段若填写须符合**大陆手机号**格式 | | 文本 | 字数按**字符**计;提交前 trim;空字符串视为未填 | --- ### 5.3 字段适用矩阵 | 业务字段 | 专家 | 技术成果 | 共享仪器 | 视频课程 | | --- | --- | --- | --- | --- | | 展示名称 | ✓ | ✓ | ✓ | ✓ | | 主图/照片 | ○ | — | ○ | — | | 封面 | — | ○ | — | ○ | | 介绍/摘要类长文本 | ○ | ○(多项) | ○ | ○ | | 联系方式 | ○ | — | ○ | — | | 隶属单位 | ○ | — | ○ | — | | 详细地址 | ○ | — | — | — | | 服务区域 | ○ | — | — | — | | 收费标准/借用金额(元/小时,正数) | ○ | — | ○ | — | | 服务时段 / 服务周日 | ○ | — | ○ | — | | 研究方向 | — | ✓ | — | — | | 关键技术原理 / 技术优势 | — | ○ | — | — | | 完成单位 | — | ○ | — | — | | 仪器型号 | — | — | ○ | — | | 存放地点 / 预约流程 / 负责人 | — | — | ○ | — | | 课程主题 | — | — | — | ✓ | | 视频文件 | — | — | — | ✓ | > **○** 表示选填;**✓** 表示该类型下必填(若列有对应字段)。各类型资料类字段见 **§5.4**~**§5.7**。 --- ### 5.4 专家 | 字段 | 规则 | | --- | --- | | 专家姓名 | **必填**;**1~10** 字 | | 专家照片 | **选填**;若上传须符合 **§5.2** 图片规则 | | 专家介绍 | **选填**;若有内容 **≤500** 字;宜包含资质、从业年限、专业领域、研究方向、技术特长等 | | 联系方式 | **选填**;若填写须为大陆手机号 | | 隶属单位 | **选填**;若有内容 **≤20** 字 | | 详细地址 | **选填**;若有内容 **≤100** 字 | | 服务区域 | **选填**;若有内容 **≤100** 字 | | 收费标准 | **选填**;若填写须为**正数**;单位 **元/小时** | | 服务时段 | **选填**;若填写须为 **HH:mm** 起止;结束时间 **≥** 开始时间 | | 服务周日 | **选填**;**多选** 周一至周日 | --- ### 5.5 技术成果 | 字段 | 规则 | | --- | --- | | 成果名称 | **必填**;**1~20** 字 | | 研究方向 | **必填**;**可输入下拉**;预设:**繁育、饲养、防疫、粪污处理**;可输入其他方向;**1~20** 字 | | 成果摘要 | **选填**;若有内容 **≤500** 字 | | 关键技术原理 | **选填**;若有内容 **≤500** 字 | | 技术优势 | **选填**;若有内容 **≤500** 字 | | 完成单位 | **选填**;若有内容 **≤20** 字 | | 封面 | **选填**;**§5.2** 图片规则 | --- ### 5.6 共享仪器 | 字段 | 规则 | | --- | --- | | 仪器名称 | **必填**;**1~10** 字 | | 仪器型号 | **选填**;若有内容 **≤10** 字 | | 仪器照片 | **选填**;若上传须符合 **§5.2** 图片规则 | | 仪器介绍 | **选填**;若有内容 **≤500** 字 | | 隶属单位 | **选填**;若有内容 **≤20** 字 | | 存放地点 | **选填**;若有内容 **≤100** 字 | | 预约流程 | **选填**;若有内容 **≤500** 字 | | 负责人 | **选填**;若有内容 **≤10** 字 | | 联系方式 | **选填**;若填写须为大陆手机号 | | 借用金额 | **选填**;若填写须为**正数**;单位 **元/小时** | | 服务时段 | **选填**;若填写须为 **HH:mm** 起止;结束时间 **≥** 开始时间 | | 服务周日 | **选填**;**多选** 周一至周日 | --- ### 5.7 视频课程 | 字段 | 规则 | | --- | --- | | 课程标题 | **必填**;**1~20** 字 | | 课程简介 | **选填**;若有内容 **≤500** 字 | | 课程主题 | **必填**;**下拉单选**;选项来自 `GET /category/informationCategory/children?parentCode=005&categoryType=8`(展示 `name`,落库 `code`,如 `005001` 基础养殖) | | 视频文件 | **必填**;**§5.2** 视频规则 | | 封面 | **选填**;**§5.2** 图片规则 | --- ### 5.8 修改 | 项 | 规则 | | --- | --- | | 允许 | **未发布**、**已下架** | | 拒绝 | **已发布** → 「已发布资源请先下架后再编辑」 | | 范围 | 除资源类型外,该类型全部字段可改;校验同新增 | | 保存后 | **不自动发布**;替换图片/视频/封面时,旧附件按平台文件管理惯例处理 | --- ### 5.9 查看 - **任意状态**可查看;只读展示该类型全部业务字段、发布状态、是否已分配账号(专家)、创建/更新等审计信息。 - **已发布**:不提供编辑入口;**未发布 / 已下架** 可提供「编辑」。 --- ### 5.10 逻辑删除 | 项 | 规则 | | --- | --- | | 允许 | **未发布**、**已下架** | | 拒绝 | **已发布** → 须先下架 | | 方式 | **本期单条**;二次确认;确认文案展示资源名称 | | 副作用 | `del_flag` 置删除;删除照片/封面/视频物理文件;**若专家 `account_assigned=已分配`**,同步删除 `sys_user` 对应账号 | --- ### 5.11 发布与下架 | 操作 | 前置 | 结果 | | --- | --- | --- | | **发布** | **未发布** 或 **已下架**;数据完整且校验通过 | **已发布**;**同步移动端** | | **发布**(拒绝) | 当前已为 **已发布** | 「该资源已发布」 | | **下架** | 当前为 **已发布** | **已下架**;**撤回移动端** | | **下架**(拒绝) | **未发布** 或 **已下架** | 「仅已发布资源可下架」 | 发布、下架操作宜二次确认。**已下架** 记录允许 **再次发布**。 --- ### 5.12 分配账号(专家) | 项 | 规则 | | --- | --- | | 范围 | **仅** 专家库 | | 次数 | **每条仅成功分配一次**;已分配后不可重复 | | 默认登录名 | **专家姓名**汉字拼音**首字母**(小写、连续拼接)+ **该条记录数据库主键 id**(如「张专家」、id=12 → `zzj12`) | | 默认角色 | 权限字符 **`exp`**(`sys_role.role_key`);须预置对应角色,常见 `role_id=101` | | 与发布状态 | **未发布**、**已下架** 且未分配时可操作;**已发布** 不可新分配 | | 失败处理 | 返回明确原因;**不**记为已分配,在满足前置条件下可重试(仍仅允许一次成功) | --- ### 5.13 地图标点(本期不实现) 共享仪器库原型含「地图标点」入口;**本期不提供**。预留:后续维护地理坐标,与存放地点信息并存。 --- ## 6. 操作与权限矩阵 | 操作 | 未发布 | 已发布 | 已下架 | | --- | --- | --- | --- | | 查看 | ✓ | ✓ | ✓ | | 编辑 | ✓ | — | ✓ | | 删除 | ✓ | — | ✓ | | 发布 | ✓ | — | ✓ | | 下架 | — | ✓ | — | | 分配账号 | ✓(未分配) | — | ✓(未分配) | 列表级 **新增**、**搜索**、**重置** 需具备对应操作权限;无权限时按钮不展示或禁用。 --- ## 7. 与下游衔接 | 下游能力 | 本模块提供 | | --- | --- | | 移动端资源展示 | 仅 **已发布** 且未删除的记录 | | 科技咨询 / 专家预约 | 专家的服务时段、服务周日、收费标准 | | 仪器借用预约 | 共享仪器的服务时段、服务周日、借用金额、预约流程说明 | | 在线学习 | 已发布视频课程的视频与课程信息 | | 专家端登录 | 「分配账号」产生的平台账号 | --- ## 8. 提示约定(示例) | 场景 | 示例文案 | | --- | --- | | 必填 / 超长 | 「请填写【成果名称】」「【专家介绍】不能超过 500 字」 | | 手机号 / 时段 / 金额 | 「联系方式格式不正确」「结束时间不能早于开始时间」「收费标准须为正数」 | | 附件格式 / 大小 | 「仅支持 jpg/jpeg/png,且不超过 10MB」「仅支持 mp4,且不超过 30MB」 | | 发布状态 | 「已发布资源请先下架后再操作」「该资源已发布」「仅已发布资源可下架」 | | 账号 | 「该资源已分配账号,不可重复分配」「账号创建失败:{原因}」 | --- ## 9. 非功能建议 - 按按钮粒度控制操作权限。 - 发布、下架、分配账号、删除等关键操作记录审计日志。 - 四类分库列表在常规数据量下分页响应可接受。 - 界面用语与原型、移动端保持一致;支持国际化扩展。 --- ## 10. 修订记录 | 版本 | 说明 | | --- | --- | | 2.0 | 依据草稿与原型整理:发布状态机、操作矩阵、字段矩阵、业务流程图;明确发布/下架同步移动端;Tab 与筛选联动;专家分配角色 101;地图标点本期不做;剔除技术栈、接口与数据库相关表述 | | 2.1 | 对齐草稿 §10:逻辑删除时联动删除专家已分配平台账号;§11 明确仅专家库分配账号 | | 2.2 | §5.12:登录名改为拼音首字母+id;角色按 `role_key=exp`(对齐草稿 §11) |