4.1 KiB
4.1 KiB
实现计划
-
1. 创建数据库表和实体类
- 创建路口信息表(intersections)和红绿灯设备表(traffic_lights)的SQL脚本
- 实现Intersection和TrafficLight实体类,包含JPA注解
- 创建对应的Repository接口,继承JpaRepository
- 需求: 1.1, 4.5, 4.6
-
2. 实现红绿灯信号解析器
- 创建SignalState枚举类,定义红绿灯状态(RED/YELLOW/GREEN/UNKNOWN)
- 实现TrafficLightStatus数据模型类,包含设备ID、路口ID、状态等字段
- 实现TrafficLightSignalParser类,解析DI格式JSON信号为内部状态
- 编写信号解析的单元测试,覆盖正常和异常情况
- 需求: 2.1, 2.2, 2.3, 2.4, 2.5, 2.6
-
3. 实现路口和设备管理服务
- 创建IntersectionService类,提供路口信息的CRUD操作
- 创建TrafficLightService类,提供红绿灯设备的管理功能
- 实现设备在线状态和心跳时间的更新方法
- 编写服务层的单元测试
- 需求: 4.1, 4.5, 5.5
-
4. 实现TCP服务器监听红绿灯信号
- 创建TrafficLightTcpServer类,使用Java NIO实现TCP服务器
- 实现多客户端连接处理,支持并发连接
- 添加连接管理功能,包括连接建立、断开和重连处理
- 集成Spring配置,支持端口、最大连接数等参数配置
- 编写TCP服务器的集成测试
- 需求: 1.1, 1.2, 1.4, 1.5, 4.2, 4.6, 5.1
-
5. 实现数据采集器集成TCP服务器
- 创建TrafficLightDataCollector类,集成到现有数据采集框架
- 实现TCP服务器接收到信号后的数据传递机制
- 添加数据采集统计功能,记录接收信号数量和错误次数
- 集成到DataCollectorService的定时任务中
- 需求: 1.2, 1.3, 4.3, 4.4
-
6. 扩展数据处理服务处理红绿灯信号
- 在DataProcessingService中添加processTrafficLightSignal方法
- 实现设备验证逻辑,检查设备是否存在和激活
- 实现路口信息查询,获取位置坐标等信息
- 创建TrafficLightStatusPayload,包含完整的路口和设备信息
- 更新设备心跳时间和在线状态
- 需求: 2.1, 2.4, 2.5, 5.4, 5.6
-
7. 实现WebSocket事件发布和广播
- 扩展现有TrafficLightStatusEvent,支持新的数据结构
- 在数据处理服务中发布红绿灯状态变更事件
- 创建或更新TrafficLightStatusEventListener,处理事件广播
- 确保WebSocket消息格式符合前端要求
- 需求: 3.1, 3.2, 3.3, 3.5, 3.6
-
8. 添加配置管理和错误处理
- 在application.yml中添加红绿灯相关配置项
- 实现配置类TrafficLightProperties,绑定配置属性
- 添加全局异常处理,处理TCP连接、解析错误等异常
- 实现优雅关闭机制,确保TCP服务器正确关闭
- 需求: 4.1, 4.2, 4.3, 4.4, 5.1, 5.2, 5.3
-
9. 实现数据库初始化和管理接口
- 创建数据库迁移脚本,初始化路口和设备表
- 实现路口管理的REST API,支持路口信息的增删改查
- 实现设备管理的REST API,支持设备信息的管理
- 添加数据验证和约束检查
- 需求: 4.5, 4.6, 5.6
-
10. 编写集成测试和端到端测试
- 创建模拟红绿灯硬件的测试客户端
- 编写TCP服务器到WebSocket广播的端到端测试
- 测试多设备并发连接和信号处理
- 测试异常情况处理,如网络断开、格式错误等
- 验证性能指标,确保满足每秒信号处理要求
- 需求: 1.3, 1.4, 2.6, 5.1, 5.2, 5.3, 5.4
-
11. 添加监控和日志记录
- 实现处理统计功能,记录信号接收和处理数量
- 添加性能监控,记录处理延迟和错误率
- 配置日志级别,确保调试和生产环境的日志合理
- 实现健康检查接口,监控TCP服务器和处理服务状态
- 需求: 4.3, 4.4, 5.4
-
12. 系统集成和部署准备
- 将所有组件集成到现有Spring Boot应用中
- 更新Docker配置,确保TCP端口正确暴露
- 编写部署文档,说明配置和启动步骤
- 进行系统级测试,验证与现有功能的兼容性
- 需求: 1.5, 4.1, 4.2