material_manage_system/docs/MMS-用户故事-v2.3.md
2026-09-15 16:08:18 +08:00

57 KiB
Raw Blame History

物料管理系统(MMS)用户故事 v2.3

一、版本说明

本版本在 v2.2 基础上完成以下调整:

  • 区分使用系统的经营组织与作为供应商、客户的业务伙伴。
  • 建立组织级数据隔离和用户组织访问权限。
  • 统一库存业务单据状态和过账规则。
  • 库存按“组织 + 仓库 + 库位 + 物料”管理。
  • 已过账业务不得直接修改或删除,错误通过撤销过账(冲销)纠正。
  • 补充调拨、盘点、库存预留、库存流水、BOM 版本、审计和预警通知等用户故事。
  • 明确物料主数据由技术人员负责创建、维护和作废,采购人员只维护供应商及采购属性。
  • 主数据管理和 BOM 管理作为当前优先交付模块,并使用武汉真实数据副本完成验收。

本版本不包含且不考虑采购订单、销售订单、批次、序列号、保质期和库存成本核算,不预留相关字段及接口;后续如有明确业务需求,再作为独立版本进行设计和实现。


二、领域术语

术语 定义
经营组织(Organization) 使用系统并拥有物料、仓库、编码规则和业务单据的本方公司或核算主体
业务伙伴(Business Partner) 与经营组织发生业务往来的外部公司,可同时承担供应商和客户角色
过账(Post) 业务单据通过校验后正式写入库存流水并改变库存余额
撤销过账(冲销) 使用反向流水抵消已过账单据的库存影响,内部状态为 Reverse,原单据和原流水均保留
账面库存 已完成过账、当前实际记录在库的数量
预留库存 已被制造、销售或领料需求占用,但尚未正式出库的数量
锁定库存 因盘点、质量或异常处理而暂不可使用的数量
可用库存 账面库存减去预留库存和锁定库存
在途库存 已从来源仓库发出、尚未被目标仓库接收的数量

2.1 通用数据归属

  • 物料、编码规则、仓库、库位、库存、BOM、业务伙伴关系和业务单据必须归属一个经营组织。
  • 同一业务伙伴基础资料可以被多个经营组织使用,但合作状态、供应商价格等业务关系按经营组织分别维护。
  • 经营组织与业务伙伴必须使用独立的数据表:经营组织表示使用系统的本方公司或核算主体,业务伙伴表示外部供应商或客户,不得以一张通用“公司”表混合保存。
  • 经营组织与业务伙伴通过独立关系表关联;伙伴在某个组织下的供应商/客户角色、合作状态、伙伴编码、结算条件和其他业务属性均保存在该关系中。
  • 一个业务伙伴可以同时关联多个经营组织;各组织的伙伴角色、状态和业务属性互不影响,用户不得通过伙伴基础资料越权查看其他组织的合作关系。
  • 用户只能访问被授权经营组织的数据;切换经营组织后,查询、导入、导出和操作均限定在当前组织。
  • 物料编码在同一经营组织内唯一,不要求跨经营组织唯一。

2.2 库存数据模型

  • 库存最小管理维度为:经营组织、仓库、库位、物料。
  • 数量使用可配置精度的十进制数,默认最大六位小数。
  • 所有库存以物料基本计量单位记账;其他单位必须按有效换算规则转换。
  • 默认禁止负库存。并发扣减时必须在同一事务内重新校验可用库存。
  • 作废物料不得发生新的普通出入库业务,但允许查询历史及执行合法的撤销过账(冲销)。
  • 停用仓库或库位不得发生新业务;存在账面、预留、锁定或在途库存时不得停用。

2.3 单据状态与过账

普通入库单、出库单和盘点调整单使用以下状态:

状态 说明
draft 草稿,可编辑、可删除,不影响库存
submitted 已提交,等待确认或审批,不影响库存
posted 已过账,不可编辑、不可删除,已产生库存流水
reversed 已完成撤销过账(冲销),保留原单据和正反向流水
cancelled 未过账前取消,不影响库存

通用规则:

  • 只有过账动作能够改变库存。
  • 单据头、单据明细、库存流水和库存余额必须在同一事务中处理。
  • 客户端提交业务操作时必须携带幂等键;相同幂等键重复提交不得重复影响库存。
  • 已过账单据不可修改、不可物理删除,只能按权限执行撤销过账(冲销)。
  • 所有状态迁移必须校验当前状态、操作者权限和数据版本。

2.4 删除、停用与追溯

  • 未被业务引用的草稿或测试数据可以物理删除。
  • 已被业务引用的物料、业务伙伴、仓库、库位和 BOM 版本只能停用或作废。
  • 已过账单据、库存流水和审计日志禁止物理删除和直接修改。
  • 关键变更必须记录经营组织、业务对象、操作类型、操作者、操作时间、修改前后值、请求标识和来源终端。

三、角色定义

角色 职责描述
仓库管理员 物料入库、出库、调拨、盘点、库存查询和制造订单仓库执行
采购人员 供应商管理、物料供应商关系、价格、最小订购量、供货周期和库存预警处理
技术人员 物料主数据创建、修改、作废、编码申请、BOM、物料技术参数和替代料维护
生产人员 制造订单发起、执行跟踪、库存预留和完工确认
销售人员 业务伙伴客户管理和成品可用库存查询
超级管理员 拥有全部功能权限和全部经营组织、仓库的数据权限,负责平台配置、业务管理和应急处理

说明:销售订单和采购订单不在本版本范围内,角色职责不再将其作为已实现能力。


四、供应商状态说明

状态值 说明
potential 潜在供应商
pending 待导入,已接触但未正式合作
active 正常合作
suspended 暂停合作
eliminated 淘汰

只有 active 状态的供应商可以被新的采购入库业务选用;历史单据和撤销过账(冲销)不受此限制。


五、功能模块与用户故事

5.1 经营组织与数据隔离

故事 #ORG-001:多组织数据隔离及用户可访问组织配置

作为|超级管理员
我想要|创建、启用或停用经营组织,并配置用户可访问的组织及默认组织
以便|多个经营组织共用系统时,业务数据保持隔离且用户只能访问授权范围

验收标准:

  • 经营组织至少包含组织编码、名称、状态、默认时区和创建时间。
  • 组织编码全局唯一,启用后不可修改。
  • 前端设置独立的“公司组织”一级模块,位于“物料主数据”和“业务伙伴”之间,下设“组织管理”“用户管理”“角色与权限”三个子菜单。
  • “组织管理”负责本方经营组织的新增、查询、修改、启用和停用,不得在该页面维护供应商或客户。
  • 用户可以被授权访问一个或多个经营组织,并可配置一个默认组织。
  • 超级管理员自动拥有全部经营组织和仓库的数据权限,无需逐项授权。
  • 北京、武汉等公司或分公司分别建立为独立经营组织,各自拥有独立的编码规则、主数据、仓库、库存、供应商关系和业务单据。
  • 经营组织只保存本方组织资料,不保存供应商、客户角色或合作状态;数据库中 organizations 与 business_partners 必须分表保存。
  • 物料、编码规则、仓库、库位、库存、BOM、供应商关系及业务单据必须直接包含 organization_id 外键。
  • 用户可属于多个经营组织,因此通过用户—组织关系表保存归属和权限,不在用户表中使用单一 organization_id 限制。
  • 用户登录后只能查询和操作授权组织的数据。
  • 用户登录后进入默认经营组织,并可通过页面左上角的组织切换器切换到其他已授权组织。
  • 切换经营组织后,系统清空上一组织的页面缓存并重新加载菜单、主数据、仓库和权限范围。
  • API 不得仅依赖前端选择,必须在服务端校验当前组织和用户授权关系。
  • 导入、导出、统计、WebSocket 推送和后台任务均遵守相同组织边界。
  • 存在有效业务数据的组织只能停用,不得物理删除。
  • 切换组织及组织授权变更写入审计日志。

5.2 编码规则管理

故事 #CODE-001:超级管理员配置编码规则

作为|超级管理员
我想要|为每个经营组织配置独立的物料编码规则,包括物料类别、前缀和流水号位数
以便|各经营组织按自己的规则生成编码,互不冲突

验收标准:

  • 编码规则按“经营组织 + 物料类别”唯一。
  • 已使用的流水号不得回收或重复分配。
  • 修改规则只影响后续生成的编码,不修改已有物料编码。
  • 流水号达到最大值时禁止继续生成,并返回明确原因。

故事 #CODE-002:自动生成物料编码

作为|技术人员
我想要|选择当前经营组织和物料类别后,由系统生成下一个可用编码
以便|避免手工编写编码和重复

故事 #CODE-003:并发申请防重

作为|系统
我想要|在多用户同时申请编码时,以事务和唯一约束保证编码不重复
以便|确保同一经营组织内的物料编码唯一

验收标准:

  • 并发申请不得返回相同编码。
  • 编码生成失败或物料创建回滚后,已分配编码默认不再重新使用。
  • 数据库必须存在“经营组织 + 物料编码”唯一约束。

故事 #CODE-004:获取编码规则列表

作为|采购人员或技术人员
我想要|查看当前经营组织的物料类别及编码规则
以便|了解如何申请新编码


5.3 物料主数据

故事 #MD-001:物料主数据创建

作为|技术人员
我想要|在当前经营组织下创建物料主数据
以便|为仓库和制造业务提供可靠的基础信息

验收标准:

  • 必填字段包括物料编码、名称、物料类型、物料分类、基本计量单位和状态。
  • 物料编码在当前经营组织内唯一。
  • 创建前执行重复物料检查,并由用户确认疑似重复结果。
  • 技术人员根据产品设计或研发需求决定是否引入新物料;采购人员不得直接创建物料条目。
  • 创建成功写入审计日志。

故事 #MD-002:物料主数据查询

作为|仓库管理员、采购人员、销售人员或技术人员
我想要|按物料编号、名称、分类、类型和状态查询当前组织的物料
以便|确认物料信息或了解产品资料

验收标准:

  • 主数据列表至少显示物料编码、名称、规格、物料类型、大类、小类、基本单位和状态。
  • 物料列表、详情和编辑表单不显示库存数量、可用数量、预警阈值或库存状态,也不得调用库存接口拼接这些字段。
  • 列表顶部提供大类、小类、物料类型、状态和关键词筛选。
  • 关键词支持对物料编码、名称、规格和制造商型号进行模糊搜索。
  • 小类选项随所选大类联动;清除大类时同时清除无效的小类条件。
  • 点击物料进入详情页;技术人员可在详情页修改或作废,采购人员可在详情页维护供应商信息。
  • 列表提供单个新增、批量导入和批量导出入口,并根据角色权限显示。

故事 #MD-003:物料主数据修改

作为|技术人员
我想要|修改物料的名称、规格、分类和技术参数
以便|保持物料信息准确

验收标准:

  • 物料编码和所属经营组织不可修改。
  • 物料名称、规格、分类、类型、基本单位和技术参数只允许技术人员修改。
  • 供应商、价格、最小订购量和供货周期不属于物料基础字段,由采购人员通过物料供应商关系维护。
  • 库存数量、预留数量、锁定数量、在途数量和预警阈值不属于物料基础字段,物料修改接口不得接收或更新这些字段。
  • 基本计量单位已产生库存业务后不可直接修改。
  • 每次修改记录修改前后值。

故事 #MD-004:物料主数据作废

作为|技术人员
我想要|将不再使用的物料标记为作废而非删除
以便|保留历史数据并阻止新的普通业务

验收标准:

  • 作废物料不得用于新建普通入库、出库、调拨、预留、BOM 和制造订单。
  • 物料作废只允许在详情页执行,列表页不提供直接作废按钮。
  • 作废不影响历史查询和合法的撤销过账(冲销)。
  • 已存在账面、预留、锁定或在途库存时必须提示风险并禁止直接作废,处理完库存后方可作废。

故事 #MD-005:物料作废后查询

作为|仓库管理员、采购人员或技术人员
我想要|查询已作废物料及其历史业务
以便|完成历史追溯

故事 #MD-006:物料关联供应商

作为|采购人员
我想要|为物料关联多个供应商,并维护价格、币种、最小订购量、交期和首选标记
以便|采购时选择合适的供应商

验收标准:

  • 供应商关系按经营组织维护。
  • 物料与供应商为多对多关系,必须通过独立的 material_suppliers 关系表维护,不在物料表中保存单一供应商字段。
  • 物料详情页提供供应商关系的新增、编辑、停用和查看功能。
  • 供应商详情页同步展示该供应商当前关联的物料清单。
  • 新业务只能选择 active 状态供应商。
  • 同一物料最多设置一个当前首选供应商。
  • 价格必须包含币种、生效日期和失效日期。

故事 #MD-007:物料分类、物料类型、计量单位及单位换算

作为|超级管理员或技术人员
我想要|维护物料分类、物料类型、计量单位和换算关系
以便|统一物料口径并支持采购、库存和制造使用不同业务单位

验收标准:

  • 物料类型至少包括原材料、半成品、成品和辅料,并允许停用。
  • 分类支持树形层级,停用父分类前必须处理启用中的子分类。
  • 每个物料必须设置一个基本计量单位。
  • 可为物料设置多个业务单位及其与基本单位的换算比例。
  • 换算比例必须大于零,并支持有效期。
  • 已产生业务记录的单位和历史换算关系不得物理删除。
  • 库存流水始终记录原业务数量、原单位、基本单位数量和所用换算比例。

故事 #MD-008:物料主数据变更审计与重复物料检查

作为|技术人员
我想要|创建物料时检查疑似重复项,并查询物料完整变更历史
以便|减少重复建档并追溯主数据变化

验收标准:

  • 重复检查至少比较当前组织内的名称、规格、品牌或制造商型号。
  • 完全相同的物料编码必须阻止创建;疑似重复物料提示候选记录并要求用户确认。
  • 用户确认继续创建时必须填写原因。
  • 审计记录包含字段级修改前值、修改后值、操作者和时间。
  • 审计记录只读,不允许普通业务用户删除。

5.4 业务伙伴管理

故事 #COM-001:经营组织与业务伙伴分表建模

作为|超级管理员
我想要|将本方经营组织与外部业务伙伴分开保存,并通过组织—伙伴关系设置供应商和客户角色
以便|明确本方与外部主体的边界,同时支持同一伙伴在不同组织下具有不同业务身份

验收标准:

  • 数据库分别使用 organizations 保存本方经营组织、business_partners 保存外部伙伴基础资料,不共用主表或主键空间。
  • 使用 organization_partners 保存组织与伙伴的关系,并建立 UNIQUE(organization_id, business_partner_id) 约束。
  • 业务伙伴基础资料至少包括法定名称、统一社会信用代码、联系人、联系方式和地址;不直接保存 organization_id、供应商状态或客户状态。
  • 供应商/客户角色、组织内伙伴编码、合作状态、结算币种、付款条件等组织级属性保存在组织—伙伴关系或其扩展表中。
  • 同一业务伙伴在同一经营组织下可以同时拥有供应商和客户角色;在不同经营组织下的角色和合作状态可以不同。
  • 通过统一社会信用代码识别到已有伙伴时,复用伙伴基础记录并只新增当前组织关系,不重复创建外部公司主体。
  • 普通用户只能读取当前组织的伙伴关系及业务属性;不得因为伙伴基础记录被多个组织复用而看到其他组织的合作信息。

故事 #COM-002:业务伙伴角色管理

作为|采购人员或销售人员
我想要|设置业务伙伴的供应商或客户角色
以便|区分不同业务身份

验收标准:

  • 角色设置作用于当前经营组织的 organization_partners 关系,不修改其他组织中的伙伴角色。
  • 同一组织—伙伴关系可以同时具有供应商和客户角色。
  • 移除某一角色不删除伙伴基础资料,也不影响另一角色及历史业务。

故事 #COM-003:供应商合作状态管理

作为|采购人员
我想要|按经营组织设置供应商合作状态
以便|新业务只选择当前可合作的供应商

故事 #COM-004:新建业务伙伴

作为|采购人员或销售人员
我想要|添加业务伙伴基础资料并建立当前组织的合作关系
以便|扩充供应商和客户库

验收标准:

  • 创建流程先按统一社会信用代码检查业务伙伴基础记录,再建立当前经营组织的伙伴关系。
  • 已存在伙伴基础记录但当前组织尚未关联时,不重复创建伙伴,只新增组织关系及当前组织业务属性。
  • 新建和关联操作均写入审计日志,并明确记录当前经营组织。

故事 #COM-005:查询业务伙伴列表

作为|采购人员或销售人员
我想要|通过业务伙伴列表和详情页查询、筛选并维护当前组织的供应商或客户
以便|选择合作伙伴并查看其基础信息及关联物料

验收标准:

  • 采购人员进入“供应商管理”后,可以查看当前经营组织的供应商列表。
  • 列表支持按名称模糊搜索,并按 potential、pending、active、suspended、eliminated 状态筛选。
  • 采购人员可以新增供应商;列表中的“删除”操作实际执行淘汰或停用,不物理删除已被业务引用的供应商。
  • 点击供应商进入详情页,展示名称、联系人、联系方式、地址、合作状态等基础信息。
  • 供应商详情页下方展示该供应商供应的物料清单,包括物料编码、名称、规格、价格、币种、最小订购量和供货周期。
  • 采购人员可以从供应商详情页维护物料关联,也可以从物料详情页维护多个供应商,两个入口操作同一关系表。
  • 销售人员进入同一业务伙伴模块时,只显示客户相关字段和客户记录。
  • 前端分别提供“供应商”和“客户”入口,两者使用同一业务伙伴基础数据及组织—伙伴关系;一个伙伴同时具备两种角色时可分别出现在两个列表中。

5.5 仓库管理

故事 #WH-001:仓库管理

作为|超级管理员
我想要|管理经营组织下的仓库
以便|支持多组织、多仓库场景

验收标准:

  • 仓库编码在经营组织内唯一。
  • 已被业务引用的仓库只能停用,不能物理删除。
  • 存在任何库存或在途调拨时不得停用。
  • 仓库维护入口位于“库存查询”页面的“仓库设置”中,不单独占用侧边栏菜单。

故事 #WH-002:库位管理

作为|仓库管理员
我想要|管理仓库下的库位
以便|精确定位物料存放位置

验收标准:

  • 库位编码在仓库内唯一。
  • 已被业务引用的库位只能停用,不能物理删除。
  • 存在任何库存或在途调拨时不得停用。
  • 库位与所属仓库在同一“仓库设置”入口中维护,并受当前组织和仓库权限限制。

故事 #WH-003:库存预警查询

作为|仓库管理员或采购人员
我想要|查看当前组织中可用库存低于预警值的物料
以便|及时安排补充库存

验收标准:

  • 库存预警作为“库存查询”页面内的标签页展示,不设置独立侧边栏菜单。
  • 预警阈值在库存查询页面维护,不出现在物料主数据列表、详情或编辑表单中。
  • 预警规则按“经营组织 + 仓库 + 物料”保存和计算。
  • 预警阈值可以按物料和仓库配置。
  • 预警以可用库存而非账面库存判断。
  • 查询支持组织、仓库、分类、物料类型和处理状态筛选。

5.6 库存变动管理

5.6.1 通用规则

  • 所有库存业务单据必须包含经营组织、单据编号、业务类型、状态、经办人、发生时间和明细。
  • 每条明细必须指定仓库、库位、物料、业务数量、业务单位和换算后的基本单位数量。
  • 普通单据遵循 draft、submitted、posted、reversed、cancelled 状态机。
  • 只有 posted 状态影响库存;已过账单据禁止修改或删除。
  • 库存余额与库存流水必须在同一数据库事务中更新。
  • 出库、预留和调拨发出必须校验可用库存,默认禁止负库存。

故事 #STOCK-001:库存变动(入库)

作为|仓库管理员
我想要|创建入库单,选择入库类型、仓库、库位并填写原因或备注
以便|通过受控过账更新库存

入库类型:

  • 采购入库:供应商送货。
  • 生产入库:制造完成的成品入库。
  • 退货入库:客户退货。
  • 盘盈入库:经盘点确认后增加库存。
  • 调拨入库:由调拨单接收产生,不允许手工独立创建。

验收标准:

  • 草稿和已提交单据不改变库存。
  • 过账后增加指定库存维度的账面库存并生成库存流水。
  • 作废物料、停用仓库和停用库位不得执行普通入库。
  • 同一幂等键重复提交不重复增加库存。

故事 #STOCK-002:库存变动(出库)

作为|仓库管理员
我想要|创建出库单,选择出库类型、仓库、库位并填写原因或备注
以便|追踪物料流向并通过受控过账扣减库存

出库类型:

  • 销售出库:交付给客户。
  • 领料出库:生产领用。
  • 退货出库:退给供应商。
  • 盘亏出库:经盘点确认后减少库存。
  • 调拨出库:由调拨单发出产生,不允许手工独立创建。

验收标准:

  • 草稿和已提交单据不改变库存。
  • 过账时重新校验可用库存,不足时整单失败且不产生部分流水。
  • 过账后减少账面库存并生成库存流水。
  • 两个并发请求不能共同扣减同一份可用库存。
  • 同一幂等键重复提交不重复扣减库存。

故事 #STOCK-003:仓库库存查询(通用)

作为|仓库管理员、采购人员或技术人员
我想要|按组织、仓库、库位、物料查看实时库存
以便|了解库存情况并决定是否采购或生产

验收标准:

  • 同时展示账面、预留、锁定、可用和在途数量。
  • 支持按物料编码、名称、分类、类型、仓库和库位筛选。
  • 查询结果只包含用户有权访问的组织和仓库。
  • “库存查询”是库存管理的统一工作台,页面内包含“库存余额”“库存预警”“库存流水”三个标签,不再另设“库存管理”子页面。
  • 页面提供“仓库设置”入口,用于维护有权限仓库及其库位。

故事 #STOCK-004:成品库存查询(销售专用)

作为|销售人员
我想要|查看有权访问组织的成品可用库存
以便|回答客户咨询并确认当前可交付数量

验收标准:

  • 只显示物料类型为成品的记录。
  • 默认展示可用库存,不能把预留、锁定或在途库存计入可交付量。
  • 销售人员无权执行库存变动。

故事 #STOCK-005:仓库间调拨

作为|仓库管理员
我想要|使用一张调拨单将物料从来源仓库或库位转移到目标仓库或库位
以便|保证调出、在途和收货全过程可追溯

调拨状态:

状态 说明
draft 草稿,不影响库存
submitted 已提交,等待发出
in_transit 已发出,来源库存减少,在途库存增加
received 已收货,在途库存减少,目标库存增加
cancelled 发出前取消
reversed 已完成调拨被撤销过账(冲销)

验收标准:

  • 来源与目标不得是相同的仓库和库位组合。
  • 发出时校验来源可用库存;库存不足时整单失败。
  • 发出和接收分别产生关联到同一调拨单的库存流水。
  • 已发出调拨不能直接取消;必须收货或按异常退回流程处理。
  • 接收数量默认等于发出数量;如允许差异,必须记录差异原因并经过授权确认。
  • 重复发出或重复接收不得重复改变库存。

故事 #STOCK-006:库存单据撤销过账(冲销)

作为|具有撤销过账(冲销)权限的仓库管理员
我想要|对错误的已过账库存单据执行完整的撤销过账(冲销)
以便|在不篡改历史记录的情况下恢复库存

验收标准:

  • 只有 posted 状态且未执行过撤销过账(冲销)的单据可以发起该操作。
  • 用户必须填写撤销过账(冲销)原因。
  • 撤销过账(冲销)生成独立的撤销过账记录和数量相反的库存流水。
  • 原单据、撤销过账记录及其流水可以双向追溯。
  • 执行撤销过账(冲销)前,必须校验反向操作是否会造成负库存或破坏后续业务约束。
  • 撤销过账记录自身不得再次执行撤销过账(冲销);需要纠正时创建新的合法业务单据。
  • 撤销过账(冲销)动作写入审计日志。

故事 #STOCK-007:库存盘点、差异确认与盘盈盘亏过账

作为|仓库管理员
我想要|创建盘点任务、录入实盘数量并确认差异
以便|修正账实差异并保留盘点依据

盘点状态:

状态 说明
draft 草稿,正在选择盘点范围
counting 盘点中,已保存账面快照
pending_confirmation 已完成录入,等待差异确认
posted 差异已过账
cancelled 盘点取消

验收标准:

  • 开始盘点时保存盘点范围内的账面库存快照。
  • 可按仓库、库位、物料分类或指定物料创建盘点范围。
  • 盘点期间对应库存默认锁定,禁止普通出入库和调拨。
  • 系统自动计算实盘数量与快照数量的差异。
  • 差异确认必须记录原因和确认人。
  • 过账时自动生成盘盈或盘亏调整单及库存流水。
  • 无差异盘点也必须保留盘点结果。

故事 #STOCK-008:库存预留、释放及可用量查询

作为|生产人员或其他有权业务人员
我想要|为明确的业务需求预留库存,并在取消或完成需求时释放预留
以便|避免同一库存被多个需求重复占用

验收标准:

  • 预留必须关联来源业务类型和来源业务编号。
  • 预留数量不得超过当前可用库存。
  • 创建预留后账面库存不变,预留库存增加,可用库存减少。
  • 出库过账时消耗对应预留;需求取消或关闭时释放剩余预留。
  • 重复预留、释放或消耗操作必须幂等。
  • 支持按来源业务、仓库、库位和物料查询预留明细。

故事 #STOCK-009:库存流水和单据追溯

作为|仓库管理员、采购人员或审计人员
我想要|从物料、库存流水或业务单据任一入口追溯完整库存变化
以便|快速定位库存来源、去向和责任人

验收标准:

  • 每条流水包含组织、仓库、库位、物料、变动前数量、变动数量、变动后数量、单位、业务类型、关联单据、操作者和时间。
  • 流水一经生成不得修改或删除。
  • 支持按时间、物料、仓库、库位、业务类型、单据编号和操作者筛选。
  • 单据可以查看对应流水,流水可以打开来源单据。
  • 查询及导出遵守组织和数据权限。

5.7 BOM 与制造过程

故事 #BOM-001:BOM 表维护

作为|技术人员
我想要|为成品或半成品维护 BOM 清单
以便|明确产品组成并支持物料需求分析

验收标准:

  • BOM 必须属于当前经营组织。
  • BOM 明细包含子物料、单位用量、计量单位和可选损耗率。
  • 已生效版本不得直接修改,只能创建新版本。

故事 #BOM-002:BOM CSV 批量导入

作为|技术人员
我想要|通过 CSV 模板按层级批量导入 BOM
以便|快速维护复杂产品结构

验收标准:

  • 导入遵守统一批量导入规范。
  • CSV 模板至少包含根物料编码、BOM 版本、层级、物料编码、数量和计量单位。
  • 每个 BOM 分组必须从 0 层开始,0 层代表顶层物料;后续行按深度优先顺序描述其子项。
  • 相邻两行向下展开时层级最多增加 1;禁止从 1 层直接跳到 3 层。
  • 层级降低时可以回到任意已有上级;非 0 层物料必须能找到最近的上一层父项。
  • 系统按当前经营组织对物料编码执行完全匹配;匹配成功自动关联物料,未匹配、多重匹配或物料已作废时阻止导入。
  • 导入前校验单位、数量、重复子项、自引用和任意深度循环依赖,例如 A→B→C→A。
  • 环检测必须同时考虑本次 CSV 内容和系统中已有的 BOM 关系。
  • 错误报告必须包含 CSV 行号、物料编码、错误类型和可操作的修改说明。
  • 导入默认生成草稿版本,不直接生效。

故事 #BOM-003:制造订单发起

作为|生产人员
我想要|选择成品、BOM 版本、计划数量和目标仓库发起制造订单
以便|启动生产流程

验收标准:

  • 订单创建时锁定所用 BOM 版本,后续 BOM 变更不影响该订单。
  • 系统按计划数量展开需求并显示库存可用量和短缺量。
  • 作废物料、停用 BOM 版本不得用于新制造订单。

故事 #BOM-004:制造订单执行

作为|仓库管理员
我想要|根据制造订单执行领料和成品入库
以便|准确记录生产投入与产出

验收标准:

  • 每次领料和完工均生成独立且可追溯的库存业务单据。
  • 领料不得超过需求上限,超领必须具有专门权限并填写原因。
  • 成品入库数量不得超过订单允许数量。
  • 单次操作中的单据、库存流水和余额更新必须保持事务一致。

故事 #BOM-005:制造订单跟踪

作为|生产人员
我想要|查看制造订单的计划、已领料、已完工、剩余和短缺情况
以便|跟踪生产进度

故事 #BOM-006:BOM 递归查询

作为|技术人员、生产人员或采购人员
我想要|按指定成品、BOM 版本和计划数量递归展开所有层级物料
以便|分析库存能否满足生产需求

验收标准:

  • 按每层用量、单位换算和损耗率计算汇总需求。
  • 展示账面、预留、可用和短缺数量。
  • 检测到循环引用时停止展开并显示完整问题路径。

故事 #BOM-007:物料替代料管理

作为|技术人员
我想要|为物料设置替代物料、替代比例、优先级和有效期
以便|缺料时按受控规则选择替代方案

验收标准:

  • 替代关系必须属于同一经营组织。
  • 替代物料必须处于有效状态且具有兼容计量单位。
  • 实际使用替代料时记录原物料、替代物料、数量和操作者。

故事 #BOM-008:BOM 版本、生效日期、审批和停用

作为|技术人员
我想要|为 BOM 建立版本并控制审批、生效和停用
以便|保证生产始终使用经过批准且在有效期内的产品结构

BOM 版本状态:

状态 说明
draft 草稿,可编辑
pending_approval 待审批,不可随意修改
effective 已生效,可用于新制造订单
obsolete 已停用,仅供历史查询
rejected 审批驳回,可修改后重新提交

验收标准:

  • 同一父项物料可以存在多个版本,但同一时点只能有一个默认有效版本。
  • 版本号在同一父项物料内唯一。
  • 生效日期不得晚于失效日期。
  • 只有审批通过的版本可以生效。
  • 已生效版本不可直接修改;变更时复制生成新草稿版本。
  • 停用不影响已经锁定该版本的制造订单和历史查询。
  • 审批、生效和停用操作写入审计日志。

故事 #BOM-009:BOM 环路、自引用和重复子项校验

作为|技术人员
我想要|系统在保存、导入和生效 BOM 时自动检查结构合法性
以便|防止无法展开或重复计算的错误 BOM

验收标准:

  • 父项物料不得直接作为自己的子项。
  • 系统必须检测任意深度的循环引用,并显示完整循环路径。
  • 层级导入必须从 0 层开始,相邻行向下展开时不得跨级。
  • 同一 BOM 版本中相同子物料和相同替代组不得重复出现;如业务允许分行,必须明确工序或用途维度。
  • 子项数量和换算比例必须大于零。
  • 草稿可以保存非阻断性提示,但存在自引用、循环引用或无效数量时禁止提交审批及生效。
  • CSV 导入执行相同校验规则并返回具体行号。

故事 #BOM-010:制造订单部分领料、部分完工及关闭

作为|生产人员或仓库管理员
我想要|对制造订单分批领料、分批完工,并在结束时关闭订单
以便|支持真实生产过程中的多次执行

制造订单状态:

状态 说明
draft 草稿
released 已下达,可预留和领料
in_progress 已发生领料或完工
completed 计划数量已完工
closed 已人工关闭,不再允许新业务
cancelled 未发生库存业务前取消

验收标准:

  • 每次领料不得超过剩余需求与权限允许的超领上限。
  • 每次完工不得超过剩余可完工数量。
  • 系统累计展示计划、已领、已退、已完工和剩余数量。
  • 关闭前提示未领料、未消耗预留和未完工数量。
  • 关闭时自动释放剩余预留,不自动伪造成品入库。
  • 已发生库存业务的订单不能取消,只能完成或关闭;错误库存业务按撤销过账(冲销)流程处理。

5.8 批量操作

5.8.1 CSV/Excel 导入通用规范

  • 主数据导入支持 CSV 或 Excel;BOM 层级导入统一使用 CSV。
  • 模板必须包含模板类型和版本号,系统拒绝不支持的版本。
  • 正式导入前提供预校验,不通过时不写入业务数据。
  • 错误报告包含工作表、Excel 行号、字段名、原始值和错误原因。
  • 默认采用整批事务:任意一行失败,则整批不落库。
  • 每次导入生成唯一任务编号,重复提交同一任务不得重复写入。
  • 大文件使用后台任务处理,并显示等待、处理中、成功、失败状态及进度。
  • 系统限制文件格式、大小、行数和单元格内容。
  • 导入、下载错误报告和正式确认均遵守组织及数据权限。
  • 导出内容必须防止 Excel 公式注入。

故事 #BAT-001:CSV/Excel 批量导入物料

作为|技术人员
我想要|通过 CSV 或 Excel 模板批量导入物料主数据
以便|快速初始化大量物料数据

验收标准:

  • 校验必填字段、物料编码唯一性、疑似重复物料、物料分类、类型、单位和换算关系。
  • 物料编码必须在当前经营组织内完全匹配或保持唯一,不得跨经营组织关联数据。
  • 错误报告定位到具体文件行及字段。
  • 预校验通过后由用户确认正式导入。
  • 正式导入成功后为每条物料生成审计记录。

故事 #BAT-002:Excel 批量入库

作为|仓库管理员
我想要|通过 Excel 模板批量生成入库单草稿
以便|快速处理大量物料入库

验收标准:

  • 导入只生成草稿单,不直接改变库存。
  • 用户检查并提交后,由有权限人员执行过账。
  • 正式过账遵守库存单据幂等和事务规则。

故事 #BAT-003:批量勾选入库

作为|仓库管理员
我想要|勾选多个待处理明细批量生成或过账入库单
以便|提高高频操作效率

验收标准:

  • 批量操作前展示影响范围和汇总数量。
  • 任一明细校验失败时默认整批失败并显示原因。
  • 重复点击不得重复入库。

故事 #BAT-004:CSV/Excel 导出物料列表

作为|采购人员、销售人员或技术人员
我想要|将权限范围内的物料列表导出为 CSV 或 Excel
以便|离线查看或做其他处理

验收标准:

  • 导出范围与当前筛选条件一致。
  • 导出包含物料编码、名称、规格、类型、大类、小类、单位和状态;采购人员可额外导出其有权查看的供应商采购属性。
  • 导出字段按角色权限脱敏或隐藏。
  • 文件内容进行公式注入防护。
  • 导出操作写入审计日志。

5.9 权限与认证

权限模型采用“用户多角色 + 功能权限 + 用户数据范围”的结构:

  • 角色:用户职责集合,例如仓库管理员、采购人员;一个用户可以同时拥有多个角色。
  • 功能权限:每个角色可以对资源执行查看、新建、修改、提交、过账、撤销过账(冲销)、审批和导出等动作。
  • 用户数据范围:独立配置用户可访问的经营组织及仓库,不因拥有某个角色而自动扩大。

通用规则:

  • 超级管理员是最高权限角色,默认拥有全部功能权限和全部经营组织、仓库的数据权限,不受普通用户数据范围限制。
  • 系统必须至少保留一个启用状态的超级管理员;最后一个超级管理员不得被停用、删除或移除该角色。
  • 用户可以拥有多个启用状态的角色,不需要在角色之间手工切换。
  • 有效功能权限取该用户所有启用角色功能权限的并集。
  • 最终访问必须同时满足“拥有对应功能权限”和“目标数据属于用户授权范围”。
  • 本版本不设置角色间的显式拒绝冲突;未被任一角色授予的权限默认拒绝。
  • 服务端必须执行权限校验,前端菜单或按钮隐藏不能替代服务端校验。
  • 未明确授予的权限默认拒绝。
  • 高风险权限包括库存过账、撤销过账(冲销)、盘点确认、BOM 审批和用户授权,应单独配置。

故事 #AUTH-001:用户登录

作为|系统用户
我想要|使用用户名和密码登录系统
以便|访问被授权的系统功能

验收标准:

  • 密码采用安全哈希存储,不得明文保存或记录到日志。
  • 连续失败达到阈值后执行临时锁定或限流。
  • 登录成功返回用户角色、默认组织和可访问组织。
  • 停用用户立即禁止新登录。

故事 #AUTH-002:单点登录(SSO)

作为|超级管理员
我想要|配置统一身份认证并将外部账号绑定到本地用户
以便|用户一次登录即可访问系统

验收标准:

  • 明确身份提供方、回调地址和账号唯一标识。
  • 外部账号必须映射到本地用户、角色及组织数据范围。
  • 未完成映射或本地用户已停用时拒绝登录。
  • 是否保留本地密码登录由系统配置决定。

故事 #AUTH-003:JWT 令牌验证

作为|系统
我想要|通过访问令牌和刷新机制验证用户身份
以便|实现安全的无状态接口认证

验收标准:

  • 令牌包含用户标识、有效期和唯一令牌标识,不直接授信客户端传入的组织权限。
  • 服务端每次操作重新校验用户状态、当前组织和关键权限。
  • 支持访问令牌过期、刷新、主动注销和令牌撤销。
  • 密钥轮换后能够在过渡期安全验证合法令牌。

故事 #AUTH-004:基于角色的权限控制

作为|超级管理员
我想要|为角色配置资源、动作和数据范围权限
以便|保证数据安全和职责分离

验收标准:

  • 权限粒度至少覆盖查看、新建、修改、提交、过账、撤销过账(冲销)、审批和导出。
  • 关键接口必须具有自动化越权测试。
  • 无权限请求返回统一错误且不泄露目标数据是否存在。

故事 #AUTH-005:用户角色和数据范围分配

作为|超级管理员
我想要|为用户分配一个或多个角色,以及可访问组织和仓库
以便|控制用户的功能权限和数据范围

验收标准:

  • 用户与角色为多对多关系,同一用户可以同时分配多个角色。
  • “用户管理”页面负责用户账号、所属组织、默认组织、角色及可访问仓库范围;“角色与权限”页面负责角色及其功能权限,不把两类配置混在经营组织表单中。
  • 同一角色不得重复分配给同一用户,已停用角色不计入有效权限。
  • 用户不需要选择当前角色,系统自动合并其所有启用角色的功能权限。
  • 例如用户同时拥有“采购人员”和“仓库管理员”角色时,可以同时使用采购和仓库功能。
  • 用户至少拥有一个可访问组织才可以进入业务模块。
  • 默认组织必须属于可访问组织集合。
  • 新增、移除或停用角色后,用户的下一次请求立即按最新角色重新计算权限。
  • 移除组织或仓库权限后,用户后续请求立即不能访问对应数据。
  • 角色及数据范围变更写入审计日志。
  • 最后一个启用状态的超级管理员不得被停用、删除或移除超级管理员角色。

故事 #AUTH-006:菜单与按钮动态显示

作为|系统用户
我想要|登录后只看到有权使用的菜单和操作按钮
以便|界面简洁且避免误操作

验收标准:

  • 菜单和按钮根据功能权限动态生成。
  • 登录后的业务菜单采用以下固定信息架构:
    • “物料主数据”下包含“物料”和“基础配置”;“基础配置”页面以“物料分类”“计量单位”“编码规则”三个标签组织功能。
    • “公司组织”位于“物料主数据”和“业务伙伴”之间,下包含“组织管理”“用户管理”和“角色与权限”。
    • “业务伙伴”下包含“供应商”和“客户”,前端入口分开但底层复用业务伙伴及组织—伙伴关系。
    • “库存管理”下包含“库存查询”“入库管理”和“出库管理”;库存余额、预警、流水及仓库设置集中在“库存查询”页面。
  • 现有“物料申请”“申请审批”“日志记录”继续作为独立菜单保留原有名称、顺序、路由和权限逻辑,不纳入本轮菜单重组,也不改变其现有业务能力。
  • 物料主数据页面不得出现库存数量、库存状态或预警阈值;库存管理页面不得提供修改物料编码、分类或基本单位的入口。
  • 切换经营组织后重新计算可用功能和仓库范围。
  • 手工构造请求仍必须经过服务端权限校验。

5.10 全局审计

故事 #AUD-001:全局操作审计日志

作为|超级管理员或审计人员
我想要|查询系统关键业务和安全操作的审计日志
以便|追溯谁在何时对什么数据执行了什么操作

审计范围至少包括:

  • 登录成功、登录失败、注销和令牌撤销。
  • 用户、角色、功能权限、组织权限和仓库权限变更。
  • 物料、业务伙伴、仓库、库位、编码规则和 BOM 变更。
  • 单据提交、过账、取消、撤销过账(冲销)、审批和关闭。
  • 批量导入、导出及错误报告下载。

验收标准:

  • 日志包含组织、用户、角色、操作时间、对象类型、对象编号、动作、结果、修改前后值、请求标识、来源 IP 或终端信息。
  • 敏感字段如密码、令牌和密钥不得写入日志。
  • 审计日志只追加、不可由普通用户修改或删除。
  • 支持按时间、组织、用户、对象、动作和结果筛选。
  • 审计日志查看与导出本身也必须被审计。
  • 日志保留周期可配置,达到保留期限后的归档或清理必须由受控任务执行。

5.11 库存预警通知

故事 #NOTIFY-001:库存预警通知及处理状态

作为|仓库管理员或采购人员
我想要|在可用库存低于预警阈值时收到通知,并记录处理过程
以便|形成从发现风险到完成处理的闭环

预警状态:

状态 说明
open 新产生,尚未处理
acknowledged 已确认并指定处理人
resolved 库存恢复或确认无需处理
ignored 经授权忽略,必须填写原因

验收标准:

  • 预警按“经营组织 + 仓库 + 物料”计算,并使用可用库存判断。
  • 同一对象存在未关闭预警时不得重复创建相同预警。
  • 库存恢复到阈值以上时可以自动解决,也允许人工确认解决。
  • 确认、解决和忽略均记录操作者、时间和原因。
  • 通知只发送给有权访问对应组织和仓库的用户。
  • 支持站内通知;邮件、短信或企业消息渠道作为可选扩展。
  • 预警查询支持状态、组织、仓库、物料分类、处理人和时间筛选。

六、统一非功能要求

6.1 一致性与并发

  • 库存单据、流水和余额更新必须具备数据库事务一致性。
  • 编码生成、库存扣减、预留、调拨发出、调拨接收、过账和撤销过账(冲销)必须支持并发控制。
  • 所有可能被重复提交的写操作必须支持幂等。
  • 并发修改主数据和单据时使用版本号或等效机制检测覆盖冲突。

6.2 查询与导出

  • 列表查询统一支持分页、筛选、排序和明确的最大分页大小。
  • 查询和导出始终应用相同的组织、仓库和字段权限。
  • 大数据量导出使用后台任务,并提供任务状态和有效期受控的下载方式。

6.3 安全与隐私

  • 所有接口使用加密传输。
  • 密码、令牌、密钥和个人敏感信息不得输出到普通日志。
  • 文件上传必须校验扩展名、实际内容类型、大小和恶意内容。
  • 所有服务端查询均强制带入当前经营组织权限条件。

6.4 可观测性与恢复

  • 关键请求记录请求标识,以便关联应用日志、审计日志和库存单据。
  • 对过账失败、库存异常、导入失败和通知失败提供可监控指标。
  • 明确数据库备份频率、恢复目标和恢复演练机制。

七、用户故事完成标准

每条用户故事进入开发前必须补齐:

  • 前置条件和角色权限。
  • 正常流程及状态变化。
  • 字段级校验规则。
  • 异常、重复提交和并发处理。
  • 对库存、审计和通知的影响。
  • 数据范围和越权场景。
  • 可执行的 Given/When/Then 验收用例。

实现完成需满足:

  • 正常、异常、并发和越权测试通过。
  • 数据库约束与服务端校验共同保证核心不变量。
  • API、数据字典、状态机和用户操作说明同步更新。
  • 不以菜单隐藏、前端校验或人工约定替代服务端业务约束。

7.1 武汉真实数据验证

  • 主数据管理和 BOM 管理上线前,必须使用武汉真实数据库的只读副本完成验证,不直接连接或修改生产数据库。
  • 导入验证前记录武汉数据中的物料、分类、单位、供应商、物料供应商关系和 BOM 数量基线。
  • 测试数据必须按公司要求完成脱敏,并统一归属“武汉”经营组织,禁止混入北京或其他组织。
  • 主数据验证至少覆盖单条新增、修改、详情页作废、分类筛选、模糊搜索、CSV/Excel 批量导入和导出。
  • 供应商验证至少覆盖供应商列表筛选、详情信息、状态变更,以及供应商与物料双向多对多查询和维护。
  • BOM 验证至少覆盖 0 层顶层结构、正常多层导入、层级跳跃、物料未匹配、重复子项、自引用和 A→B→C→A 环路。
  • 导入失败必须输出具体文件行号和原因;修正源文件后可以重新预校验和导入。
  • 验收完成后核对成功导入数量、失败数量和错误报告,确保没有跨组织数据和静默丢失。

八、建议实施顺序

  1. 建立最小经营组织、用户组织权限、角色权限和审计底座。
  2. 优先完成物料主数据、分类、类型、单位、编码规则及 CSV/Excel 导入导出。
  3. 完成供应商列表、详情页和物料供应商多对多关系。
  4. 优先完成 BOM 维护、CSV 层级导入、物料匹配、层级校验和环检测。
  5. 完成仓库、库位、库存流水、入库、出库、调拨、盘点、预留和预警。
  6. 完成制造订单分批执行、性能优化和外部认证。

九、功能矩阵

说明:

  • ✅:该角色默认具备此功能权限。
  • ❌:该角色默认不具备此功能权限,可由超级管理员根据实际职责另行授权。
  • 本矩阵描述功能权限;实际访问还必须同时满足经营组织和仓库数据范围限制。
  • 超级管理员拥有全部功能权限和全部经营组织、仓库的数据权限,无需额外分配业务角色。
功能模块 仓库管理员 采购人员 技术人员 生产人员 销售人员 超级管理员
公共访问
用户登录、注销 ✅ ✅ ✅ ✅ ✅ ✅
查看个人角色和权限 ✅ ✅ ✅ ✅ ✅ ✅
查看及切换已授权经营组织 ✅ ✅ ✅ ✅ ✅ ✅
查看权限范围内的菜单和按钮 ✅ ✅ ✅ ✅ ✅ ✅
经营组织与数据范围
查看已授权经营组织 ✅ ✅ ✅ ✅ ✅ ✅
创建、启用、停用经营组织 ❌ ❌ ❌ ❌ ❌ ✅
配置用户可访问经营组织 ❌ ❌ ❌ ❌ ❌ ✅
配置用户默认经营组织 ❌ ❌ ❌ ❌ ❌ ✅
配置用户可访问仓库 ❌ ❌ ❌ ❌ ❌ ✅
编码规则
查看编码规则 ❌ ✅ ✅ ❌ ❌ ✅
配置编码规则 ❌ ❌ ❌ ❌ ❌ ✅
申请新物料编码 ❌ ❌ ✅ ❌ ❌ ✅
物料主数据
查看有效物料 ✅ ✅ ✅ ❌ ✅ ✅
查看已作废物料及历史 ✅ ✅ ✅ ❌ ❌ ✅
创建物料 ❌ ❌ ✅ ❌ ❌ ✅
修改物料基础信息 ❌ ❌ ✅ ❌ ❌ ✅
作废物料 ❌ ❌ ✅ ❌ ❌ ✅
执行重复物料检查 ❌ ❌ ✅ ❌ ❌ ✅
查看物料变更历史 ❌ ❌ ✅ ❌ ❌ ✅
维护物料分类和物料类型 ❌ ❌ ✅ ❌ ❌ ✅
维护计量单位和换算关系 ❌ ❌ ✅ ❌ ❌ ✅
维护物料供应商关系 ❌ ✅ ❌ ❌ ❌ ✅
业务伙伴
查看供应商 ❌ ✅ ❌ ❌ ❌ ✅
查看供应商详情及关联物料 ❌ ✅ ❌ ❌ ❌ ✅
新建、编辑、淘汰供应商 ❌ ✅ ❌ ❌ ❌ ✅
查看客户 ❌ ❌ ❌ ❌ ✅ ✅
新建和编辑客户 ❌ ❌ ❌ ❌ ✅ ✅
设置业务伙伴角色 ❌ ✅ ❌ ❌ ✅ ✅
设置供应商合作状态 ❌ ✅ ❌ ❌ ❌ ✅
仓库与库位
查看仓库和库位 ✅ ✅ ✅ ❌ ❌ ✅
创建、修改、启用、停用仓库 ❌ ❌ ❌ ❌ ❌ ✅
创建、修改、启用、停用库位 ✅ ❌ ❌ ❌ ❌ ✅
配置库存预警阈值 ✅ ✅ ❌ ❌ ❌ ✅
库存查询与操作
查看通用库存 ✅ ✅ ✅ ❌ ❌ ✅
查看成品可用库存 ❌ ❌ ❌ ❌ ✅ ✅
创建和修改入库单草稿 ✅ ❌ ❌ ❌ ❌ ✅
提交和过账入库单 ✅ ❌ ❌ ❌ ❌ ✅
创建和修改出库单草稿 ✅ ❌ ❌ ❌ ❌ ✅
提交和过账出库单 ✅ ❌ ❌ ❌ ❌ ✅
创建和提交仓库调拨单 ✅ ❌ ❌ ❌ ❌ ✅
执行调拨发出和接收 ✅ ❌ ❌ ❌ ❌ ✅
执行撤销过账(冲销) ✅ ❌ ❌ ❌ ❌ ✅
创建和执行库存盘点 ✅ ❌ ❌ ❌ ❌ ✅
确认盘点差异并过账 ✅ ❌ ❌ ❌ ❌ ✅
创建和释放生产库存预留 ❌ ❌ ❌ ✅ ❌ ✅
查看库存预留明细 ✅ ✅ ❌ ✅ ❌ ✅
查看库存流水和关联单据 ✅ ✅ ❌ ❌ ❌ ✅
导出库存流水 ✅ ✅ ❌ ❌ ❌ ✅
BOM 与制造
查看有效 BOM ❌ ✅ ✅ ✅ ❌ ✅
创建和维护 BOM 草稿 ❌ ❌ ✅ ❌ ❌ ✅
CSV 批量导入 BOM ❌ ❌ ✅ ❌ ❌ ✅
提交 BOM 审批 ❌ ❌ ✅ ❌ ❌ ✅
审批、驳回、生效和停用 BOM ❌ ❌ ❌ ❌ ❌ ✅
维护物料替代关系 ❌ ❌ ✅ ❌ ❌ ✅
执行 BOM 结构合法性检查 ❌ ❌ ✅ ❌ ❌ ✅
递归展开 BOM 和查看物料短缺 ❌ ✅ ✅ ✅ ❌ ✅
创建和下达制造订单 ❌ ❌ ❌ ✅ ❌ ✅
查看和跟踪制造订单 ✅ ❌ ❌ ✅ ❌ ✅
执行制造订单领料 ✅ ❌ ❌ ❌ ❌ ✅
执行制造订单成品入库 ✅ ❌ ❌ ❌ ❌ ✅
确认制造订单部分完工 ❌ ❌ ❌ ✅ ❌ ✅
关闭制造订单并释放剩余预留 ❌ ❌ ❌ ✅ ❌ ✅
批量导入与导出
下载物料导入模板 ❌ ❌ ✅ ❌ ❌ ✅
预校验及批量导入物料 ❌ ❌ ✅ ❌ ❌ ✅
下载入库导入模板 ✅ ❌ ❌ ❌ ❌ ✅
批量生成入库单草稿 ✅ ❌ ❌ ❌ ❌ ✅
批量勾选并确认入库 ✅ ❌ ❌ ❌ ❌ ✅
导出物料列表 ❌ ✅ ✅ ❌ ✅ ✅
查看本人发起的导入和导出任务 ✅ ✅ ✅ ❌ ✅ ✅
库存预警通知
查看库存预警 ✅ ✅ ❌ ❌ ❌ ✅
确认库存预警和指定处理人 ✅ ✅ ❌ ❌ ❌ ✅
解决或忽略库存预警 ✅ ✅ ❌ ❌ ❌ ✅
查看本人站内通知 ✅ ✅ ✅ ✅ ✅ ✅
用户、认证与权限
管理用户 ❌ ❌ ❌ ❌ ❌ ✅
分配用户角色 ❌ ❌ ❌ ❌ ❌ ✅
配置角色功能权限 ❌ ❌ ❌ ❌ ❌ ✅
配置用户组织和仓库数据范围 ❌ ❌ ❌ ❌ ❌ ✅
配置 SSO ❌ ❌ ❌ ❌ ❌ ✅
撤销用户令牌和会话 ❌ ❌ ❌ ❌ ❌ ✅
全局审计
查看全局审计日志 ❌ ❌ ❌ ❌ ❌ ✅
导出全局审计日志 ❌ ❌ ❌ ❌ ❌ ✅
查看库存过账和撤销过账审计 ✅ ❌ ❌ ❌ ❌ ✅

9.1 权限配置补充规则

  • 同一用户可以拥有多个启用角色,不需要手工切换角色;有效功能权限取所有启用角色的授权并集。
  • 用户的组织和仓库数据范围独立配置,不因增加角色而自动扩大。
  • 用户拥有功能权限但目标数据不在其组织或仓库授权范围内时,仍不得访问或操作。
  • 角色被移除或停用后,相关权限从用户下一次请求开始失效。
  • 库存过账、撤销过账(冲销)、盘点差异过账、BOM 审批和权限分配属于高风险操作,应独立授权。
  • 默认由超级管理员审批 BOM;如果后续需要严格的技术审签,可新增“技术审批人”角色,避免技术人员维护后自行审批。
  • 菜单和按钮根据权限动态显示,但所有权限必须由服务端再次校验。