72 lines
3.3 KiB
Markdown
72 lines
3.3 KiB
Markdown
# 实现计划
|
||
|
||
- [x] 1. 修改数据库表结构
|
||
- 创建数据库迁移脚本,为traffic_lights表添加ip_address和port字段
|
||
- 修改device_id字段为可选(允许NULL)
|
||
- 添加IP地址和端口组合的唯一约束索引
|
||
- 为现有记录设置默认IP地址和端口值
|
||
- _需求: 2.1, 2.2, 2.3, 2.5_
|
||
|
||
- [x] 2. 更新TrafficLight实体类
|
||
- 在TrafficLight实体类中添加ipAddress和port字段
|
||
- 修改deviceId字段的JPA注解,移除nullable=false约束
|
||
- 添加IP地址和端口字段的验证注解
|
||
- 更新构造函数和getter/setter方法
|
||
- _需求: 2.1, 2.2, 2.3_
|
||
|
||
- [x] 3. 增强TrafficLightRepository接口
|
||
- 添加findByIpAddressAndPort方法,支持基于IP和端口查询设备
|
||
- 添加findByIpAddress方法,支持基于IP地址查询设备列表
|
||
- 添加existsByIpAddressAndPort方法,检查IP端口组合是否存在
|
||
- 保持现有的findByDeviceId方法以维持兼容性
|
||
- _需求: 2.4, 2.5_
|
||
|
||
- [x] 4. 修改TrafficLightSignalParser解析器
|
||
- 实现parseSignalWithAddress方法,解析包含IP和端口信息的消息格式
|
||
- 添加extractIpAddress方法,使用正则表达式提取IP地址
|
||
- 添加extractPort方法,提取端口号并转换为整数
|
||
- 添加extractDiData方法,提取DI信号JSON数据部分
|
||
- 更新isValidSignal方法,验证新的消息格式
|
||
- _需求: 1.1, 1.2, 1.3, 1.4, 1.6_
|
||
|
||
- [x] 5. 更新TrafficLightStatus数据模型
|
||
- 在TrafficLightStatus类中添加ipAddress和port字段
|
||
- 添加generateDeviceIdentifier方法,当deviceId为空时生成IP:端口标识符
|
||
- 更新构造函数和相关方法
|
||
- 确保与现有代码的兼容性
|
||
- _需求: 1.3, 1.5_
|
||
|
||
- [x] 6. 增强TrafficLightService服务类
|
||
- 实现getOrCreateDeviceByAddress方法,根据IP和端口获取或创建设备
|
||
- 实现findDeviceByAddress方法,根据IP和端口查找设备
|
||
- 实现updateDeviceHeartbeatByAddress方法,基于IP和端口更新心跳
|
||
- 添加generateDefaultDeviceName方法,生成默认设备名称
|
||
- _需求: 2.4, 2.5_
|
||
|
||
- [x] 7. 修改DataProcessingService处理逻辑
|
||
- 更新processTrafficLightSignal方法,使用增强的解析器处理消息
|
||
- 修改设备查找逻辑,优先使用IP地址和端口进行设备匹配
|
||
- 更新设备心跳更新逻辑,基于IP地址和端口进行更新
|
||
- 添加异常处理,确保解析失败时不影响系统稳定性
|
||
- _需求: 1.3, 1.5, 1.6_
|
||
|
||
- [x] 8. 编写单元测试
|
||
- 为TrafficLightSignalParser编写消息解析测试,覆盖各种消息格式
|
||
- 为TrafficLightService编写设备管理测试,测试基于IP地址的操作
|
||
- 为TrafficLightRepository编写数据访问测试
|
||
- 测试异常情况处理,如格式错误、IP地址无效等
|
||
- _需求: 1.4, 1.6, 2.5_
|
||
|
||
- [x] 9. 执行数据库迁移和测试
|
||
- 在开发环境执行数据库迁移脚本
|
||
- 验证现有数据的兼容性和完整性
|
||
- 测试新的唯一约束是否正确工作
|
||
- 验证索引创建和查询性能
|
||
- _需求: 2.1, 2.2, 2.3, 2.5_
|
||
|
||
- [x] 10. 集成测试和验证
|
||
- 使用实际的红绿灯消息格式进行端到端测试
|
||
- 验证IP地址和端口信息的正确提取和存储
|
||
- 测试设备自动创建和更新功能
|
||
- 验证WebSocket消息中包含正确的IP地址和端口信息
|
||
- _需求: 1.1, 1.2, 1.3, 1.4, 1.5, 2.4_ |