西藏巴青项目

入场隔离登记功能需求.md 15KB

入场隔离登记 — 功能需求

1. 文档说明

说明
模块名称 入场隔离登记(交易市场平台)
目标 在业务后台登记牲畜进场隔离信息(检疫证、数量、耳标、分圈及隔离期限),形成可查询、可维护的隔离台账,为隔离期满判定、隔离巡查等下游业务提供依据
关联系统 业务后台;供应商管理(供应商主数据);隔离圈位管理(圈位编号、全局默认隔离天数)
修订依据 同目录 入场隔离登记-草稿.md、界面原型(入场隔离登记.png

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


2. 术语与业务对象

2.1 入场隔离登记(一条台账记录)

  • 表示一批(或一头)牲畜进入交易市场隔离区的一次登记事件。
  • 由运营人员在后台手工登记为主;检疫证文件识别(OCR)为后续扩展,本期默认手工录入。
  • 单条记录包含:进场时间、供应商、检疫证文件、检疫证号、总数量、耳标号集合、分圈明细、隔离天数、预计解除日期及审计信息。

2.2 分圈明细(子业务对象)

  • 隶属于一条入场隔离登记,表示将部分耳标分配到某一个隔离圈位
  • 一条登记可包含 0~N 条分圈明细(保存前须完成分圈且满足 §2.6 一致性规则,见 §5.1)。
  • 单条分圈包含:圈位编号本圈数量(头)本圈耳标号集合

2.3 耳标号集合(主表字段)

  • 在登记表单中以文本录入,多个耳标用英文逗号 , 或中文逗号 分隔。
  • 保存前须解析为列表:去除首尾空白、忽略空段;同一登记内耳标号不可重复(重复时拒绝保存并提示)。
  • 耳标号字符规则与项目全局牲畜耳标规则一致;若暂无全局规则,默认单段长度 1~32 字符,不允许仅空白。

2.4 数量(头)

  • 表示本批进场牲畜总头数,单位固定为 ,取值为正整数
  • 与耳标号集合的关系见 §2.6:保存时要求 总数量 = 有效耳标个数(每头对应一个耳标)。

2.5 隔离天数与预计解除日期

规则
隔离天数 正整数,单位 ;新增时默认值取自 隔离圈位管理 模块维护的全局默认隔离天数(见该模块功能需求 §2.4);若全局未配置,界面默认 3 天(产品可在评审时调整兜底值)
预计解除日期 由系统根据 进场时间(日期部分)+ 隔离天数 自动计算,只读展示;用户不可手工改日期而绕过天数逻辑
联动 用户修改「进场时间」或「隔离天数」时,实时重算预计解除日期

计算说明: 进场时间含时分秒时,预计解除日期取进场日期的日历日加隔离天数(与原型「进场时间 + 隔离天数」一致);具体是否含「进场当日为第 1 天」由评审确认,默认:进场日为第 1 天,满 N 天后第 N 日 24:00 前解除(仅展示日期 YYYY-MM-DD 时,展示为「进场日期 + (隔离天数 − 1) 天」或「进场日期 + 隔离天数 天」择一后全文一致,默认展示:进场日期 + 隔离天数(自然日相加))。

2.6 数量、耳标与分圈一致性(核心规则)

保存(新增/修改)前必须同时满足:

编号 规则
R1 总数量(头) = 主表解析后的耳标号个数
R2 所有分圈明细的本圈数量之和 = 总数量(头)
R3 所有分圈明细中的耳标号并集 = 主表耳标号集合(无遗漏、无多余)
R4 任一耳标号在分圈明细中最多出现一次(不可重复分圈)
R5 每条分圈明细:本圈数量 = 该条所选耳标号个数

不满足时拒绝保存,并给出明确提示(示例见 §8)。

2.7 检疫证文件

  • 单文件上传,非结构化文档。
  • 允许后缀:pdf、md、doc、docx、xls、xlsx、ppt、pptx(大小写不敏感)。
  • 单文件大小 ≤ 30 MB
  • 本期:上传仅作存档与下载/预览(若项目支持);从文件自动填充检疫证号、数量、耳标(OCR 见 §3.2)。
  • 是否必填:评审确认;默认建议选填(有检疫证号即可业务闭环),原型有上传入口则界面保留。

2.8 供应商与圈位(外部主数据)

关联模块 本模块用法
供应商管理 登记表单、列表筛选:单选供应商;下拉数据来自未删除的供应商台账;支持按名称模糊检索后选择(登记时);列表筛选为下拉精确匹配(选中某供应商则只查该供应商记录)
隔离圈位管理 分圈时 圈位编号 下拉仅可选未删除的圈位;编号为系统自动生成的 2 位数字,不可手工输入

2.9 删除与可见性

  • 删除采用与项目其他业务台账一致的逻辑删除:删除后默认不在列表展示,数据保留供审计。
  • 本期不提供回收站。
  • 若登记已被隔离巡查登记、出圈、交易等下游引用,宜禁止删除并提示「存在关联业务,无法删除」(默认建议禁止)。

3. 功能范围

3.1 本期实现

能力 说明
登记列表 进场日期范围、检疫证号、供应商筛选;分页;§5.2
新增登记 主表字段 + 分圈明细;一致性校验;§5.1
修改登记 主表与分圈均可改;校验同新增;§5.3
查看登记 只读含分圈明细;§5.4
删除登记 单条逻辑删除;§5.5
工具栏 搜索、重置、新增

3.2 本期不实现(除非后续单独立项)

说明
检疫证 OCR 自动识别 自动识别检疫证号、数量、耳标并回填表单;本期仅预留上传入口与文案说明
批量导入/导出、打印检疫证
隔离期满自动出圈、消息提醒、与巡查单自动生成
圈位占用状态实时看板、同一圈位容量上限校验(若圈位模块未维护容量则不做)
按耳标号单独列表筛选(原型未要求)

4. 业务流程

4.1 模块总览

flowchart TD
    A[进入入场隔离登记] --> B[列表查询]
    B --> C{操作}
    C --> D[新增登记]
    C --> E[查看]
    C --> F[修改]
    C --> G[删除]
    D --> H[填写主表与上传检疫证]
    H --> I[录入耳标与数量]
    I --> J[添加分圈明细]
    J --> K{一致性 R1~R5}
    K -->|否| J
    K -->|是| L[保存台账]
    L --> B
    F --> M[调整主表/分圈]
    M --> K
    G --> N{有关联?}
    N -->|是| O[拒绝删除]
    N -->|否| P[逻辑删除]
    P --> B

4.2 新增登记典型顺序

  1. 点击 新增,确认 进场时间(默认当前时刻)、选择 供应商
  2. (可选)上传 检疫证文件;手工填写 检疫证号数量耳标号(逗号分隔)。
  3. 确认 隔离天数(默认带出全局配置),核对 预计解除日期
  4. 点击 添加分圈,在子界面为每个圈位选择耳标(不可与其它圈重复),确认后回到主表单分圈表格。
  5. 系统校验 §2.6,通过后 确定 保存。

4.3 分圈子流程

flowchart TD
    A[点击添加分圈] --> B[选择圈位编号]
    B --> C[多选耳标号]
    C --> D[系统计算本圈数量]
    D --> E{耳标是否已被其他圈占用?}
    E -->|是| C
    E -->|否| F[确定写入分圈表格]
    F --> G[可继续添加或编辑/删除行]
    G --> H[主表单保存时校验 R1~R5]

5. 详细功能需求

5.1 新增入场隔离登记

5.1.1 主表业务字段

字段 必填 规则摘要
进场时间 YYYY-MM-DD HH:mm:ss;默认当前系统时间;不得为空
供应商 单选;数据来自供应商管理;支持名称模糊搜索后选定一条
检疫证文件 否* 单文件;后缀与大小见 §2.7;*默认选填
检疫证号 文本;1~50 字符(trim 后);同一系统内是否唯一由评审确认,默认建议不强制唯一
数量(头) 正整数;与耳标个数一致见 §2.6 R1
耳标号 逗号分隔多个;解析规则见 §2.3;至少 1 个有效耳标
隔离天数(天) 正整数;默认取全局默认隔离天数;建议范围 1~3650
预计解除日期 只读;由进场时间与隔离天数自动计算,见 §2.5
分圈明细 至少 1 条分圈记录且满足 §2.6

5.1.2 分圈明细表格(主表单内)

列/能力 说明
圈位编号 展示所选圈位编号(来自隔离圈位管理)
数量(头) 展示本圈数量(= 本圈耳标个数,§2.6 R5
耳标号 展示本圈已选耳标,多个以逗号或顿号拼接,过长省略
操作 编辑删除 单行分圈
添加分圈 打开 §5.1.3 子界面

5.1.3 添加/编辑分圈(子界面)

字段 必填 规则摘要
圈位编号 下拉单选;仅可选隔离圈位管理中未删除的圈位;同一登记内同一圈位不可重复添加(重复时提示)
耳标号 多选下拉;选项来源 = 主表「耳标号」解析列表;已被其他分圈行占用的耳标不可再选;至少选 1 个
数量(头) 只读或自动带出 = 已选耳标个数;用户不可改数量而与耳标数不一致
操作 行为
确定 校验通过后,新增一行或更新当前编辑行到主表单分圈表格,关闭子界面
取消 关闭子界面,不改动表格(编辑中则放弃本次修改)

5.1.4 保存与取消

操作 行为
确定 主表 + 分圈全量校验(含 §2.6)通过后保存;关闭弹窗并刷新列表
取消 关闭弹窗,不保存

5.2 查询入场隔离登记列表

5.2.1 筛选条件

条件 规则
进场日期 选填;开始日期~结束日期区间(一个日期范围控件);与记录「进场时间」的日期部分匹配;空则不过滤
检疫证号 选填;对检疫证号模糊匹配(包含输入片段即可);空则不过滤
供应商 选填;下拉精确匹配(选中某供应商则只查该供应商的记录);空则不过滤

支持多条件组合筛选(同时满足)。

5.2.2 列表规则

  • 默认每页 20 条。
  • 默认排序:进场时间倒序(新的在前)。
  • 工具栏:搜索重置新增

5.2.3 展示列(与原型一致)

说明
进场时间 格式 YYYY-MM-DD HH:mm:ss
供应商 展示供应商名称
检疫证号
数量(头)
圈位分配情况 提供 「圈位分配表」 链接或按钮;点击后查看本分圈明细(弹窗只读表格,列:圈位编号、数量、耳标号)
隔离天数(天)
解除隔离日期 展示预计解除日期(与表单「预计解除日期」一致)
操作 查看编辑删除

5.3 修改入场隔离登记

规则
可改范围 主表全部业务字段全部分圈明细(增删改分圈行)均可修改
校验 §5.1 相同(含 §2.6、耳标不可跨圈重复、圈位不可重复)
进场时间/隔离天数 修改后重新计算预计解除日期
保存后 不自动触发下游出圈或巡查;仅更新本台账

说明: 草稿写「所有均可修改」;进场时间、检疫证号等业务字段均可改;分圈须重新满足一致性。若未来存在「已解除隔离不可改」等状态,须单独立项,本期无状态机,默认可改


5.4 查看入场隔离登记

  • 任意记录可查看;只读展示主表全部字段、检疫证文件(可下载/预览)、预计解除日期、分圈明细表。
  • 列表「圈位分配表」与查看内分圈展示数据一致
  • 查看界面可提供 编辑 入口(跳转或打开编辑弹窗,权限控制见 §6)。

5.5 删除入场隔离登记

规则
方式 单条删除;二次确认;确认文案宜展示检疫证号或进场时间便于识别
效果 逻辑删除;删除后列表不可见
拒绝 存在下游关联时禁止删除(见 §2.9

6. 操作与权限(业务层)

操作 说明
列表查询 进入模块、搜索、重置
新增 工具栏「新增」
查看 行内「查看」、圈位分配表
修改 行内「编辑」、查看页进入编辑
删除 行内「删除」

无权限时对应按钮不展示或禁用(权限标识命名由实施阶段定义,本文档不展开)。


7. 与下游及关联模块衔接

模块/下游 本模块提供
供应商管理 登记与筛选时选择合法供应商
隔离圈位管理 分圈选择合法圈位;新增默认隔离天数引用全局配置
隔离巡查登记(规划) 可按本台账进场时间、圈位、耳标开展巡查(集成规则另文档约定)
隔离期满/出圈(规划) 可参考「预计解除日期」与隔离天数(自动出圈本期不做)

8. 提示约定(示例)

场景 示例文案
必填 「请填写检疫证号」「请选择供应商」
耳标格式 「耳标号格式不正确」「存在重复耳标:{tag}」
数量与耳标 「总数量须与耳标个数一致」
分圈一致性 「分圈数量之和须等于总数量」「存在未分圈的耳标」「耳标 {tag} 已分配至其他圈位」
圈位重复 「圈位 {code} 已添加,不可重复」
文件 「仅支持 pdf/doc/docx 等格式,且不超过 30MB」
删除 「确认删除该条入场隔离登记?」「存在关联业务,无法删除」
OCR 预留 「检疫证自动识别功能即将上线,请手工填写」

9. 非功能建议(业务侧)

  • 进场登记、分圈调整、删除宜记操作审计(操作人、时间)。
  • 列表与表单文案支持 i18n(汉语 + 藏文),与项目前端规范一致。
  • 耳标、数量、分圈校验宜在保存前前端预校验,服务端再次校验以保证 §2.6 不被绕过。

10. 修订记录

版本 说明
1.0 依据草稿与原型整理:主表/分圈结构、一致性规则 R1~R5、流程图;剔除库表/接口/技术栈;OCR 列为本期不实现;默认隔离天数关联隔离圈位管理