# 第一阶段数据库迁移 本阶段将公司组织、业务伙伴、仓库/库位、物料基础配置和库存余额拆分到独立表。旧的 `materials.current_stock` 与 `materials.warning_stock` 暂时保留用于回滚观察,但应用代码不再读写。 ## 执行顺序 1. 备份现有数据库,并暂停入库、出库和物料申请操作。 2. 为当前 shell 设置 `DB_DSN`,不要把账号密码写入仓库。 3. 在项目根目录运行: ```powershell go run ./cmd/migrate ``` 4. 确认迁移 `001` 到 `006` 均为非 dirty 状态,并检查 `006` 最后的库存差异查询没有结果。 5. 发布后端和前端,再恢复库存操作。 迁移器按文件名顺序执行并记录在 `schema_migrations`。MySQL DDL 可能隐式提交;如果某个版本为 dirty,迁移器会停止,必须根据报错的语句编号人工核对并修复,不能直接假定事务已回滚。 ## 核对重点 - 每个旧用户均已分配默认组织和默认仓库。 - 旧物料数量与 `inventory_balances.on_hand` 汇总一致。 - 旧预警值与 `stock_warning_rules.minimum_available` 一致。 - `materials` API 响应不再包含库存数量和预警值。 - 公司组织位于 `organizations`,外部公司位于 `business_partners`,合作关系位于 `organization_partners`。 不要在生产库直接试跑。应先在数据库副本验证一次;当前自动化测试只验证迁移执行器和应用查询, 不替代生产数据副本的迁移核对。