# 牧场管理 — 功能需求 ## 1. 文档说明 | 项 | 说明 | | --- | --- | | 模块名称 | 牧场管理 | | 目标 | 从第三方生产管理系统同步养殖场(牧场)基础信息,提供分页查询与只读详情,支撑产业数据体系中的主体台账与下游业务关联 | | 关联系统 | 业务后台;第三方生产管理系统(开放接口) | | 修订依据 | 同目录 `牧场管理功能需求-草稿.md`;字段参考 `20260611111807_454_398.jpg` | 本文档仅描述**功能需求与业务规则**,不涉及库表结构、接口路径、请求参数字段命名、技术栈选型及实现方案。 --- ## 2. 术语与枚举 ### 2.1 牧场 / 养殖场 - 本模块以**第三方同步**的养殖主体为数据来源,单条记录表示一个养殖场(牧场)。 - 本地**不提供**界面内手工新增、修改、删除;数据通过**同步**拉取或更新。 - 删除采用**逻辑删除**字段保留能力;第三方同步写入时恢复为有效(`del_flag=0`)。 ### 2.2 牧场性质 / 农场类型 第三方字段 `farmType` 为字符串;当取值为 `1`、`2` 时,分别对应: | 取值 | 含义 | | --- | --- | | **1** | 个体 | | **2** | 企业 | 列表筛选「牧场性质」按解析后的枚举**精确**匹配;无法解析时列表展示原始 `farmType` 文本。 ### 2.3 字段对照(业务含义) | 业务展示名 | 第三方字段 | 说明 | | --- | --- | --- | | 农场名称 | `farmName` | 列表关键字模糊匹配 | | 农场类型 | `farmType` | 见 **§2.2** | | 农场简介 | `introduction` | 详情只读 | | 经度 / 纬度 | `longitude` / `latitude` | 详情只读;地图标点本期不做 | | 详细地址 | `address` | 详情只读 | | 负责人 | `person` | 可脱敏展示 | | 联系电话 | `contactPhone` | 可脱敏展示 | | 区县 / 乡镇 | `county` / `town` | 列表与详情展示 | | 占地面积 | `floorArea` | 文本,第三方原样 | | 养殖规模 | `scaleBreeding` | 文本,第三方原样 | | 养殖品种 | `breedSpecies` | 文本,第三方原样 | | 创建时间 | `createTime` | 首次同步写入;更新时保留原创建时间 | | 备注 | `remarks` | 详情只读 | ### 2.4 数据来源 | 来源 | 说明 | | --- | --- | | 第三方生产管理系统 | **唯一写入来源**;用户点击**同步**全量分页拉取(接口:`GET /open-api/v1/farming/farms`) | | 本系统手工维护 | **本期不提供** | ### 2.5 地图标点 **本期不实现**经纬度采集、地图展示与标点操作(见 **§3、§5.4**)。 --- ## 3. 功能范围 **本期实现:** | 能力 | 说明 | | --- | --- | | 牧场列表 | 牧场名称关键字模糊、牧场性质精确筛选;分页;见 **§5.1** | | 查看详情 | 只读展示全部业务字段;见 **§5.2** | | 数据同步 | 从第三方拉取/更新;见 **§5.3** | **本期不实现:** - 手工新增、修改、删除、照片上传、经营状态维护 - 地图标点、坐标编辑 - 导出(若需开放须单独约定) --- ## 4. 业务流程概览 ```mermaid flowchart LR A[同步第三方数据] --> B[列表查询/筛选] B --> C[查看详情] A --> B ``` 1. **同步**:具备权限用户点击「同步」→ 调用第三方开放接口分页拉取 → 按第三方编号 upsert 本地台账。 2. **查询**:按名称关键字、牧场性质筛选,分页浏览。 3. **查阅**:查看单条记录全部字段(只读弹窗/抽屉)。 --- ## 5. 详细功能需求 ### 5.1 查询牧场列表 - **关键字:** 对「农场名称」(`farmName`)**模糊**匹配;为空不按名称过滤。 - **农场类型:** **精确**匹配(`farmType` 为 `1`/`2` 时对应个体/企业);未选不按类型过滤。 - **逻辑删除:** 默认**不展示** `del_flag=2` 记录。 - **分页:** 默认每页 **20** 条;支持重置查询条件。 - **排序:** 默认按 **创建时间倒序**(`createTime DESC`)。 **列表宜展示:** 农场名称、农场类型、区县、乡镇、负责人、联系方式(可脱敏)、创建时间、操作(查看)。 ### 5.2 查看牧场详情 **须展示(只读):** 农场名称、农场类型、农场简介、经度、纬度、详细地址、负责人、联系电话、区县、乡镇、占地面积、养殖规模、养殖品种、创建时间、备注;宜展示最近同步时间、数据来源。 - 敏感信息是否脱敏按项目安全规范与角色权限约定。 - **不提供**从详情进入编辑。 ### 5.3 数据同步 - **触发:** 列表页「同步」按钮;须 `dataModel:pasture:sync` 权限。 - **行为:** 调用第三方 `GET /open-api/v1/farming/farms`,按 `pageNum`/`pageSize`(最大 200)分页直至取完;请求头携带 `X-App-Key`、`X-App-Secret`(由部署配置)。 - **落库:** 以第三方 `id` 为唯一键 upsert;同名不同 id 视为不同主体。 - **并发:** 同一时刻仅允许一次同步进行中;重复点击提示「正在同步,请稍候」。 - **结果反馈:** 返回新增条数、更新条数、失败条数及同步完成时间;失败明细宜记录单条原因。 - **第三方不可用:** 提示「第三方服务不可用」或接口返回的业务错误信息。 ### 5.4 地图标点(本期不实现) 列表或详情**不展示**地图标点入口;经纬度字段仅作只读展示,供后续扩展。 --- ## 6. 操作权限矩阵 | 操作 | 说明 | | --- | --- | | 查看列表 | `dataModel:pasture:list` | | 查看详情 | `dataModel:pasture:query` | | 同步 | `dataModel:pasture:sync` | | 新增 / 修改 / 删除 | 本期无 | --- ## 7. 错误与提示约定 - 业务与校验错误采用项目统一的 **`code`、`msg`、`data`** 结构。 - 常见提示:同步进行中、第三方不可用、同步结果摘要(新增/更新/失败)。 --- ## 8. 非功能需求(建议) | 类别 | 建议 | | --- | --- | | 权限 | 菜单与按钮:查询、同步 | | 审计 | 同步操作记操作日志 | | 性能 | 列表筛选满足后台通用体验;同步分页拉取避免单次过大 | | 双语 | 字段标签符合项目 i18n(汉语 + 藏文) | | 扩展 | 地图标点、增量 `updatedAfter` 同步、导出 | --- ## 9. 修订说明(相对上一版) | 变更 | 处理 | | --- | --- | | 由本地 CRUD 改为第三方同步 | **§2.4、§3、§5.3** 明确唯一写入来源 | | 字段集对齐开放接口 | **§2.3** 增加字段对照 | | 去掉身份证、区划级联、照片、经营状态维护 | 自 **§5** 移除相关手工录入需求 | | 新增同步按钮与权限 | **§5.3、§6** | | 地图标点仍不做 | **§2.5、§5.4** |