06-决策记录
决策记录说明
本文记录库存调拨功能中的关键决策。后续变更时,优先查阅本文,避免重复争论已经确定的技术和业务选择。
ADR-001:不做完整调拨单流程
| 项目 |
内容 |
| 状态 |
已采纳 |
| 决策 |
库存调拨只做库存盘点组件内轻量调拨 |
| 原因 |
用户明确场景是盘点时快速把库存从原库位调到目标库位,并支持一键新建库位 |
| 影响 |
不新增独立调拨单页面、不做审批、不做打印 |
| 后续变更条件 |
如果业务要求调拨审批、打印、跨仓库流转,再新增独立调拨单模块 |
ADR-002:使用后端原子存储过程完成调拨
| 项目 |
内容 |
| 状态 |
已采纳 |
| 决策 |
新增 仓储管理_库存盘点_库存调拨,由一个事务完成扣减和增加 |
| 原因 |
前端拆成两次请求会出现只扣不加、只加不扣、并发负库存风险 |
| 影响 |
前端只提交一次调拨请求,库存一致性由数据库保证 |
| 后续变更条件 |
如果未来迁移到后端服务层,也必须保留事务边界 |
ADR-003:调拨数量使用 FLOAT
| 项目 |
内容 |
| 状态 |
已采纳 |
| 决策 |
@调拨数量、库存记录字段按 float 处理 |
| 原因 |
现有库存表 货位存量 使用 float,库存可能存在小数 |
| 影响 |
调拨支持小数库存 |
| 后续变更条件 |
若未来统一库存数量精度,应迁移为 decimal 并同步所有库存过程 |
ADR-004:以后端当前库存为准
| 项目 |
内容 |
| 状态 |
已采纳 |
| 决策 |
前端传 原库存数 只作参考,后端必须重新查询并锁定当前库存 |
| 原因 |
多人同时操作时,前端库存可能已过期 |
| 影响 |
可以避免并发调拨造成负库存 |
| 后续变更条件 |
无。库存扣减类业务都应遵守该规则 |
ADR-005:区分普通物料和通用件库存表
| 项目 |
内容 |
| 状态 |
已采纳 |
| 决策 |
根据 @类型 = N'通用件' 选择库存表 |
| 原因 |
现有系统中通用件使用 库存管理_半成品与货位对照表,普通物料使用 库存管理_物料与货位对照表 |
| 影响 |
前端必须传 类型 参数 |
| 后续变更条件 |
如果后续统一库存表,可移除分支 |
ADR-006:目标库位不存在同物料库存时新增记录
| 项目 |
内容 |
| 状态 |
已采纳 |
| 决策 |
目标库位已有同物料库存则累加,没有则新增库存记录 |
| 原因 |
盘点调拨常见场景是将物料拆分到新库位 |
| 影响 |
调拨过程需要同时处理 update 和 insert |
| 后续变更条件 |
如果业务规定必须先建库存记录,再调拨,可改为无记录时报错 |
ADR-007:原库位库存为 0 时保留记录
| 项目 |
内容 |
| 状态 |
已采纳 |
| 决策 |
调拨后原库位库存为 0,不物理删除库存记录 |
| 原因 |
保留历史库位关系,便于追溯,也符合盘点页库存可编辑为 0 的现状 |
| 影响 |
查询页面是否显示 0 库存由查询条件控制 |
| 后续变更条件 |
如果业务要求隐藏 0 库存,优先改查询,不建议删除记录 |
ADR-008:一键新建库位复用现有接口
| 项目 |
内容 |
| 状态 |
已采纳 |
| 决策 |
复用 仓储管理_库位_验证是否存在 和 仓储管理_库位_增加数据 |
| 原因 |
系统已有库位校验和新增能力,不重复造接口 |
| 影响 |
新库位创建逻辑与现有库位维护规则保持一致 |
| 后续变更条件 |
如果库位维护规则变化,应统一改库位接口 |
ADR-009:新增轻量调拨记录表
| 项目 |
内容 |
| 状态 |
已采纳 |
| 决策 |
新增 库存盘点_调拨记录 |
| 原因 |
旧库存修改记录无法完整表达“从哪个库位调到哪个库位” |
| 影响 |
后续可以按记录追溯调拨数量、原库位、目标库位、操作人 |
| 后续变更条件 |
如需要调拨单,可在该记录基础上扩展主从表 |
ADR-010:暂不生成 PDF 和截图
| 项目 |
内容 |
| 状态 |
已采纳 |
| 决策 |
当前阶段只保留 Markdown 和命令/数据库证据 |
| 原因 |
功能尚需页面真实数据联调,截图/PDF 应在最终页面验收时生成 |
| 影响 |
05-验收证据.md 中页面截图、PDF、report_id 暂为空 |
| 后续变更条件 |
页面实测完成后补充截图或 PDF 验收材料 |