# 畜牧监控 — 功能需求 ## 1. 文档说明 | 项 | 说明 | | --- | --- | | 模块名称 | 畜牧监控(视频监控系统 · 对接畜牧监控) | | 目标 | 在业务后台登记、查询、维护**监控点位**台账(名称、所属主体、安装位置、接入地址等),为后续对接视频监控平台、按主体维度查看实时画面提供主数据 | | 关联系统 | 业务后台;依赖「牧场管理(养殖主体)」「交易市场管理」主数据 | | 修订依据 | 同目录 `畜牧监控能需求-草稿.md`、界面原型(`Snipaste_2026-05-21_20-00-03.jpg`) | 本文档**仅描述功能需求与业务规则**,不涉及数据库表结构、接口路径、请求体字段命名、HTTP 报文、权限标识命名及技术栈选型。 --- ## 2. 术语与业务对象 ### 2.1 监控点位(一条台账记录) - 表示在某一**养殖主体**或**交易市场**辖区内安装的一路(个)视频监控接入点。 - 由授权用户在后台**手工登记**;外部监控系统自动同步落账可在实施阶段扩展,**本期默认手工登记为主**。 - 每条记录**必须且仅能**关联一个**所属主体**;主体类型在登记时由所选主数据确定(养殖主体或交易市场二选一)。 ### 2.2 所属主体 | 主体类型 | 数据来源(业务模块) | 选用规则 | | --- | --- | --- | | **养殖主体** | 「产业数据模型及服务 · **牧场管理**」 | **未逻辑删除**且**经营状态**为「**正常**」的养殖主体(牧场/养殖户) | | **交易市场** | 「畜牧流通资源管理 · **交易市场管理**」 | **未逻辑删除**且**运营状态**为「**正常**」的交易市场 | 新增/编辑时,**所属主体**为**单选下拉**,支持输入关键字**模糊检索**选项;选项列表为上述两类主数据的**合并结果**。界面宜区分展示主体类型(如标签「养殖主体」「交易市场」),避免同名混淆。 **停业、注销**状态的养殖主体或交易市场**不可选**(与「市场行情登记」渠道选市场等模块口径一致)。 **主数据约束:** - 仅能选择主数据中**当前有效**的记录,**不允许**手工输入名称替代选择。 - 若对应模块尚无可用主数据,应提示用户先维护牧场或交易市场(如「请先在牧场管理中维护养殖主体」)。 - 已保存的监控记录,若关联主体后来被逻辑删除,列表与详情**仍展示登记时的主体名称**(冗余展示名),编辑时须重新选择有效主体后方可保存。 ### 2.3 记录生命周期与删除 - 采用**逻辑删除**:删除后默认不在列表展示,数据保留供审计;**本期无**回收站。 - **本期无**发布/下架等与移动端展示相关的状态;登记保存后即可被列表查询与详情查看。 --- ## 3. 功能范围 ### 3.1 本期实现 | 能力 | 说明 | | --- | --- | | 监控列表 | 分页、筛选;**§5.1** | | 新增监控 | 表单校验与保存;**§5.2** | | 修改监控 | 全字段可改;**§5.3** | | 查看监控 | 只读详情;**§5.4** | | 删除监控 | 逻辑删除;**§5.5** | | 列表/行内入口 | 「查看实时监控」;**§5.6**(调用 play-url 接口播放,不落库) | | 第三方同步 | 从生产管理系统拉取监控列表 upsert;**§3.3** | ### 3.2 本期不实现 | 项 | 说明 | | --- | --- | | 批量导入导出 | 未要求 | | 地图选点、经纬度维护 | 未要求 | | 监控在线状态探测、告警、录像回放 | 未要求 | | 移动端监控查看 | 未要求 | ### 3.3 第三方同步(v1.2 / v1.3) | 能力 | 说明 | | --- | --- | | 同步入口 | 列表页 **同步** 按钮(需按钮权限) | | 数据来源 | 第三方「查询监控数据」 | | 落库规则 | 以**摄像头 ID**为键新增或更新点位台账(名称、圈舍、视频来源等) | | 播放地址 | **不同步、不落库**;查看实时视频时按需调用 play-url(**§5.6**) | | 失败处理 | 单条失败不阻断整批;完成后提示新增/更新/失败条数 | | 与手工登记 | 同步后可继续编辑主体、安装位置;再次同步覆盖第三方映射字段,保留本地主体与安装位置 | **同步写入的核心字段**:摄像头 ID、监控名称、圈舍、视频来源、第三方主体名称(冗余 `owner_name` 文本)。 --- ## 4. 业务流程 ### 4.1 模块总览 ```mermaid flowchart TD A[进入畜牧监控] --> B[监控列表] B --> C{操作} C --> D[搜索 / 重置] C --> E[新增] C --> F[查看] C --> G[编辑] C --> H[删除] C --> I[查看实时监控] E --> B G --> B H --> B I --> K[拉取 play-url 并播放] ``` ### 4.2 新增与维护 ```mermaid flowchart LR A[点击新增] --> B[填写表单] B --> C{前端校验} C -->|不通过| B C -->|通过| D[保存] D --> E[返回列表并可见新记录] ``` ### 4.3 删除 ```mermaid flowchart TD A[点击删除] --> B[二次确认] B -->|取消| C[无变更] B -->|确定| D[逻辑删除] D --> E[列表不再展示该记录] ``` --- ## 5. 功能需求明细 ### 5.1 监控列表 **页面结构(与原型一致)** - 顶部**筛选区**:监控名称、所属主体;按钮 **搜索**、**重置**、**新增**。 - 下方**表格**:监控名称、所属主体、安装位置、操作列。 **筛选规则** | 筛选项 | 规则 | | --- | --- | | 监控名称 | 选填;对名称**模糊**匹配(trim 后参与匹配) | | 所属主体 | 选填;对所选主体**精确**匹配(仅列出关联该主体的监控) | | 组合 | 多条件为 **且** 关系;空条件表示不过滤该项 | **筛选区「所属主体」下拉** - 与新增/编辑表单**相同数据源与交互**:养殖主体(正常)+ 交易市场(正常)合并列表,支持关键字模糊检索;**不要求**仅列出已有关联监控的主体。 - 未选择主体时,不按主体维度过滤。 **交互** - 仅点击 **搜索** 后按当前条件刷新列表(与平台其他台账模块一致)。 - **重置** 清空筛选条件并恢复默认列表(通常为全部未删除记录的第一页)。 - 默认按**创建时间倒序**展示(新登记在前);分页默认每页 **20** 条,支持翻页。 **列表展示** | 列 | 说明 | | --- | --- | | 监控名称 | 登记名称 | | 所属主体 | 展示主体名称;宜带类型标识(养殖主体 / 交易市场) | | 安装位置 | 登记安装位置 | | 操作 | 查看实时监控、查看、编辑、删除(权限控制见 **§6**) | > **列表不展示 IP 地址**;IP 仅在**查看详情**、**新增/编辑**表单中展示与维护(与列表原型列一致,完整台账字段见 **§5.2**)。 ### 5.2 新增监控 **入口:** 列表页 **新增**。 **表单字段** | 字段 | 规则 | | --- | --- | | 监控名称 | **必填**;**1~10** 个字符(按字符计,trim 后校验);不可为纯空白 | | 所属主体 | **必填**;**单选**;下拉数据 = 有效养殖主体 ∪ 有效交易市场;支持模糊搜索;见 **§2.2** | | 安装位置 | **必填**;**1~10** 个字符;不可为纯空白 | | IP 地址 | **必填**;须为合法 **IPv4** 地址格式(如 `192.168.1.100`);总长度 **≤ 20** 个字符;**本期不支持** IPv6 与域名 | **唯一性(本期)** - **不校验**监控名称在全局或同一所属主体下是否重复;**不校验** IP 地址是否已被其他监控占用;允许多条记录名称、IP 相同(由业务自行规范,系统不拦截)。 **保存结果** - 校验通过后写入一条新记录,**立即**在列表中可查(满足筛选条件时)。 - 失败时停留在表单并提示具体字段原因(见 **§8**)。 **弹窗/页面** - 与原型一致,可采用弹窗表单;表单须包含 **IP 地址** 字段(草稿要求,列表原型弹窗未画出时以本文为准);**确定** 提交,**取消** 关闭且不保存。 ### 5.3 修改监控 **前置:** 记录未逻辑删除。 **规则:** - **§5.2** 中全部字段均可修改,校验规则与新增一致。 - 允许更换所属主体(仍在养殖主体与交易市场有效集合内选择)。 - 保存成功后列表与详情展示最新内容。 **限制:** - 已逻辑删除的记录不可编辑。 ### 5.4 查看监控 **入口:** 列表 **查看**。 **规则:** - 只读展示 **§5.2** 全部字段(含 IP 地址、所属主体类型与名称)。 - 可提供 **编辑** 快捷入口(有编辑权限时),跳转或打开编辑表单。 ### 5.5 删除监控 **入口:** 列表 **删除**。 **规则:** - 操作前须**二次确认**(如「是否确认删除该监控?」)。 - 确认后执行**逻辑删除**,列表默认不再展示。 - **本期不校验**下游视频平台、大屏等是否引用(若后续对接产生引用,删除约束另文约定)。 ### 5.6 查看实时监控(v1.3) **入口:** 列表 **查看实时监控**。 **行为:** - 须已登记 **摄像头 ID**(`monitor_id`);无则提示先维护点位。 - 点击后由后台按摄像头 ID 调用第三方「获取监控视频播放地址」,返回 **videoUrl**(如 HLS/m3u8);**不持久化**到台账表。 - 前端弹窗内嵌入播放器播放;失败时展示可读错误(第三方不可用、点位不存在、播放地址为空等)。 - 须具备 **查询** 类权限(与查看详情同级)。 **说明:** 播放地址有时效性,每次预览宜重新拉取;与 **§3.3 同步** 解耦。 --- ## 6. 操作与权限 | 操作 | 说明 | | --- | --- | | 列表查询 | 进入模块、搜索、重置 | | 新增 | 打开新增表单并保存 | | 查看 | 只读详情 | | 编辑 | 修改未删除记录 | | 删除 | 逻辑删除 | | 查看实时监控 | 按摄像头 ID 拉取 play-url 并播放(v1.3) | | 第三方同步 | 从生产管理系统拉取监控列表 upsert(v1.2+) | 列表级按钮与行内操作须受平台**菜单与按钮权限**控制;无权限时不展示或禁用,与若依惯例一致(具体权限命名由技术方案定义,本文不展开)。 --- ## 7. 与上下游模块关系 | 模块 | 关系 | | --- | --- | | **牧场管理** | 提供「养殖主体」主数据;仅有效主体可被关联 | | **交易市场管理** | 提供「交易市场」主数据;仅有效市场可被关联 | | **视频监控平台(规划)** | v1.3 已通过 play-url 接口支持列表内实时预览;播放地址不落库 | | **养殖产业数据 / 大屏等** | 本期**无**直接引用;若未来按主体统计监控路数,口径以本文台账为准 | --- ## 8. 提示与校验约定(示例) | 场景 | 示例文案 | | --- | --- | | 必填 | 「请填写监控名称」「请选择所属主体」 | | 长度 | 「监控名称不能超过 10 个字」「安装位置不能超过 10 个字」 | | IP | 「请输入正确的 IP 地址」「IP 地址不能超过 20 个字符」 | | 主数据为空 | 「请先在牧场管理/交易市场管理中维护正常状态的主体数据」 | | 主体不可选 | 「该主体已停业或注销,请重新选择」 | | 删除确认 | 「是否确认删除该监控?」 | | 实时监控 | 「无法获取播放地址」「监控点位不存在或已删除」 | | 已删除 | 「记录不存在或已删除」 | --- ## 9. 非功能建议 - 列表分页在常规数据量下响应可接受;主体下拉模糊搜索宜防抖,避免一次输入触发过多请求。 - 操作日志:新增、修改、删除宜记入平台审计日志(与若依其他业务模块一致)。 - 用语与原型、菜单名称「畜牧监控」「监控列表」保持一致。 --- ## 10. 修订记录 | 版本 | 说明 | | --- | --- | | 1.0 | 依据草稿与原型整理:监控点位 CRUD、主体双源下拉、列表筛选、实时监控本期不实现;剔除库表/接口/技术栈描述 | | 1.1 | 评审确认:列表不展示 IP;筛选/表单主体下拉一致且仅「正常」主数据;本期不校验名称/IP 唯一;实时监控采用可点击提示方案 | | 1.2 | **第三方同步**(§3.3):拉取监控点位;字段扩展为摄像头 ID、圈舍、视频来源;移除 IP;主体与安装位置可选 | | 1.3 | 同步**不再**落库播放地址;**§5.6** 实时预览:按需 play-url + 前端播放器 |