From a69a7cc1105cd47e059f3515ba9e5cc5618db853 Mon Sep 17 00:00:00 2001 From: Tian jianyong <11429339@qq.com> Date: Wed, 19 Nov 2025 10:21:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9doc/design/directory=5Fstruct?= =?UTF-8?q?ure.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../deploy/ADXP_WebSocket.md | 0 doc/design/directory_structure.md | 458 ++++++++++-------- 2 files changed, 263 insertions(+), 195 deletions(-) rename README_WEBSOCKET.md => doc/deploy/ADXP_WebSocket.md (100%) diff --git a/README_WEBSOCKET.md b/doc/deploy/ADXP_WebSocket.md similarity index 100% rename from README_WEBSOCKET.md rename to doc/deploy/ADXP_WebSocket.md diff --git a/doc/design/directory_structure.md b/doc/design/directory_structure.md index 3e48ad41..313f53ca 100644 --- a/doc/design/directory_structure.md +++ b/doc/design/directory_structure.md @@ -5,155 +5,180 @@ ## 1. 根目录结构 ``` -CollisionAvoidanceSystem/ +QAUP-Management/ ├── doc/ # 文档目录 -├── src/ # 源代码目录 -├── target/ # 编译输出目录 -├── .idea/ # IDE配置 -├── .mvn/ # Maven包装器配置 +├── qaup-admin/ # 管理后台模块 +├── qaup-collision/ # 碰撞避免系统核心模块 +├── qaup-common/ # 公共模块 +├── qaup-framework/ # 框架模块 +├── qaup-generator/ # 代码生成器 +├── qaup-quartz/ # 定时任务模块 +├── qaup-system/ # 系统管理模块 +├── qaup-ui/ # 前端UI模块 +├── deploy/ # 部署脚本 +├── scripts/ # 工具脚本 +├── sql/ # 数据库脚本 ├── .git/ # Git版本控制 -├── pom.xml # Maven项目配置 -├── mvnw / mvnw.cmd # Maven包装器脚本 +├── pom.xml # Maven父项目配置 ├── README.md # 项目说明 -├── VERSION.txt # 版本信息 -├── change_log.md # 变更日志 -├── development_log.md # 开发日志 +├── VERSION.md # 版本信息 +├── CHANGELOG.md # 变更日志 ├── .gitignore # Git忽略配置 -└── .gitattributes # Git属性配置 +└── qaup.sh # 项目启动脚本 ``` -## 2. 源代码目录结构 (`src`) +## 2. 核心模块目录结构 (`qaup-collision`) ``` -src/ -├── main/ # 主要源代码 -│ ├── java/ # Java源代码 -│ │ └── com/ -│ │ └── dongni/ -│ │ └── collisionavoidance/ # 应用程序主包 -│ └── resources/ # 配置文件和静态资源 -│ ├── config/ # 特定配置文件 (如 airport_roads.yaml, airport_areas.yaml) -│ ├── data/ # 数据文件 -│ ├── scripts/ # 脚本文件 -│ └── static/ # 静态Web资源 -└── test/ # 测试源代码 +qaup-collision/ +├── src/ # 源代码目录 +│ ├── main/ # 主要源代码 +│ │ ├── java/ # Java源代码 +│ │ │ └── com/ +│ │ │ └── qaup/ +│ │ │ └── collision/ # 应用程序主包 +│ │ └── resources/ # 配置文件和静态资源 +│ │ ├── config/ # 特定配置文件 (如 airport_roads.yaml, airport_areas.yaml) +│ │ ├── static/ # 静态Web资源 +│ │ └── templates/ # 模板文件 +│ └── test/ # 测试源代码 +├── libs/ # 本地依赖库 +└── pom.xml # Maven模块配置 ``` -## 3. 应用程序主包结构 (`com.dongni.collisionavoidance`) +## 3. 应用程序主包结构 (`com.qaup.collision`) ``` -com.dongni.collisionavoidance/ -├── CollisionAvoidanceApplication.java # 应用程序入口类 -├── common/ # 通用组件目录 -│ ├── model/ # 核心移动对象等数据模型 -│ │ ├── base/ # 基础类和常量 -│ │ ├── dto/ # 数据传输对象 -│ │ └── repository/ # 仓储模式实现 -│ └── config/ # 通用配置 (较少使用,优先模块内配置) -├── config/ # 应用程序配置 -│ ├── properties/ # 配置属性映射类 (POJOs) -│ ├── RoadNetworkConfig.java # 道路网络配置加载类 -│ ├── AirportAreaConfig.java # 机场区域配置加载类 -│ ├── YamlPropertySourceFactory.java # YAML加载工厂类 -│ ├── RedisConfig.java # Redis配置 -│ └── ThreadPoolConfig.java # 线程池配置 -├── controller/ # 控制器层 (REST API) -├── dataCollector/ # 数据采集模块 -│ ├── model/ # 数据采集相关模型 -│ │ └── enums/ # 枚举类型定义 -│ ├── service/ # 数据采集服务 -│ ├── dao/ # 数据访问对象 -│ └── config/ # 数据采集配置 -├── dataProcessing/ # 数据处理模块 -│ ├── service/ # 数据处理服务 -│ └── config/ # 数据处理配置 -├── areas/ # 新增:机场区域管理模块 +com.qaup.collision/ +├── adapter/ # 外部系统适配器 +├── area/ # 机场区域管理模块 │ ├── model/ # 区域相关数据模型 │ └── service/ # 区域管理服务 -├── roads/ # 道路网络模块 +├── common/ # 通用组件目录 +│ ├── adapter/ # 通用适配器 +│ ├── config/ # 通用配置 +│ ├── exception/ # 通用异常处理 +│ ├── model/ # 核心数据模型 +│ ├── repository/ # 仓储模式实现 +│ └── service/ # 通用服务 +├── config/ # 应用程序配置 +│ ├── properties/ # 配置属性映射类 (POJOs) +│ ├── CollisionAvoidanceConfig.java # 碰撞避免系统配置 +│ ├── DatabasePerformanceConfig.java # 数据库性能配置 +│ ├── GracefulShutdownConfig.java # 优雅关闭配置 +│ ├── RoadNetworkConfig.java # 道路网络配置加载类 +│ ├── ThreadPoolConfig.java # 线程池配置 +│ └── YamlPropertySourceFactory.java # YAML加载工厂类 +├── controller/ # 控制器层 (REST API) +│ ├── DataMonitorController.java # 数据监控控制器 +│ ├── HealthController.java # 健康检查控制器 +│ ├── IntersectionController.java # 交叉路口控制器 +│ ├── SpatialRuleController.java # 空间规则控制器 +│ ├── TrafficLightController.java # 交通信号灯控制器 +│ ├── UniversalVehicleApiController.java # 通用车辆API控制器 +│ └── UnmannedVehicleController.java # 无人车控制器 +├── datacollector/ # 数据采集模块 +│ ├── config/ # 数据采集配置 +│ ├── dao/ # 数据访问对象 +│ ├── dto/ # 数据传输对象 +│ ├── filter/ # 数据过滤器 +│ ├── model/ # 数据采集相关模型 +│ ├── repository/ # 数据采集仓储 +│ ├── sdk/ # SDK集成 +│ ├── server/ # 服务器端实现 +│ ├── service/ # 数据采集服务 +│ ├── util/ # 工具类 +│ └── websocket/ # WebSocket数据采集 +├── dataprocessing/ # 数据处理模块 +│ ├── config/ # 数据处理配置 +│ ├── model/ # 数据处理模型 +│ ├── parser/ # 数据解析器 +│ └── service/ # 数据处理服务 +├── event/ # 事件处理模块 +│ ├── handler/ # 事件处理器 +│ ├── model/ # 事件模型 +│ └── service/ # 事件服务 +├── geofence/ # 地理围栏模块 +│ ├── model/ # 地理围栏模型 +│ └── service/ # 地理围栏服务 +├── pathconflict/ # 路径冲突模块 +│ ├── event/ # 路径冲突事件 +│ ├── model/ # 路径冲突模型 +│ ├── repository/ # 路径冲突仓储 +│ └── service/ # 路径冲突服务 +├── road/ # 道路网络模块 │ ├── model/ # 道路网络运行时模型 │ └── service/ # 道路网络服务 -└── webSocket/ # WebSocket通信模块 +├── rule/ # 规则引擎模块 +│ ├── event/ # 规则事件 +│ ├── model/ # 规则模型 +│ ├── repository/ # 规则仓储 +│ └── service/ # 规则服务 +└── websocket/ # WebSocket通信模块 + ├── broadcaster/ # 消息广播器 + ├── cache/ # WebSocket缓存 + ├── config/ # WebSocket配置 ├── controller/ # WebSocket控制器 - └── config/ # WebSocket配置 + ├── event/ # WebSocket事件 + ├── handler/ # WebSocket消息处理器 + ├── listener/ # WebSocket监听器 + └── message/ # WebSocket消息格式 ``` -## 4. 数据模型目录 +## 4. 数据模型说明 + +系统采用模块化的数据模型设计,各模块内部包含自己的数据模型定义。主要数据模型包括: ### 4.1 通用数据模型 (`common/model`) +包含系统核心的、跨模块共享的数据结构,如: +- 地理位置数据模型 +- 移动状态数据模型 +- 基础常量和枚举 -包含系统核心的、跨模块共享的数据结构: - -``` -common/model/ -├── Aircraft.java # 航空器实体类 -├── GeoPosition.java # 地理位置数据结构 -├── MovementState.java # 移动状态封装 -├── MovingObject.java # 移动物体抽象基类 -├── MovingObjectType.java # 移动物体类型枚举 -├── PositionRecord.java # 位置记录 -├── SpecialVehicle.java # 特勤车辆实体类 -├── UnmannedVehicle.java # 无人车实体类 -├── Velocity.java # 速度和局部坐标系信息 -├── base/ # 基础类和常量 -│ ├── Constant.java # 系统常量定义 -│ └── Response.java # 统一响应格式 -├── dto/ # 数据传输对象 -│ ├── AircraftDTO.java # 航空器数据传输对象 -│ └── SpecialVehicleDTO.java # 特勤车辆数据传输对象 -└── repository/ # 仓储模式实现 - └── MovingObjectRepository.java # 移动物体仓储接口 -``` - -### 4.2 机场区域数据模型 (`areas/model`) - +### 4.2 区域数据模型 (`area/model`) 包含机场区域管理模块的数据结构: +- AreaInfo.java: 区域信息实体类 (含JTS几何对象) +- AreaType.java: 区域类型枚举 -``` -areas/model/ -├── AreaInfo.java # 区域信息实体类 (含JTS几何对象) -└── AreaType.java # 区域类型枚举 -``` - -### 4.3 道路网络数据模型 (`roads/model`) - +### 4.3 道路网络数据模型 (`road/model`) 包含道路网络模块内部使用的运行时数据结构: +- RoadInfo.java: 运行时道路信息 (含JTS对象) -``` -roads/model/ -├── RoadInfo.java # 运行时道路信息 (含JTS对象) -└── RoadDirectionality.java # 道路方向枚举 -``` +### 4.4 数据采集模型 (`datacollector/model`) +包含数据采集模块的专用数据结构,如: +- 车辆位置信息 +- 车辆状态信息 +- 命令响应 +- 各种枚举类型定义 -### 4.4 数据采集模型 (`dataCollector/model`) +### 4.5 路径冲突数据模型 (`pathconflict/model`) +包含路径冲突检测模块的数据结构: +- 冲突点信息 +- 冲突路径信息 +- 冲突解决策略 -包含数据采集模块的专用数据结构: +### 4.6 地理围栏数据模型 (`geofence/model`) +包含地理围栏模块的数据结构: +- 围栏信息 +- 围栏规则 +- 围栏触发事件 + +### 4.7 规则引擎数据模型 (`rule/model`) +包含规则引擎模块的数据结构: +- 规则定义 +- 规则条件 +- 规则动作 -``` -dataCollector/model/ -├── CommandResponse.java # 命令响应 -├── VehicleCommand.java # 车辆命令 -├── VehicleLocationInfo.java # 车辆位置信息 -├── VehicleStateInfo.java # 车辆状态信息 -└── enums/ # 枚举类型定义 - ├── CommandReason.java # 命令原因枚举 - ├── CommandType.java # 命令类型枚举 - └── SignalState.java # 信号状态枚举 -``` ## 5. 配置属性类目录 (`config/properties`) -包含用于绑定配置文件的POJO类: +包含用于绑定配置文件的POJO类,支持: +- 机场区域配置绑定 +- 道路网络配置绑定 +- 几何图形配置绑定 +- 系统参数配置 -``` -config/properties/ -├── AirportAreasProperties.java # 机场区域配置属性 -├── AirportRoadsProperties.java # 机场道路配置属性 -├── AreaProperties.java # 单个区域配置属性 -├── DimensionValue.java # 尺寸值配置 -├── GeometryProperties.java # 几何图形配置属性 -└── RoadProperties.java # 单个道路配置属性 -``` +实际配置类根据模块需求动态添加和调整。 ## 6. 资源文件目录 (`resources`) @@ -164,103 +189,95 @@ resources/ │ ├── airport_areas.yaml # 机场区域配置 │ ├── airport_roads.yaml # 机场道路配置 │ └── airport_zones.yaml # 机场区域配置 -├── data/ # 数据文件目录 -├── scripts/ # 脚本文件目录 -└── static/ # 静态Web资源 - ├── index.html # 主页面 - ├── geoposition-test.html # 地理位置测试页面 - └── js/ # JavaScript文件 +├── static/ # 静态Web资源 +│ ├── index.html # 主页面 +│ ├── geoposition-test.html # 地理位置测试页面 +│ ├── websocket-test.html # WebSocket测试页面 +│ └── js/ # JavaScript文件 +└── templates/ # 模板文件目录 ``` ## 7. 各模块功能说明 -### 7.1 通用数据模型 (common/model) +### 7.1 通用组件模块 (common) +提供系统级通用功能和数据结构,包括: +- 通用配置 +- 异常处理 +- 基础数据模型 +- 通用服务 -数据模型模块定义了系统中使用的所有数据结构: - -- **MovingObject**: 所有移动物体的抽象基类,定义共有属性和行为 -- **Aircraft**: 代表航空器的具体实现类 -- **SpecialVehicle**: 代表特勤车辆的具体实现类 -- **UnmannedVehicle**: 代表无人车的具体实现类 -- **GeoPosition**: 表示地理位置的数据结构 -- **Velocity**: 表示速度和局部坐标系位置信息的数据结构 -- **MovementState**: 封装移动物体在特定时刻的完整状态 -- **MovingObjectType**: 定义了系统支持的移动物体类型的枚举 -- **base/**: 包含系统基础类和常量定义 -- **dto/**: 包含数据传输对象,用于API交互 -- **repository/**: 包含仓储模式实现,提供数据访问抽象 - -### 7.2 机场区域管理模块 (areas) - -**新增模块**,负责管理机场内各种功能区域的边界、权限和规则: - -- **areas/model**: 定义区域信息数据结构,包含JTS几何对象用于空间计算 -- **areas/service**: 提供`AirportAreaService`,负责: - - 加载`airport_areas.yaml`配置文件 - - 构建空间索引以支持高效的几何查询 - - 提供区域查询接口(根据位置查找包含区域、获取限速等) - - 支持区域权限验证和时间有效性检查 - - 使用JTS库进行复杂的空间几何计算 - -### 7.3 数据采集模块 (dataCollector) +### 7.2 机场区域管理模块 (area) +负责管理机场内各种功能区域的边界、权限和规则: +- 加载`airport_areas.yaml`配置文件 +- 构建空间索引以支持高效的几何查询 +- 提供区域查询接口(根据位置查找包含区域、获取限速等) +- 支持区域权限验证和时间有效性检查 +- 使用JTS库进行复杂的空间几何计算 +### 7.3 数据采集模块 (datacollector) 负责从各种数据源获取移动物体的实时位置和状态信息: +- 支持多数据源集成 +- 提供数据过滤和预处理功能 +- 数据持久化和缓存 +- WebSocket实时数据采集 -- **model/**: 包含数据采集专用的数据结构 - - 车辆位置信息、状态信息、命令响应等 - - 枚举类型定义(命令类型、信号状态等) -- **service/**: 数据采集服务实现 -- **dao/**: 数据访问对象,处理外部数据源交互 -- **config/**: 数据采集相关配置 - -支持的数据源: -- 航空器数据采集(ADS-B、雷达等) -- 特勤车辆数据采集(GPS、地面雷达等) -- 无人车数据采集(车载传感器等) - -### 7.4 数据处理模块 (dataProcessing) - +### 7.4 数据处理模块 (dataprocessing) 处理和分析采集到的数据: - +- 数据解析和转换 - 轨迹计算和预测 - 碰撞风险评估 - 数据质量检查和过滤 -- 历史数据管理和分析 -### 7.5 控制器层 (controller) +### 7.5 事件处理模块 (event) +负责系统事件的统一管理和分发: +- 事件定义和注册 +- 事件监听和处理 +- 事件驱动的业务逻辑 -提供RESTful API接口,用于: +### 7.6 地理围栏模块 (geofence) +提供地理围栏功能: +- 围栏定义和管理 +- 实时位置围栏检测 +- 围栏触发事件处理 -- 数据查询和检索 -- 系统配置和管理 -- 状态报告和监控 +### 7.7 路径冲突模块 (pathconflict) +负责检测和解决路径冲突: +- 路径冲突检测算法 +- 冲突解决策略 +- 冲突事件处理 -### 7.6 WebSocket模块 (webSocket) +### 7.8 道路网络模块 (road) +负责管理和查询机场静态道路网络信息: +- 加载`airport_roads.yaml`配置 +- 初始化道路数据和空间索引 +- 提供道路查询接口(如根据位置查找道路、获取限速等) +### 7.9 规则引擎模块 (rule) +提供灵活的规则配置和执行功能: +- 规则定义和管理 +- 实时规则执行 +- 规则触发事件处理 + +### 7.10 WebSocket模块 (websocket) 提供实时通信功能: - - 推送实时位置更新 - 发送碰撞警告 - 支持客户端实时监控 +- 多客户端消息广播 -### 7.7 配置模块 (config) - +### 7.11 配置模块 (config) 包含应用程序的配置类和配置加载机制: +- 配置文件加载和解析 +- 配置属性绑定 +- 模块化配置管理 +- 系统参数配置 -- **config/properties**: 存放用于绑定配置文件的POJO类,支持: - - 机场区域配置绑定(`AirportAreasProperties`、`AreaProperties`) - - 道路网络配置绑定(`AirportRoadsProperties`、`RoadProperties`) - - 几何图形配置绑定(`GeometryProperties`、`DimensionValue`) -- 系统参数配置、Bean配置(如`RedisConfig`、`ThreadPoolConfig`) -- 特定配置加载器(如`RoadNetworkConfig`、`AirportAreaConfig`、`YamlPropertySourceFactory`) -- 服务注册、安全、数据库连接等配置 - -### 7.8 道路网络模块 (roads) - -负责管理和查询机场静态道路网络信息: - -- **roads/model**: 定义运行时的道路数据结构(`RoadInfo`),包含JTS几何对象和处理过的属性 -- **roads/service**: 提供`RoadNetworkService`,负责加载`airport_roads.yaml`配置,初始化道路数据和空间索引,并提供查询接口(如根据位置查找道路、获取限速等) +### 7.12 控制器层 (controller) +提供RESTful API接口,用于: +- 数据查询和检索 +- 系统配置和管理 +- 状态报告和监控 +- 车辆控制命令发布 ## 8. 文档目录 (doc) @@ -268,10 +285,30 @@ resources/ ``` doc/ -├── design_document.md # 系统数据结构设计文档 -├── directory_structure.md # 目录结构说明文档(本文档) -├── cad_to_yaml_guide.md # CAD转YAML操作指南 -└── road_network_design.md # 道路网络配置集成设计方案 +├── design/ # 设计文档目录 +│ ├── area_design.md # 区域设计文档 +│ ├── data_structure_design.md # 系统数据结构设计文档 +│ ├── directory_structure.md # 目录结构说明文档(本文档) +│ ├── airport_area_design.md # 机场区域设计方案 +│ ├── road_network_design.md # 道路网络设计方案 +│ ├── speed_calculation.md # 速度计算设计 +│ └── 机场预警系统架构设计方案.md # 机场预警系统架构设计 +├── guide/ # 操作指南 +│ ├── cad_to_yaml_guide.md # CAD转YAML操作指南 +│ ├── configuration_guide.md # 配置指南 +│ └── commands.md # 常用命令 +├── requirement/ # 需求文档 +│ ├── requirements.md # 系统需求 +│ ├── area.md # 区域需求 +│ └── route.md # 路径需求 +├── deploy/ # 部署文档 +│ ├── ADXP_WebSocket.md # ADXP WebSocket部署 +│ ├── Ubuntu部署指南.md # Ubuntu部署指南 +│ └── deploy-design.md # 部署设计 +└── work/ # 工作文档 + ├── API接口修复完成报告.md # API接口修复报告 + ├── 架构优化报告.md # 架构优化报告 + └── 无人车经纬度参数错误修复.md # 无人车参数修复报告 ``` ## 9. 主要技术特性 @@ -290,8 +327,39 @@ doc/ - 采用继承和组合的面向对象设计 - 支持DTO模式进行数据传输 - 实现仓储模式进行数据访问抽象 +- 模块化数据模型设计 ### 9.4 实时通信 - WebSocket支持实时数据推送 -- Redis缓存支持高性能数据访问 -- 线程池配置支持并发处理 \ No newline at end of file +- 线程池配置支持并发处理 +- 消息广播和路由机制 + +### 9.5 模块化架构 +- 清晰的模块划分和职责定义 +- 低耦合的模块间交互 +- 可扩展性强的系统架构 + +### 9.6 事件驱动 +- 基于事件的系统架构 +- 灵活的事件监听和处理机制 +- 松耦合的业务逻辑 + +### 9.7 规则引擎 +- 可配置的规则定义 +- 实时规则执行 +- 灵活的规则扩展机制 + +### 9.8 数据处理能力 +- 高性能的数据处理和分析 +- 实时数据解析和转换 +- 数据质量保障机制 + +### 9.9 地理围栏 +- 支持多种围栏类型 +- 实时围栏检测 +- 灵活的围栏规则配置 + +### 9.10 路径冲突检测 +- 高效的路径冲突检测算法 +- 智能的冲突解决策略 +- 实时冲突处理 \ No newline at end of file