QAUP_Management/.kiro/specs/traffic-light-ip-address-enhancement/tasks.md

72 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 实现计划
- [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_