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

2.2 KiB

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_* 表创建成功且无语法错误