207 lines
5.3 KiB
Markdown
207 lines
5.3 KiB
Markdown
# 数据模型统一重构方案
|
||
|
||
## 项目概述
|
||
**创建时间**: 2025-01-15
|
||
**执行模式**: 方案B - 完全统一数据模型
|
||
**目标**: 统一vehicle_id为数字ID,license_plate为车牌号,消除所有字段名不一致
|
||
|
||
## 用户需求
|
||
- 采用方案B,统一名称和含义
|
||
- license_plate_number和license_plate都采用license_plate
|
||
- 统一所有的名称和含义,去掉各种中间转换
|
||
- 其他表有类似问题也一样处理
|
||
|
||
---
|
||
|
||
## 详细分析
|
||
|
||
### 🎯 统一规则
|
||
|
||
1. **vehicle_id**: 所有表中统一为 `BIGINT` 数字ID(主键,自增)
|
||
2. **license_plate**: 所有表中统一为 `VARCHAR(50)` 车牌号字段名
|
||
3. **关联关系**: 通过 `vehicle_id` 进行主键关联,`license_plate` 作为业务标识
|
||
|
||
### 📊 影响范围分析
|
||
|
||
#### 数据库表结构变更
|
||
|
||
**QAUP-Management:**
|
||
```sql
|
||
-- 当前: sys_vehicle_info
|
||
vehicle_id BIGINT (主键)
|
||
license_plate_number VARCHAR(50) → license_plate VARCHAR(50)
|
||
|
||
-- 变更:重命名字段
|
||
ALTER TABLE sys_vehicle_info RENAME COLUMN license_plate_number TO license_plate;
|
||
```
|
||
|
||
**CollisionAvoidanceSystem:**
|
||
```sql
|
||
-- 当前: vehicle_locations
|
||
vehicle_id VARCHAR(50) (车牌号) → BIGINT (数字ID)
|
||
新增: license_plate VARCHAR(50) (车牌号)
|
||
|
||
-- 变更:类型转换 + 新增字段
|
||
ALTER TABLE vehicle_locations ADD COLUMN license_plate VARCHAR(50);
|
||
ALTER TABLE vehicle_locations ADD COLUMN vehicle_id_new BIGINT;
|
||
-- 数据迁移后删除旧字段,重命名新字段
|
||
```
|
||
|
||
#### Java代码变更统计
|
||
|
||
**QAUP-Management (预计15个文件):**
|
||
- `SysVehicleInfo.java` - 实体类字段重命名
|
||
- `SysVehicleInfoMapper.xml` - MyBatis映射更新
|
||
- `SysVehicleInfoMapper.java` - 接口方法参数
|
||
- `SysVehicleInfoService.java` - 服务层逻辑
|
||
- `SysVehicleInfoController.java` - 控制器
|
||
- 前端Vue组件 - 表单字段和API调用
|
||
|
||
**CollisionAvoidanceSystem (预计25个文件):**
|
||
- 所有包含 `vehicleId` 的实体类(字段类型变更)
|
||
- 所有相关的 Repository、Service、Controller
|
||
- DTO和转换器类
|
||
- WebSocket消息处理类
|
||
|
||
### 🔄 数据迁移策略
|
||
|
||
#### 第一阶段:数据结构准备
|
||
1. 创建临时字段
|
||
2. 建立车牌号到数字ID的映射表
|
||
3. 数据完整性检查
|
||
|
||
#### 第二阶段:数据迁移
|
||
1. 填充新字段数据
|
||
2. 验证数据一致性
|
||
3. 更新外键约束
|
||
|
||
#### 第三阶段:结构清理
|
||
1. 删除旧字段
|
||
2. 重命名新字段
|
||
3. 重建索引和约束
|
||
|
||
---
|
||
|
||
## 实施检查清单
|
||
|
||
### 1. 数据库结构变更脚本
|
||
- [ ] 创建统一的数据库变更脚本
|
||
- [ ] 包含回滚脚本
|
||
- [ ] 数据完整性验证
|
||
|
||
### 2. QAUP-Management代码更新
|
||
- [ ] 更新SysVehicleInfo实体类
|
||
- [ ] 更新MyBatis Mapper文件
|
||
- [ ] 更新Service层代码
|
||
- [ ] 更新Controller层代码
|
||
- [ ] 更新前端Vue组件
|
||
|
||
### 3. CollisionAvoidanceSystem代码更新
|
||
- [ ] 更新所有实体类的vehicle_id字段类型
|
||
- [ ] 更新Repository接口
|
||
- [ ] 更新Service层逻辑
|
||
- [ ] 更新Controller层代码
|
||
- [ ] 更新DTO和转换器
|
||
- [ ] 更新WebSocket消息处理
|
||
|
||
### 4. 数据迁移执行
|
||
- [ ] 备份现有数据
|
||
- [ ] 执行结构变更脚本
|
||
- [ ] 执行数据迁移脚本
|
||
- [ ] 验证数据完整性
|
||
|
||
### 5. 测试验证
|
||
- [ ] 单元测试更新
|
||
- [ ] 集成测试更新
|
||
- [ ] 功能测试验证
|
||
- [ ] 性能测试验证
|
||
|
||
### 6. 文档更新
|
||
- [ ] API文档更新
|
||
- [ ] 数据库文档更新
|
||
- [ ] 使用指南更新
|
||
- [ ] 版本变更记录
|
||
|
||
---
|
||
|
||
## 风险评估
|
||
|
||
### 🔴 高风险点
|
||
1. **数据完整性风险**: 迁移过程中可能的数据丢失
|
||
2. **接口兼容性风险**: 外部系统调用可能受影响
|
||
3. **系统停机风险**: 结构变更需要服务停机
|
||
|
||
### 🟡 中风险点
|
||
1. **代码兼容性**: 大量代码变更可能引入新bug
|
||
2. **性能影响**: 索引重建可能影响查询性能
|
||
3. **回滚复杂度**: 变更范围大,回滚操作复杂
|
||
|
||
### 🟢 低风险点
|
||
1. **业务逻辑**: 核心业务逻辑不变
|
||
2. **用户体验**: 前端界面基本不变
|
||
|
||
---
|
||
|
||
## 实施计划
|
||
|
||
### 准备阶段(1-2天)
|
||
1. 创建完整的数据库变更脚本
|
||
2. 创建车牌号到数字ID的映射关系
|
||
3. 准备回滚脚本和验证脚本
|
||
|
||
### 开发阶段(3-5天)
|
||
1. 并行更新两个项目的代码
|
||
2. 更新所有相关测试用例
|
||
3. 本地环境验证
|
||
|
||
### 测试阶段(2-3天)
|
||
1. 完整的数据迁移测试
|
||
2. 功能回归测试
|
||
3. 性能影响评估
|
||
|
||
### 部署阶段(1天)
|
||
1. 生产环境数据备份
|
||
2. 服务停机窗口执行变更
|
||
3. 验证和监控
|
||
|
||
---
|
||
|
||
## 当前执行步骤
|
||
> 正在执行: "1. 分析所有相关表和字段,制定统一的数据模型重构方案"
|
||
|
||
## 后续步骤预览
|
||
1. 创建数据库结构变更脚本
|
||
2. 更新QAUP-Management Java实体类
|
||
3. 更新CollisionAvoidanceSystem Java实体类
|
||
4. 同步Mapper和Repository更新
|
||
5. 更新Service层代码
|
||
6. 更新API接口
|
||
7. 更新前端组件
|
||
8. 创建数据迁移脚本
|
||
9. 更新测试用例
|
||
10. 完整验证和测试
|
||
|
||
---
|
||
|
||
## 完成标准
|
||
|
||
### 数据模型统一
|
||
- [ ] 所有表的vehicle_id都是BIGINT类型
|
||
- [ ] 所有表的车牌号字段都叫license_plate
|
||
- [ ] 消除所有字段名不一致
|
||
|
||
### 代码质量
|
||
- [ ] 所有编译错误已解决
|
||
- [ ] 所有单元测试通过
|
||
- [ ] 代码风格一致
|
||
|
||
### 功能验证
|
||
- [ ] 车辆管理功能正常
|
||
- [ ] 实时位置监控正常
|
||
- [ ] 数据关联查询正常
|
||
- [ ] API接口响应正确
|
||
|
||
### 性能验证
|
||
- [ ] 查询性能不降低
|
||
- [ ] 数据库索引优化
|
||
- [ ] 内存使用正常 |