4.0 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
QAUP-Management is an airport collision avoidance and management system built on the RuoYi framework. It integrates vehicle tracking, spatial analysis, and real-time monitoring for airport operations with Spring Boot 3.x and PostgreSQL + PostGIS.
Architecture
Multi-Module Maven Structure
- qaup-admin: Main web application entry point containing controllers and startup configuration
- qaup-collision: Core collision avoidance system with spatial analysis, WebSocket communication, and real-time monitoring
- qaup-framework: Infrastructure layer with security, caching, and common configurations
- qaup-system: User management, RBAC, and system administration
- qaup-common: Shared utilities, constants, and base classes
- qaup-quartz: Scheduled job management
- qaup-generator: Code generation utilities
Key Integration Pattern
The collision avoidance system integrates with RuoYi through QuapDataAdapter (qaup-collision/src/main/java/com/qaup/collision/common/adapter/QuapDataAdapter.java:37), which bridges the collision detection system with RuoYi's service layer, avoiding direct DAO dependencies.
Development Commands
Build and Run
# Full clean build (skip tests for faster builds)
mvn clean install -DskipTests
# Start backend from qaup-admin module
cd qaup-admin
mvn spring-boot:run
# Start frontend (Vue.js)
cd qaup-ui
npm run dev
# Production deployment using script
./ry.sh start
Testing and Debugging
# Check port usage
lsof -ti:8080
# Kill process if needed
kill -9 <process-id>
# View logs
tail -f qaup-admin/app.log
Technology Stack
Backend
- Spring Boot 3.5.3 with Java 17
- PostgreSQL + PostGIS for spatial data
- MyBatis for database operations
- Redis for caching and session management
- WebSocket for real-time communication
- JTS + GeoTools for spatial calculations
Frontend
- Vue 2.6.12 with Element UI
- Axios for API communication
- ECharts for data visualization
Configuration
Database Setup
- PostgreSQL with PostGIS extension enabled
- Run initialization scripts in order:
sql/create_qaup_database.sqlsql/create_sys_vehicle_info_table.sqlsql/create_sys_driver_info_table.sql
Key Configuration Files
qaup-admin/src/main/resources/application.yml: Main configuration including database, Redis, and collision system settingsqaup-ui/vue.config.js: Frontend build configurationqaup-collision/src/main/resources/config/: Spatial configuration files (airport_areas.yaml, airport_roads.yaml)
Important Development Patterns
Data Access
Always use QuapDataAdapter for accessing vehicle and driver data in collision module instead of direct service calls. This maintains clean separation between collision detection and system management.
WebSocket Communication
Real-time data flows through WebSocket endpoints configured in collision module. Messages use /topic prefix for broadcasting to connected clients.
Spatial Data
PostGIS integration handles geometric calculations. Coordinate system defaults to airport center at (120.0834104, 36.35406879).
Performance Optimization
- Data collection interval: 250ms for high-frequency updates
- WebSocket push throttling: 1000ms to prevent frontend overload
- Redis caching with 60-second expiration for real-time data
API Access
- Admin Interface: http://localhost:8080
- API Documentation: http://localhost:8080/swagger-ui/index.html
- WebSocket Endpoint: ws://localhost:8080/ws
Common Issues
Build Problems
- If Maven build fails, ensure Java 17 is active
- For dependency conflicts, use
mvn dependency:treeto analyze
Runtime Issues
- Check Redis connectivity if caching fails
- Verify PostGIS extension is properly installed for spatial operations
- WebSocket connection issues often relate to CORS configuration in SecurityConfig