Files
shanxia2.0/openspec/changes/dibang-migration/specs/dibang-schema/spec.md
T
2026-06-10 22:59:34 +08:00

48 lines
2.2 KiB
Markdown

## ADDED Requirements
### Requirement: 地磅业务表 DDL
系统 SHALL 在 shanxia2.0 库中提供四张地磅业务表:`db_purchase_plan`、`db_weighing_slip`、`db_inbound_outbound`、`db_vehicle`。每张表 SHALL 使用 `VARCHAR(64)` UUID 主键,并在业务字段之后包含 database-conventions 规定的公共字段(`tenant_no` 至 `del_flag`)。
#### Scenario: 表结构符合公共字段约定
- **WHEN** 查阅 `docs/sql/shanxia2.0.sql` 中 `db_purchase_plan` 定义
- **THEN** 可见 `id` 为 VARCHAR(64),且含 `tenant_no`、`create_time`、`update_time`、`del_flag` 等公共字段
#### Scenario: 关联字段为 UUID
- **WHEN** 查阅 `db_weighing_slip` 表定义
- **THEN** `purchase_plan_id` 与 `inbound_outbound_id` 为 VARCHAR(64),可为 NULL
### Requirement: 业务字段保留与原系统语义
四表 SHALL 保留原地磅核心业务字段名与语义(如 `plan_no`、`execution_status`、`cargo_name`、`is_voided`、`auto_generate_enabled`),仅将不符合规范的类型(如 int 主键、varchar 时间、is_deleted)改为规范形式。
#### Scenario: 地磅单保留作废标记
- **WHEN** 查阅 `db_weighing_slip` 表定义
- **THEN** 存在 `is_voided` 字段(0 正常,1 作废),与 `del_flag` 并存
#### Scenario: 计划表保留自动生成字段
- **WHEN** 查阅 `db_purchase_plan` 表定义
- **THEN** 存在 `auto_generate_enabled`、`auto_generate_end_month`、`auto_generate_last_month` 字段
### Requirement: 历史数据迁移脚本
项目 SHALL 提供可将原地磅库(`dibang.sql` 或生产库)四表数据导入 shanxia2.0 的迁移脚本,生成新 UUID 并维护旧 int id 到新 id 的映射,重写表间关联 ID。
#### Scenario: 迁移后关联完整
- **WHEN** 对迁移后的 `db_weighing_slip` 抽样检查 `purchase_plan_id`
- **THEN** 非 NULL 的 `purchase_plan_id` 均能在 `db_purchase_plan.id` 中找到对应记录
### Requirement: DDL 快照维护
表结构变更 SHALL 同步维护于 `docs/sql/`(增量脚本及/或 `shanxia2.0.sql` 全量快照)。
#### Scenario: 新环境建表
- **WHEN** 在新 MySQL 实例执行项目提供的地磅 DDL 脚本
- **THEN** 四张 `db_*` 表创建成功且无语法错误