379 lines
17 KiB
Markdown
379 lines
17 KiB
Markdown
# 碰撞避免系统变更日志
|
||
|
||
本文档记录碰撞避免系统的所有重要变更,包括新功能、改进和修复。
|
||
|
||
## [0.6.10] - 2025-01-15
|
||
|
||
### 新增功能 (Features)
|
||
- **数据库迁移文件完善**: 创建缺失的V002核心表迁移文件
|
||
- 新增 `V002__create_core_tables.sql` 迁移文件,基于 `create_tables.sql` 内容
|
||
- 建立完整的数据库迁移序列:V001(PostGIS扩展) → V002(核心表) → V003(车辆指令表)
|
||
- 移除重复的PostGIS扩展创建语句,确保迁移文件逻辑清晰
|
||
- 包含vehicle_locations、airport_areas、vehicle_trajectories三个核心表的完整结构
|
||
- 包含所有PostGIS空间索引、JSONB索引、触发器和数据清理函数
|
||
- 遵循Flyway迁移文件命名规范和最佳实践
|
||
|
||
### 技术改进 (Technical Improvements)
|
||
- **迁移文件组织**: 建立了标准化的数据库版本控制体系
|
||
- **PostGIS架构**: 确保核心空间数据表结构的迁移可追溯性
|
||
- **数据库管理**: 提升了数据库schema变更的可维护性和部署一致性
|
||
|
||
## [0.6.9] - 2025-01-15
|
||
|
||
### 修复 (Fixes)
|
||
- **Hibernate配置错误修复**: 解决集成测试失败问题
|
||
- 修正 `generate_statistics` 和 `log_slow_query` 配置错误
|
||
- 移除与Spring Boot 3.x冲突的事务管理配置
|
||
- 修复 JSONB 查询参数语法冲突
|
||
- 修正 `AirportAreaRepository.findByAreaName` 方法名
|
||
- **PostgreSQL事务管理优化**: 移除 `provider_disables_autocommit` 配置冲突
|
||
- **JPA Repository查询修复**: 统一使用标准的命名参数和JSONB函数
|
||
|
||
### 技术改进 (Technical Improvements)
|
||
- **配置简化**: 移除复杂的自定义数据库配置,使用Spring Boot默认策略
|
||
- **测试稳定性**: 集成测试 `VehicleDataPersistenceServiceIntegrationTest` 全部通过
|
||
- **兼容性提升**: 确保与PostgreSQL 17 + PostGIS + Hibernate Spatial完全兼容
|
||
|
||
### 测试 (Testing)
|
||
- ✅ 所有9个集成测试方法成功执行
|
||
- ✅ ApplicationContext正常启动,无配置冲突
|
||
- ✅ 事务回滚功能正常工作
|
||
|
||
## 版本 0.6.8 (2025-01-15)
|
||
### 新增功能
|
||
- **外部接口对接完整实现**: 根据官方API文档实现无人车控制接口
|
||
- 实现VehicleCommandEntity实体类,支持PostGIS空间数据存储
|
||
- 创建VehicleCommandRepository,提供丰富的查询方法
|
||
- 添加数据库迁移脚本,创建vehicle_commands表和PostGIS索引
|
||
- 实现UnmannedVehicleController控制器,提供三个核心API端点
|
||
- 创建UnmannedVehicleControlService服务类,处理核心业务逻辑
|
||
- 实现VehicleDataPersistenceService,选择性数据持久化策略
|
||
- 扩展DataCollectorService,集成选择性存储逻辑
|
||
- 添加VehicleControlExceptionHandler统一异常处理
|
||
- 更新应用配置,添加无人车控制相关参数
|
||
|
||
### 数据持久化策略
|
||
- **选择性存储**: 仅无人车数据持久化存储,其他车辆数据仅实时处理
|
||
- 无人车控制指令和位置数据保存到PostgreSQL数据库
|
||
- 航空器和特种车辆数据仅用于实时处理和WebSocket推送
|
||
- 支持PostGIS空间数据类型和空间索引优化
|
||
|
||
### API接口
|
||
- **控制指令接口**: POST /api/unmanned-vehicle/command
|
||
- 支持ALERT、SIGNAL、WARNING、RESUME指令类型
|
||
- 包含空间位置数据和相对运动参数
|
||
- 完整的参数验证和错误处理
|
||
- **位置上报接口**: GET /api/unmanned-vehicle/location/{vehicleId}
|
||
- 获取指定无人车实时位置信息
|
||
- 包含经纬度、速度、方向等核心数据
|
||
- **状态查询接口**: POST /api/unmanned-vehicle/state
|
||
- 支持单个车辆或所有车辆状态查询
|
||
- 包含登录状态、故障信息、控制模式等完整状态
|
||
|
||
### 架构重构
|
||
- **DTO统一管理**: 重构Response类到common.model.dto包
|
||
- **dataCollector DTO重构**: 移动相关DTO类到正确包结构
|
||
- **VehicleStateRequest**: 新增DTO类支持状态查询请求体
|
||
|
||
### 测试覆盖
|
||
- **单元测试**: UnmannedVehicleControllerTest,覆盖所有控制器方法
|
||
- **集成测试**: VehicleDataPersistenceServiceIntegrationTest,测试数据持久化策略
|
||
- **测试修复**: 解决Mock参数匹配、返回消息一致性等问题
|
||
|
||
### 文档完善
|
||
- **API文档**: 创建完整的API接口文档,包含请求响应示例
|
||
- **配置说明**: 详细的配置参数和数据持久化策略说明
|
||
- **安全考虑**: API安全、数据验证、性能监控等指导
|
||
|
||
### 技术特性
|
||
- 完整的PostGIS空间数据支持
|
||
- 批量数据处理优化
|
||
- 统一异常处理机制
|
||
- 配置化参数管理
|
||
- 符合Spring Boot最佳实践的分层架构
|
||
|
||
## 版本 0.6.7 (2024-12-19)
|
||
### 新增功能
|
||
- **数据库连接池优化**: 实现HikariCP连接池完整配置和性能优化
|
||
- 配置HikariCP连接池参数:最大连接数20,最小空闲连接5,连接生命周期管理
|
||
- 添加PostgreSQL性能优化参数:预编译语句缓存、批量插入重写、超时设置
|
||
- 配置PostGIS空间查询优化:连接池针对空间查询的特殊配置
|
||
- **Hibernate性能调优**: 全面优化JPA/Hibernate配置
|
||
- 启用二级缓存和查询缓存,配置JCache缓存工厂
|
||
- 配置批量操作:批量大小50,排序插入/更新,版本化数据批处理
|
||
- 优化空间数据处理:PostGIS连接查找器,空间查询fetch size配置
|
||
- **数据库性能监控**: 创建DatabasePerformanceConfig配置类
|
||
- 实时连接池状态监控:连接使用率、等待线程数警告
|
||
- Hibernate统计信息收集:查询执行次数、缓存命中率、事务统计
|
||
- 定期性能报告:每5分钟生成详细的数据库性能报告
|
||
- 数据库健康检查:通过Actuator endpoint提供连接池状态
|
||
- **日志优化**: 配置数据库和性能相关的详细日志
|
||
- HikariCP连接池日志、Hibernate SQL日志、PostGIS空间查询日志
|
||
- SQL参数绑定日志、事务日志、查询性能日志
|
||
- 优化日志格式,便于性能分析和问题排查
|
||
|
||
### 技术改进
|
||
- **连接池管理**: HikariCP替代默认连接池,提供更好的性能和监控
|
||
- **缓存策略**: 多层缓存配置,提升查询性能,减少数据库负载
|
||
- **批处理优化**: 针对PostGIS空间数据的批量操作优化
|
||
- **监控体系**: 完整的数据库性能监控和告警机制
|
||
|
||
## 版本 0.6.6 (2024-12-19)
|
||
### 修复
|
||
- **SQL表结构修正**: 修正PostGIS数据库表结构,确保与JPA实体类完全匹配
|
||
- 修正`airport_areas`表字段名称:
|
||
- `area_name` → `name`
|
||
- `area_type` → `type`
|
||
- `geometry` → `boundary`
|
||
- `is_active` → `enabled`
|
||
- 新增`area_id`字段,对应实体类的区域标识符
|
||
- 扩展表字段以支持实体类的所有属性:
|
||
- 添加`speed_limit_kph`、`restricted`等基础限制字段
|
||
- 添加`allowed_vehicle_types`、`allowed_aircraft_types` JSONB字段
|
||
- 添加`max_height`、`max_weight`等扩展限制字段
|
||
- 添加`active_time`、`expiry_time`时间控制字段
|
||
- 修正`vehicle_locations`表字段:
|
||
- 添加`data_quality`字段,移除`accuracy`和`data_source`字段
|
||
- 统一时间戳字段类型为`TIMESTAMP`
|
||
- 更新所有相关索引名称和示例数据,确保与新表结构一致
|
||
|
||
### 技术改进
|
||
- **数据库兼容性**: 确保Spring Data JPA能够正确映射实体类到数据库表
|
||
- **空间索引优化**: 更新PostGIS空间索引以匹配新的字段名称
|
||
- **JSONB查询支持**: 优化车辆类型和航空器类型的JSONB字段索引
|
||
|
||
## 版本 0.6.5 (2024-12-19)
|
||
### 新增功能
|
||
- 实现PostGIS Redis缓存策略完整架构
|
||
- 扩展RedisConfig配置,支持PostGIS实体类序列化(VehicleLocation、AirportArea)
|
||
- 创建CacheConstants常量定义类,统一管理缓存键前缀和过期时间
|
||
- 新增VehicleLocationCacheService车辆位置缓存服务
|
||
- 支持车辆最新位置缓存和轨迹数据缓存
|
||
- 实现批量操作和缓存失效策略
|
||
- 提供缓存统计和清理功能
|
||
- 新增AirportAreaCacheService机场区域缓存服务
|
||
- 支持区域配置数据缓存和空间查询结果缓存
|
||
- 实现区域类型索引缓存和缓存预热功能
|
||
- 提供区域变更时的缓存刷新机制
|
||
- 新增SpatialQueryCacheService空间查询缓存服务
|
||
- 基于地理网格的缓存策略
|
||
- 支持车辆半径查询和冲突检测结果缓存
|
||
- 实现缓存失效和清理机制
|
||
- 分层缓存策略设计
|
||
- 热数据:车辆最新位置(30秒过期)
|
||
- 温数据:车辆轨迹和空间查询结果(60-300秒过期)
|
||
- 冷数据:区域配置和统计数据(3600秒过期)
|
||
- 缓存穿透保护和性能优化机制
|
||
|
||
## [0.6.4] - 2024-12-19
|
||
|
||
### 修复
|
||
- 重写`AirportAreaServiceIntegrationTest.java`测试文件
|
||
- 移除对已删除的`areas.service.AirportAreaService`和`AirportAreaConfig`的依赖
|
||
- 改为测试新的PostGIS版本的`common.service.AirportAreaService`
|
||
- 使用JTS几何对象和PostGIS空间查询功能
|
||
- 添加@Transactional注解和setUp方法来管理测试数据
|
||
- 测试空间查询、几何验证、区域重叠检测等PostGIS功能
|
||
- 修复所有编译错误,测试现在与PostGIS架构完全兼容
|
||
|
||
## [0.6.3] - 2025-01-09
|
||
|
||
### 移除
|
||
- **YAML配置系统清理**: 移除机场区域相关的YAML配置加载机制
|
||
- 删除 `AirportAreasProperties.java` - 机场区域顶层配置属性
|
||
- 删除 `AreaProperties.java` - 单个区域配置属性
|
||
- 删除 `AirportAreaConfig.java` - 机场区域配置加载类
|
||
- 删除重复的 `areas.service.AirportAreaService` - 避免与PostGIS版本冲突
|
||
|
||
### 重构
|
||
- **统一服务架构**: 现在所有机场区域操作都通过PostGIS `common.service.AirportAreaService` 进行
|
||
- 消除了YAML配置与数据库存储的双重架构
|
||
- 统一数据源为PostGIS数据库
|
||
- 简化了服务层依赖关系
|
||
|
||
### 保留
|
||
- **道路网络配置**: 保留 `GeometryProperties.java` 以支持道路网络的YAML配置
|
||
- 道路网络仍使用YAML配置方式
|
||
- 确保道路配置功能不受影响
|
||
|
||
### 技术优化
|
||
- **架构简化**: 消除了类名冲突和循环依赖
|
||
- **数据一致性**: 所有区域数据现在统一从PostGIS获取
|
||
- **维护性提升**: 减少了重复代码和冗余配置
|
||
|
||
## [0.6.2] - 2025-01-09
|
||
|
||
### 移除
|
||
- **MovingObjectRepository内存存储**: 完全移除内存存储仓库及其相关代码
|
||
- 删除 `MovingObjectRepository.java` 内存存储实现
|
||
- 重构 `GeopositionController.java` 以使用PostGIS VehicleLocationService
|
||
- 清理测试配置中的MovingObjectRepository引用
|
||
|
||
### 改进
|
||
- **WebSocket服务升级**: GeopositionController现在基于PostGIS数据库提供实时数据
|
||
- 新增按车辆类型查询的WebSocket接口
|
||
- 新增全部车辆位置查询接口
|
||
- 提供更准确的实时位置数据(基于数据库而非内存)
|
||
- 增强异常处理和日志记录
|
||
|
||
### 技术优化
|
||
- **数据一致性**: 所有位置数据现在统一从PostGIS数据库获取
|
||
- **性能提升**: 利用数据库索引优化查询性能
|
||
- **可扩展性**: 支持更复杂的空间查询和历史数据分析
|
||
|
||
## [0.6.1] - 2025-01-09
|
||
|
||
### 改进
|
||
- **系统架构简化**: 删除DataProcessor组件,简化数据处理流程
|
||
- 移除 `DataProcessor.java` 及其相关依赖
|
||
- 清理测试代码中的DataProcessor引用
|
||
- 数据现在直接通过DataCollectorService保存到PostGIS数据库,无需中间处理层
|
||
|
||
### 技术优化
|
||
- **减少组件复杂度**: 消除不必要的数据处理中间层
|
||
- **提升维护性**: 简化代码结构,减少组件间耦合
|
||
- **优化数据流**: 数据采集直接入库,减少内存占用和处理延迟
|
||
|
||
## [0.6.0] - 2025-06-10
|
||
|
||
### 新增
|
||
- **PostGIS数据模型迁移完成**: 完全替换内存存储,实现基于PostGIS的车辆位置和机场区域数据管理
|
||
- **VehicleLocation实体类**: 支持PostGIS POINT类型的车辆位置存储,包含时间戳、数据质量等字段
|
||
- **AirportArea实体类**: 支持PostGIS GEOMETRY类型的机场区域存储,支持POLYGON/MULTIPOLYGON,包含JSONB限制信息
|
||
- **VehicleLocationRepository**: 提供丰富的PostGIS空间查询接口(半径查询、区域查询、轨迹查询等)
|
||
- **AirportAreaRepository**: 提供全面的PostGIS空间查询接口(包含查询、相交查询、重叠检测、优先级处理等)
|
||
- **VehicleLocationService**: 车辆位置服务类,提供完整的空间查询、轨迹分析、数据验证和管理功能
|
||
- **AirportAreaService**: 机场区域服务类,提供空间查询、区域管理、冲突检测、几何验证等功能
|
||
- **SpatialQueryService**: 综合空间查询服务类,提供冲突检测、轨迹分析、区域密度分析等高级功能
|
||
- **PostGIS数据库表结构**: 完整的车辆位置表、机场区域表、轨迹表,配置空间索引、触发器、数据清理函数
|
||
|
||
### 改进
|
||
- **数据存储架构**: 从内存STRtree索引改为PostgreSQL + PostGIS持久化存储
|
||
- **空间查询性能**: 利用PostGIS GIST索引大幅提升空间查询性能
|
||
- **数据一致性**: 通过数据库事务和约束确保数据一致性
|
||
- **扩展性**: 支持大规模数据存储和复杂空间查询
|
||
|
||
### 修复
|
||
- **Lombok兼容性**: 升级Lombok版本到1.18.38,解决与JDK 17.0.15的兼容性问题
|
||
- **编译错误**: 修复MovingObjectType枚举类型和JSONB字段序列化相关编译错误
|
||
- **依赖管理**: 优化PostGIS和Hibernate Spatial依赖配置
|
||
|
||
### 技术栈更新
|
||
- **数据库**: PostgreSQL 17 + PostGIS扩展
|
||
- **ORM**: Spring Boot JPA + Hibernate Spatial
|
||
- **空间数据**: JTS几何库 + PostGIS原生函数
|
||
- **坐标系**: 统一使用WGS84 (SRID 4326)
|
||
|
||
## [0.5.3] - 2025-06-10
|
||
|
||
### PostGIS空间扩展集成
|
||
- **PostGIS扩展支持**: 为PostgreSQL添加强大的空间数据处理能力
|
||
- 添加 `hibernate-spatial` 依赖,支持JPA空间数据类型
|
||
- 添加 `postgis-jdbc` 扩展(v2023.1.0)
|
||
- 更新Hibernate方言为 `PostgisPG95Dialect`
|
||
- 创建PostGIS扩展初始化脚本
|
||
|
||
### 空间数据功能
|
||
- 支持POINT和POLYGON空间数据类型
|
||
- SRID 4326(WGS84坐标系统)支持GPS坐标
|
||
- 提供空间查询示例(ST_Contains、ST_DWithin、ST_Distance)
|
||
- 空间索引(GIST)优化查询性能
|
||
|
||
### 项目能力提升
|
||
- 精确的机场围栏检测
|
||
- 高效的碰撞预测和距离计算
|
||
- 优化的轨迹分析和历史查询
|
||
- 为实时空间分析奠定技术基础
|
||
|
||
## [0.5.2] - 2025-06-10
|
||
|
||
### 数据库技术栈升级
|
||
- **PostgreSQL 17 迁移**: 将数据库从MySQL切换到PostgreSQL 17
|
||
- 替换 `mysql-connector-java` 为 `postgresql` 驱动(v42.7.1)
|
||
- 更新数据源配置:`jdbc:postgresql://localhost:5432/collision_avoidance`
|
||
- 更新Hibernate方言为 `PostgreSQLDialect`
|
||
- 数据保留策略调整为 `postgresql-days`
|
||
|
||
### 技术优势提升
|
||
- PostgreSQL原生支持更强大的JSON和空间数据处理
|
||
- 为未来PostGIS空间扩展奠定基础
|
||
- 更好的并发性能和查询优化
|
||
- 符合现代开发的主流技术选型
|
||
|
||
## [0.5.1] - 2025-06-10
|
||
|
||
### 架构重构
|
||
- **数据库迁移**: 移除MongoDB依赖,统一使用关系型数据库
|
||
- 移除 `spring-boot-starter-data-mongodb` 依赖
|
||
- 添加 `spring-boot-starter-data-jpa` 依赖
|
||
- 移除主应用类中的 `@EnableMongoRepositories` 注解
|
||
|
||
### 技术栈简化
|
||
- 采用关系型数据库作为统一数据存储方案
|
||
- 配置JPA/Hibernate用于ORM映射
|
||
|
||
### 配置优化
|
||
- 数据库名:`collision_avoidance`
|
||
- Hibernate配置:`ddl-auto: update` 用于开发阶段表结构自动更新
|
||
- 启用SQL日志输出,便于开发调试
|
||
|
||
## [0.5.0] - 2025-04-29
|
||
|
||
### 新增
|
||
- 通过 `geojson_to_yaml.py` 脚本,将GIS 系统导出的道路地理信息文件转换为 YAML 格式的配置文件`airport_roads.yaml`
|
||
|
||
## [0.4.0] - 2025-04-21
|
||
|
||
### 新增
|
||
- 道路网络服务 (`RoadNetworkService`),实现道路网络的配置文件处理和查询功能
|
||
- 道路网络配置文件 (`airport_roads.yaml`),定义机场的道路网络信息
|
||
- 机场区域服务 (`AirportAreaService`),实现机场区域的配置文件处理和查询功能
|
||
- 机场区域配置文件 (`airport_areas.yaml`),定义机场的区域信息
|
||
|
||
## [0.3.0] - 2025-03-31
|
||
|
||
### 新增
|
||
- 坐标系统服务 (`CoordinateSystemService`),实现WGS84到局部坐标系的转换
|
||
- 速度计算服务 (`SpeedCalculationService`),处理移动物体的动力学参数
|
||
- `processLoop`方法实现,支持持续数据处理流
|
||
- 航空器、特种车辆和无人车的数据处理流程
|
||
|
||
### 改进
|
||
- 优化数据采集模块与数据处理模块的交互接口
|
||
- 实现异步处理机制,提高系统响应速度
|
||
- 增强坐标转换精度,支持UTM分区自动计算
|
||
|
||
### 修复
|
||
- 修复速度计算中的时间戳异常处理问题
|
||
- 处理轨迹历史记录超出最大限制的情况
|
||
|
||
## [0.2.0] - 2025-03-16
|
||
|
||
### 新增
|
||
- 数据采集模块完整功能实现
|
||
- 多数据源适配器:支持机场API和第三方车辆API
|
||
- 移动物体模型定义,包含基类和三种具体类型
|
||
- 历史状态记录和轨迹分析基础功能
|
||
- 数据仓库组件,提供数据存储和检索功能
|
||
- RestTemplate配置,支持外部API调用
|
||
|
||
### 改进
|
||
- 重构配置管理,支持不同环境下的配置切换
|
||
- 实现授权服务,优化API认证流程
|
||
|
||
### 修复
|
||
- 修复数据采集过程中的并发问题
|
||
- 修复连接超时导致的数据丢失问题
|
||
|
||
## [0.1.0] - 2025-03-3
|
||
|
||
### 新增
|
||
- 系统基础架构设计
|
||
- 项目框架搭建,包括Maven配置和依赖管理
|
||
- 基础配置类实现,包括线程池、Redis和WebSocket配置
|
||
- 数据模型初步定义
|
||
- 系统文档结构建立
|
||
|
||
### 改进
|
||
- 完善日志系统,支持不同级别的日志记录
|
||
- 建立开发规范,统一代码风格和文档格式 |