# 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 验收材料 |