# 06-决策记录

## DR-001 公司编码编辑只读并由后端保护

- 决策：新增时公司编码必填；编辑时前端禁用；编辑存储过程不更新公司编码。
- 原因：需求明确“公司编码为必填且不可被修改”。仅前端禁用不足以防止接口绕过。
- 影响：历史数据若公司编码为空，编辑时不会强制补齐；如后续要求历史数据也完整，需要专项清洗。

## DR-002 生产用名和规格/型号复用旧字段

- 决策：生产用名使用 `设备名称`，规格/型号使用 `设备型号`。
- 原因：需求明确“复用设备名称”“复用设备型号”，保持与既有存储过程和其他页面兼容。
- 影响：其他依赖 `设备管理_设备信息_查询` 的页面仍能使用旧字段。

## DR-003 工位绑定存储为逗号分隔工位号

- 决策：前端多选展示工位名称，提交时保存工位号逗号字符串到 `工位绑定`。
- 原因：当前系统通用参数传递和旧表结构以简单字段为主，本轮避免新建关系表扩大影响面。
- 影响：后续如需要按单工位统计或约束唯一性，应迁移为设备-工位绑定明细表。

## DR-004 证书有效期排序前后端都处理

- 决策：数据库查询过程增加预警排序；前端 `sortedTableData` 再按同样规则排序并控制行背景色。
- 原因：后端保证分页查询顺序，前端保证当前页显示稳定和颜色一致。
- 影响：分页总数据的全局置顶依赖数据库排序；前端只处理当前页。

## DR-005 SQL 脚本使用可重复执行字段判断

- 决策：新增字段使用 `COL_LENGTH` 判断存在后再 `ALTER TABLE ADD`。
- 原因：避免脚本重复执行时报“列已存在”。
- 影响：字段类型若后续要调整，需另起变更脚本，不能靠本脚本自动修改类型。

## DR-006 Excel 名称与生产用名分开保存

- 决策：Excel `名称` 保存到新增数据库字段 `名称`，页面显示为“设备名称”；Excel `生产用名` 继续保存到原字段 `设备名称`，页面显示为“生产用名”。
- 原因：原系统多处依赖 `设备名称` 字段作为生产用名/设备简称，直接改语义会影响其他页面。
- 影响：后续涉及“设备名称”时应先确认是新字段 `名称` 还是旧字段 `设备名称`。

## DR-007 Excel 导入按公司编码 MERGE

- 决策：设备信息 Excel 导入按 `公司编码` 做 `MERGE`，匹配则更新，不匹配则新增。
- 原因：用户要求把 Excel 数据插入数据库，但导入脚本可能被重复执行；使用 `MERGE` 可以降低重复数据风险。
- 影响：Excel 中公司编码不是全局唯一的行会被视为同一设备；后续如要支持一编码多设备，需要新增更稳定的唯一键规则。

## DR-008 Excel 日期按显示值修正

- 决策：首次导入发现日期早一天后，单独使用 Excel 单元格显示值生成修正脚本，不重新执行整份导入脚本。
- 原因：Node 读取 Excel 日期对象时受时区影响，显示值更贴近业务人员在表格中看到的日期。
- 影响：后续导入 Excel 日期时，应优先使用单元格显示文本或显式本地日期解析。
