From 35a3a44b32b6a4d74833ca89024450495d1df9a9 Mon Sep 17 00:00:00 2001 From: 123 <123@example.com> Date: Wed, 18 Jun 2025 20:41:02 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E9=A1=B9=E7=9B=AE=E4=B8=BABa?= =?UTF-8?q?ttlefieldExplorationSystem=20-=20=E5=AE=8C=E6=88=90=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E5=8C=96=E6=9E=B6=E6=9E=84=E9=87=8D=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 项目重命名:CasualtySightPlus → BattlefieldExplorationSystem - 清理旧代码:移除injury相关过时功能和备份文件 - 建立模块化结构:src/core、src/ui、include层次化组织 - 更新构建配置:新版本2.0.0,优化编译路径和依赖 - 完善项目文档:更新CLAUDE.md架构说明和开发指南 为后续界面重设计和MySQL集成奠定基础架构。 --- src/Client/CLAUDE.md | 180 ++++- src/Client/CasualtySightPlus_new.pro | 55 ++ src/Client/Makefile | 240 ++----- src/Client/doc/README.md | 111 +++ src/Client/doc/database/database_design.md | 240 +++++++ src/Client/doc/database/database_schema.sql | 152 ++++ .../doc/database/updated_database_schema.sql | 192 +++++ src/Client/doc/git/git_branch_strategy.md | 301 ++++++++ src/Client/doc/planning/code_refactor_plan.md | 266 +++++++ .../functional_modules_specification.md | 224 ++++++ .../doc/planning/project_structure_plan.md | 486 +++++++++++++ .../planning/refactor_impact_assessment.md | 269 +++++++ src/Client/doc/planning/task.md | 285 ++++++++ .../doc/reports/code_refactor_summary.md | 197 ++++++ .../doc/reports/phase1_completion_report.md | 170 +++++ .../dialogs/DeviceDialog.ui} | 0 .../guidingui.ui => forms/main/MainWindow.ui} | 0 src/Client/include/InjuryAnalysisUI.h | 126 ---- src/Client/include/InjuryDatabase.h | 101 --- .../include/{ => core/database}/DogDatabase.h | 0 .../include/{ => core/database}/UAVDatabase.h | 0 src/Client/include/injurydisiplayui.h | 27 - .../{guidingui.h => ui/main/MainWindow.h} | 16 +- src/Client/res/icon/无人机图标.png | Bin 0 -> 40520 bytes src/Client/src/InjuryAnalysisUI.cpp | 237 ------- src/Client/src/InjuryDatabase.cpp | 269 ------- .../src/{ => core/database}/DogDatabase.cpp | 0 .../src/{ => core/database}/UAVDatabase.cpp | 0 src/Client/src/guidingui_backup.cpp | 667 ------------------ src/Client/src/injurydisiplayui.cpp | 182 ----- src/Client/src/moc_InjuryAnalysisUI.cpp | 120 ---- src/Client/src/moc_injurydisiplayui.cpp | 95 --- .../dialogs/DeviceDialog.cpp} | 0 .../{guidingui.cpp => ui/main/MainWindow.cpp} | 8 +- .../main/moc_MainWindow.cpp} | 0 src/Client/ui/InjuryAnalysisUI.ui | 236 ------- src/Client/ui/injurydisiplayui.ui | 19 - 37 files changed, 3178 insertions(+), 2293 deletions(-) create mode 100644 src/Client/CasualtySightPlus_new.pro create mode 100644 src/Client/doc/README.md create mode 100644 src/Client/doc/database/database_design.md create mode 100644 src/Client/doc/database/database_schema.sql create mode 100644 src/Client/doc/database/updated_database_schema.sql create mode 100644 src/Client/doc/git/git_branch_strategy.md create mode 100644 src/Client/doc/planning/code_refactor_plan.md create mode 100644 src/Client/doc/planning/functional_modules_specification.md create mode 100644 src/Client/doc/planning/project_structure_plan.md create mode 100644 src/Client/doc/planning/refactor_impact_assessment.md create mode 100644 src/Client/doc/planning/task.md create mode 100644 src/Client/doc/reports/code_refactor_summary.md create mode 100644 src/Client/doc/reports/phase1_completion_report.md rename src/Client/{ui/robotlistdialog.ui => forms/dialogs/DeviceDialog.ui} (100%) rename src/Client/{ui/guidingui.ui => forms/main/MainWindow.ui} (100%) delete mode 100644 src/Client/include/InjuryAnalysisUI.h delete mode 100644 src/Client/include/InjuryDatabase.h rename src/Client/include/{ => core/database}/DogDatabase.h (100%) rename src/Client/include/{ => core/database}/UAVDatabase.h (100%) delete mode 100644 src/Client/include/injurydisiplayui.h rename src/Client/include/{guidingui.h => ui/main/MainWindow.h} (95%) create mode 100644 src/Client/res/icon/无人机图标.png delete mode 100644 src/Client/src/InjuryAnalysisUI.cpp delete mode 100644 src/Client/src/InjuryDatabase.cpp rename src/Client/src/{ => core/database}/DogDatabase.cpp (100%) rename src/Client/src/{ => core/database}/UAVDatabase.cpp (100%) delete mode 100644 src/Client/src/guidingui_backup.cpp delete mode 100644 src/Client/src/injurydisiplayui.cpp delete mode 100644 src/Client/src/moc_InjuryAnalysisUI.cpp delete mode 100644 src/Client/src/moc_injurydisiplayui.cpp rename src/Client/src/{robotlistdialog.cpp => ui/dialogs/DeviceDialog.cpp} (100%) rename src/Client/src/{guidingui.cpp => ui/main/MainWindow.cpp} (99%) rename src/Client/src/{moc_guidingui.cpp => ui/main/moc_MainWindow.cpp} (100%) delete mode 100644 src/Client/ui/InjuryAnalysisUI.ui delete mode 100644 src/Client/ui/injurydisiplayui.ui diff --git a/src/Client/CLAUDE.md b/src/Client/CLAUDE.md index 7a07a8b..56eabca 100644 --- a/src/Client/CLAUDE.md +++ b/src/Client/CLAUDE.md @@ -4,59 +4,90 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ## Project Overview -CasualtySightPlus is a Qt 5.15 C++ battlefield exploration and casualty management system. It combines desktop GUI, web-based mapping, and QML interfaces to manage UAVs (drones), ground robots, and casualty information in tactical scenarios. +BattlefieldExplorationSystem (formerly CasualtySightPlus) is a Qt 5.15 C++ comprehensive battlefield intelligence and exploration system. It integrates unmanned aerial vehicles (UAVs/drones) and ground robots (robot dogs) to provide real-time battlefield reconnaissance, enemy detection, and tactical intelligence gathering capabilities through desktop GUI, web-based mapping, and QML interfaces. ## Build Commands ### Standard Build ```bash -qmake CasualtySightPlus.pro +qmake CasualtySightPlus_new.pro make ``` ### Clean Build ```bash make clean -qmake CasualtySightPlus.pro +qmake CasualtySightPlus_new.pro make ``` ### Install ```bash -make install # Installs to /opt/CasualtySightPlus/bin/ +make install # Installs to /opt/BattlefieldExplorationSystem/bin/ ``` ## Architecture Overview -### Core Components -- **GuidingUI**: Main control interface for robot/UAV management and battlefield exploration -- **InjuryAnalysisUI**: Casualty data analysis with Qt Charts visualization -- **InjuryDisplayUI**: Geographic casualty display using QWebEngineView +### Functional Modules + +#### 1. Device Management Module 🤖 +- **Device Registration**: Add UAVs and robot dogs with name, IP address, and GPS coordinates (longitude/latitude) +- **Device Inventory**: List and manage all existing unmanned devices in the system +- **Device Status Monitoring**: Real-time status tracking including connectivity, battery level, and signal strength + +#### 2. Map Display Module 🗺️ +- **Campus Map Integration**: Display current school location using web-based mapping (AMap integration) +- **Device Positioning**: Show real-time device locations on the interactive map +- **Geographic Visualization**: Coordinate-based positioning system for tactical awareness + +#### 3. Battlefield Exploration Module 🎯 +**Robot Dog Capabilities**: +- **Autonomous Mapping (SLAM)**: Simultaneous Localization and Mapping for terrain exploration +- **Navigation & Obstacle Avoidance**: Intelligent pathfinding and collision avoidance systems + +**UAV/Drone Capabilities**: +- **Real-time Photo Transmission**: Stream captured images from drone cameras +- **AI-Powered Person Recognition**: Automated person detection and identification in captured images +- **Enemy Position Marking**: Automatically mark detected enemy positions on the tactical map + +#### 4. Intelligence Communication Module 📡 +- **Voice Communication**: Audio transmission capabilities through robot dogs for friendly force communication +- **Real-time Tactical Coordination**: Voice-based information sharing and coordination + +#### 5. Enemy Intelligence Analysis Module 📊 +- **Enemy Position Visualization**: Display all detected enemy positions on the tactical map +- **Intelligence Dashboard**: Visual analytics and statistical overview of reconnaissance data +- **AI-Powered Analysis**: Integration with large language models for automated enemy situation analysis and tactical recommendations ### Database Layer -Three singleton database managers: -- **InjuryDatabase**: Casualty records (id, rank, coordinates, flag) -- **UAVDatabase**: Drone fleet management (id, state, IP, port, coordinates) -- **DogDatabase**: Ground robot management (id, state, IP, port, coordinates) +Unified device management with MySQL backend: +- **devices**: Unified table for UAVs and robot dogs (device_type: 'uav'/'dog') +- **exploration_tasks**: Mission planning and task management +- **device_operation_logs**: Comprehensive operation logging +- **system_config**: System configuration management ### UI Architecture -- **Traditional Qt Widgets**: Main application framework -- **QML Integration**: Modern map interfaces (MAP.qml, MAP2.qml, MAP3.qml) -- **Web Integration**: HTML/AMap-based mapping (res/html/map.html) +- **Modular Structure**: Organized in `src/ui/` with main, components, dialogs, and exploration modules +- **MainWindow**: Central control interface (formerly GuidingUI) for unified device management +- **QML Integration**: Modern map interfaces (MAP.qml, MAP2.qml, MAP3.qml) for interactive visualization +- **Web Integration**: HTML/AMap-based mapping (res/html/map.html) for geographic display +- **Component-Based Design**: Reusable UI components for device cards, status panels, and controls ## Key Technologies ### Qt Modules Used -- Core modules: `core gui sql charts` -- Location: `positioning location quickwidgets` -- Web: `webenginewidgets webchannel` -- Media: `multimedia multimediawidgets` +- Core modules: `core gui sql charts` - Foundation and database integration +- Location: `positioning location quickwidgets` - GPS and mapping support +- Web: `webenginewidgets webchannel` - Map integration and web-based visualization +- Media: `multimedia multimediawidgets` - Audio communication and image processing ### External Dependencies -- **AMap (高德地图)**: Chinese mapping service integration -- **Face Recognition**: External process integration for tracking -- **Qt Charts**: Statistical visualization -- **SQLite**: Database backend +- **AMap (高德地图)**: Chinese mapping service for campus/battlefield visualization +- **AI/ML Services**: Person recognition and image analysis capabilities +- **Voice Communication**: Audio transmission through robot dogs +- **Qt Charts**: Statistical visualization for intelligence analysis +- **MySQL**: Database backend (Client database) for unified device management +- **Large Language Models**: AI-powered enemy situation analysis (integration ready) ## Resource Management @@ -68,18 +99,31 @@ Assets are managed through Qt Resource System: ## Development Notes ### File Structure -- **Source Files**: All `.cpp` files in `src/` directory -- **Header Files**: All `.h` files in `include/` directory -- **UI Files**: All `.ui` files in `ui/` directory - define widget layouts +**Modular Organization (Post-Refactor)**: +- **Source Files**: Organized in `src/` with modular structure + - `src/core/database/` - Database management classes + - `src/ui/main/` - Main interface (MainWindow) + - `src/ui/dialogs/` - Dialog components + - `src/ui/components/` - Reusable UI components + - `src/utils/` - Utility classes +- **Header Files**: Mirror structure in `include/` directory +- **UI Forms**: Organized in `forms/` directory by functional modules - **Build Artifacts**: All generated files in `build/` directory -- **Resources**: `res.qrc` contains all embedded assets +- **Resources**: `res.qrc` contains all embedded assets (images, icons, QML, HTML) +- **Documentation**: All project documents in `doc/` directory - organized by category - **Generated Files**: `moc_*.cpp`, `ui_*.h`, and object files auto-generated in `build/` ### Database Pattern -All database classes follow singleton pattern with standard CRUD operations. Access through static instance methods. +- **Unified Device Management**: Single `devices` table for both UAVs and robot dogs +- **Device Type Differentiation**: `device_type` field ('uav'/'dog') for type distinction +- **Backward Compatibility**: Views (uavdatabase/dogdatabase) maintain compatibility with legacy code +- **Singleton Pattern**: Database managers follow singleton pattern with static instance access ### Coordinate System -Application uses longitude/latitude coordinates throughout. Both QML and web components expect geographic coordinates. +Application uses longitude/latitude coordinates throughout for precise geographic positioning: +- **Campus-based**: Centered around school location for tactical exercises +- **Real-time Tracking**: Continuous GPS coordinate updates for device positioning +- **Map Integration**: Both QML and web components expect WGS84 geographic coordinates ### Build Artifacts - **Object Files**: `.o` files generated during compilation @@ -89,11 +133,81 @@ Application uses longitude/latitude coordinates throughout. Both QML and web com ## Testing -No explicit test framework detected. Manual testing through GUI interaction. +**Current Testing Strategy**: +- Manual testing through GUI interaction and device simulation +- Database connectivity and CRUD operation validation +- Map integration and coordinate system verification +- **Future**: Unit testing framework integration planned for device management modules ## Deployment Application configured for: -- **Primary**: Linux x86_64 desktop -- **Secondary**: Android (AndroidManifest.xml present) -- **Installation**: System-wide deployment to `/opt/CasualtySightPlus/` \ No newline at end of file +- **Primary**: Linux x86_64 desktop environment +- **Secondary**: Android deployment capability (AndroidManifest.xml present) +- **Installation**: System-wide deployment to `/opt/BattlefieldExplorationSystem/` +- **Target Environment**: Campus-based tactical training and simulation + +## Documentation Management Strategy + +### Document Organization Structure + +All project documentation is organized in the `doc/` directory with the following categorization: + +``` +doc/ +├── README.md # Documentation index and navigation +├── planning/ # Project planning and requirements +│ ├── task.md # Task breakdown and progress tracking +│ ├── project_structure_plan.md +│ ├── refactor_impact_assessment.md +│ └── [future planning docs] +├── technical/ # Technical implementation details +│ ├── api_documentation.md +│ ├── component_design.md +│ ├── coding_standards.md +│ └── [future technical docs] +├── database/ # Database design and scripts +│ ├── database_schema.sql +│ ├── migration_scripts/ +│ └── [future database docs] +├── reports/ # Progress and analysis reports +│ ├── phase1_completion_report.md +│ ├── phase2_completion_report.md +│ └── [future reports] +└── git/ # Version control and workflow + ├── git_branch_strategy.md + ├── code_review_guidelines.md + └── [future git docs] +``` + +### Documentation Guidelines for Claude + +#### When Creating New Documents: +1. **Determine Category**: Place documents in appropriate subdirectory based on content type +2. **Follow Naming Convention**: Use lowercase with underscores (`document_name.md`) +3. **Update Index**: Add reference to new document in `doc/README.md` +4. **Include Metadata**: Add creation date, author, and version if applicable + +#### Document Categories: + +- **planning/**: Requirements, architecture design, project planning, impact assessments +- **technical/**: API docs, component designs, coding standards, build instructions +- **database/**: Schema definitions, migration scripts, database design docs +- **reports/**: Phase completion reports, testing reports, performance analyses +- **git/**: Branch strategies, code review guidelines, release processes + +#### Document Placement Examples: +- New component design → `doc/technical/component_name_design.md` +- Database migration script → `doc/database/migration_scripts/v2.0_migration.sql` +- Phase completion report → `doc/reports/phaseN_completion_report.md` +- Code review guidelines → `doc/git/code_review_guidelines.md` +- Requirements specification → `doc/planning/requirements_specification.md` + +#### Maintenance Requirements: +1. Keep `doc/README.md` updated with new documents +2. Use consistent Markdown formatting +3. Include table of contents for long documents +4. Update documents when related code changes +5. Archive outdated documents rather than deleting them + +This organization ensures all project knowledge is systematically captured and easily accessible for team members and future development phases. \ No newline at end of file diff --git a/src/Client/CasualtySightPlus_new.pro b/src/Client/CasualtySightPlus_new.pro new file mode 100644 index 0000000..80d8e21 --- /dev/null +++ b/src/Client/CasualtySightPlus_new.pro @@ -0,0 +1,55 @@ +QT += core gui widgets quickwidgets positioning +QT += multimedia multimediawidgets +QT += webenginewidgets webchannel +QT += sql charts + +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + +CONFIG += c++17 + +# Include paths - 更新为新的目录结构 +INCLUDEPATH += include +INCLUDEPATH += include/core +INCLUDEPATH += include/ui +INCLUDEPATH += AudioModule + +# Build directories +OBJECTS_DIR = build +MOC_DIR = build +UI_DIR = build +RCC_DIR = build + +# Source files - 按模块组织 +SOURCES += \ + src/main.cpp \ + src/qrc_res.cpp \ + src/core/database/UAVDatabase.cpp \ + src/core/database/DogDatabase.cpp \ + src/ui/main/MainWindow.cpp \ + src/ui/dialogs/DeviceDialog.cpp + +# Header files - 按模块组织 +HEADERS += \ + include/core/database/UAVDatabase.h \ + include/core/database/DogDatabase.h \ + include/ui/main/MainWindow.h + +# UI forms - 按模块组织 +FORMS += \ + forms/main/MainWindow.ui \ + forms/dialogs/DeviceDialog.ui + +# Default rules for deployment. +qnx: target.path = /tmp/$${TARGET}/bin +else: unix:!android: target.path = /opt/$${TARGET}/bin +!isEmpty(target.path): INSTALLS += target + +RESOURCES += \ + res.qrc + +# Version and metadata +VERSION = 2.0.0 +DEFINES += APP_VERSION=\\\"$$VERSION\\\" +TARGET = BattlefieldExplorationSystem + +# 删除了所有injury相关的文件引用 \ No newline at end of file diff --git a/src/Client/Makefile b/src/Client/Makefile index 1010710..ed7916b 100644 --- a/src/Client/Makefile +++ b/src/Client/Makefile @@ -1,9 +1,9 @@ ############################################################################# -# Makefile for building: CasualtySightPlus -# Generated by qmake (3.1) (Qt 5.15.3) -# Project: CasualtySightPlus.pro +# Makefile for building: BattlefieldExplorationSystem +# Generated by qmake (3.1) (Qt 5.15.15) +# Project: CasualtySightPlus_new.pro # Template: app -# Command: /usr/lib/qt5/bin/qmake -o Makefile CasualtySightPlus.pro +# Command: /usr/lib/qt5/bin/qmake -o Makefile CasualtySightPlus_new.pro ############################################################################# MAKEFILE = Makefile @@ -14,10 +14,10 @@ EQ = = CC = gcc CXX = g++ -DEFINES = -DQT_NO_DEBUG -DQT_QUICKWIDGETS_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_WEBENGINEWIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_CHARTS_LIB -DQT_WIDGETS_LIB -DQT_WEBENGINECORE_LIB -DQT_QUICK_LIB -DQT_MULTIMEDIA_LIB -DQT_GUI_LIB -DQT_QMLMODELS_LIB -DQT_WEBCHANNEL_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_POSITIONING_LIB -DQT_SQL_LIB -DQT_CORE_LIB +DEFINES = -DAPP_VERSION=\"2.0.0\" -DQT_NO_DEBUG -DQT_QUICKWIDGETS_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_WEBENGINEWIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_CHARTS_LIB -DQT_WIDGETS_LIB -DQT_WEBENGINECORE_LIB -DQT_QUICK_LIB -DQT_MULTIMEDIA_LIB -DQT_GUI_LIB -DQT_QMLMODELS_LIB -DQT_WEBCHANNEL_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_POSITIONING_LIB -DQT_SQL_LIB -DQT_CORE_LIB CFLAGS = -pipe -O2 -Wall -Wextra -D_REENTRANT -fPIC $(DEFINES) CXXFLAGS = -pipe -O2 -std=gnu++1z -Wall -Wextra -D_REENTRANT -fPIC $(DEFINES) -INCPATH = -I. -Iinclude -IAudioModule -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtQuickWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtMultimediaWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtCharts -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtMultimedia -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtSql -I/usr/include/x86_64-linux-gnu/qt5/QtCore -Ibuild -Ibuild -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ +INCPATH = -I. -Iinclude -Iinclude/core -Iinclude/ui -IAudioModule -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtQuickWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtMultimediaWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtCharts -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtMultimedia -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtSql -I/usr/include/x86_64-linux-gnu/qt5/QtCore -Ibuild -Ibuild -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ QMAKE = /usr/lib/qt5/bin/qmake DEL_FILE = rm -f CHK_DIR_EXISTS= test -d @@ -36,8 +36,8 @@ DEL_DIR = rmdir MOVE = mv -f TAR = tar -cf COMPRESS = gzip -9f -DISTNAME = CasualtySightPlus1.0.0 -DISTDIR = /root/Software_Architecture/src/Client/build/CasualtySightPlus1.0.0 +DISTNAME = BattlefieldExplorationSystem2.0.0 +DISTDIR = /home/hzk/Software_Architecture/src/Client/build/BattlefieldExplorationSystem2.0.0 LINK = g++ LFLAGS = -Wl,-O1 -Wl,-rpath-link,/usr/lib/x86_64-linux-gnu LIBS = $(SUBLIBS) /usr/lib/x86_64-linux-gnu/libQt5QuickWidgets.so /usr/lib/x86_64-linux-gnu/libQt5MultimediaWidgets.so /usr/lib/x86_64-linux-gnu/libQt5WebEngineWidgets.so /usr/lib/x86_64-linux-gnu/libQt5PrintSupport.so /usr/lib/x86_64-linux-gnu/libQt5Charts.so /usr/lib/x86_64-linux-gnu/libQt5Widgets.so /usr/lib/x86_64-linux-gnu/libQt5WebEngineCore.so /usr/lib/x86_64-linux-gnu/libQt5Quick.so /usr/lib/x86_64-linux-gnu/libQt5Multimedia.so /usr/lib/x86_64-linux-gnu/libQt5Gui.so /usr/lib/x86_64-linux-gnu/libQt5QmlModels.so /usr/lib/x86_64-linux-gnu/libQt5WebChannel.so /usr/lib/x86_64-linux-gnu/libQt5Qml.so /usr/lib/x86_64-linux-gnu/libQt5Network.so /usr/lib/x86_64-linux-gnu/libQt5Positioning.so /usr/lib/x86_64-linux-gnu/libQt5Sql.so /usr/lib/x86_64-linux-gnu/libQt5Core.so -lGL -lpthread @@ -52,31 +52,21 @@ OBJECTS_DIR = build/ ####### Files -SOURCES = src/DogDatabase.cpp \ - src/InjuryAnalysisUI.cpp \ - src/InjuryDatabase.cpp \ - src/UAVDatabase.cpp \ - src/injurydisiplayui.cpp \ - src/main.cpp \ - src/guidingui.cpp \ - AudioModule/IntelligenceUI.cpp build/qrc_res.cpp \ - build/moc_InjuryAnalysisUI.cpp \ - build/moc_guidingui.cpp \ - build/moc_injurydisiplayui.cpp \ - build/moc_IntelligenceUI.cpp -OBJECTS = build/DogDatabase.o \ - build/InjuryAnalysisUI.o \ - build/InjuryDatabase.o \ +SOURCES = src/main.cpp \ + src/qrc_res.cpp \ + src/core/database/UAVDatabase.cpp \ + src/core/database/DogDatabase.cpp \ + src/ui/main/MainWindow.cpp \ + src/ui/dialogs/DeviceDialog.cpp build/qrc_res.cpp \ + build/moc_MainWindow.cpp +OBJECTS = build/main.o \ + build/qrc_res.o \ build/UAVDatabase.o \ - build/injurydisiplayui.o \ - build/main.o \ - build/guidingui.o \ - build/IntelligenceUI.o \ + build/DogDatabase.o \ + build/MainWindow.o \ + build/DeviceDialog.o \ build/qrc_res.o \ - build/moc_InjuryAnalysisUI.o \ - build/moc_guidingui.o \ - build/moc_injurydisiplayui.o \ - build/moc_IntelligenceUI.o + build/moc_MainWindow.o DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \ @@ -95,9 +85,6 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \ @@ -109,8 +96,6 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \ @@ -139,16 +124,11 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webchannel.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webengine.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginecore.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginewidgets.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \ @@ -179,32 +159,26 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \ - CasualtySightPlus.pro include/DogDatabase.h \ - include/InjuryAnalysisUI.h \ - include/InjuryDatabase.h \ - include/UAVDatabase.h \ - include/guidingui.h \ - include/injurydisiplayui.h \ - AudioModule/IntelligenceUI.h src/DogDatabase.cpp \ - src/InjuryAnalysisUI.cpp \ - src/InjuryDatabase.cpp \ - src/UAVDatabase.cpp \ - src/injurydisiplayui.cpp \ - src/main.cpp \ - src/guidingui.cpp \ - AudioModule/IntelligenceUI.cpp -QMAKE_TARGET = CasualtySightPlus + CasualtySightPlus_new.pro include/core/database/UAVDatabase.h \ + include/core/database/DogDatabase.h \ + include/ui/main/MainWindow.h src/main.cpp \ + src/qrc_res.cpp \ + src/core/database/UAVDatabase.cpp \ + src/core/database/DogDatabase.cpp \ + src/ui/main/MainWindow.cpp \ + src/ui/dialogs/DeviceDialog.cpp +QMAKE_TARGET = BattlefieldExplorationSystem DESTDIR = -TARGET = CasualtySightPlus +TARGET = BattlefieldExplorationSystem first: all ####### Build rules -CasualtySightPlus: build/ui_InjuryAnalysisUI.h build/ui_guidingui.h build/ui_injurydisiplayui.h build/ui_IntelligenceUI.h $(OBJECTS) +BattlefieldExplorationSystem: build/ui_MainWindow.h build/ui_DeviceDialog.h $(OBJECTS) $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS) -Makefile: CasualtySightPlus.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \ +Makefile: CasualtySightPlus_new.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf \ @@ -222,9 +196,6 @@ Makefile: CasualtySightPlus.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \ @@ -236,8 +207,6 @@ Makefile: CasualtySightPlus.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \ @@ -266,16 +235,11 @@ Makefile: CasualtySightPlus.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webchannel.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webengine.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginecore.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginewidgets.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \ @@ -306,9 +270,9 @@ Makefile: CasualtySightPlus.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \ - CasualtySightPlus.pro \ + CasualtySightPlus_new.pro \ res.qrc - $(QMAKE) -o Makefile CasualtySightPlus.pro + $(QMAKE) -o Makefile CasualtySightPlus_new.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf: @@ -327,9 +291,6 @@ Makefile: CasualtySightPlus.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri: @@ -341,8 +302,6 @@ Makefile: CasualtySightPlus.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri: @@ -371,16 +330,11 @@ Makefile: CasualtySightPlus.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webchannel.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webengine.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginecore.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginewidgets.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri: @@ -411,15 +365,15 @@ Makefile: CasualtySightPlus.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf: -CasualtySightPlus.pro: +CasualtySightPlus_new.pro: res.qrc: qmake: FORCE - @$(QMAKE) -o Makefile CasualtySightPlus.pro + @$(QMAKE) -o Makefile CasualtySightPlus_new.pro qmake_all: FORCE -all: Makefile CasualtySightPlus +all: Makefile BattlefieldExplorationSystem dist: distdir FORCE (cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR) @@ -429,9 +383,9 @@ distdir: FORCE $(COPY_FILE) --parents $(DIST) $(DISTDIR)/ $(COPY_FILE) --parents res.qrc $(DISTDIR)/ $(COPY_FILE) --parents /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp $(DISTDIR)/ - $(COPY_FILE) --parents include/DogDatabase.h include/InjuryAnalysisUI.h include/InjuryDatabase.h include/UAVDatabase.h include/guidingui.h include/injurydisiplayui.h AudioModule/IntelligenceUI.h $(DISTDIR)/ - $(COPY_FILE) --parents src/DogDatabase.cpp src/InjuryAnalysisUI.cpp src/InjuryDatabase.cpp src/UAVDatabase.cpp src/injurydisiplayui.cpp src/main.cpp src/guidingui.cpp AudioModule/IntelligenceUI.cpp $(DISTDIR)/ - $(COPY_FILE) --parents ui/InjuryAnalysisUI.ui ui/guidingui.ui ui/injurydisiplayui.ui AudioModule/IntelligenceUI.ui $(DISTDIR)/ + $(COPY_FILE) --parents include/core/database/UAVDatabase.h include/core/database/DogDatabase.h include/ui/main/MainWindow.h $(DISTDIR)/ + $(COPY_FILE) --parents src/main.cpp src/qrc_res.cpp src/core/database/UAVDatabase.cpp src/core/database/DogDatabase.cpp src/ui/main/MainWindow.cpp src/ui/dialogs/DeviceDialog.cpp $(DISTDIR)/ + $(COPY_FILE) --parents forms/main/MainWindow.ui forms/dialogs/DeviceDialog.ui $(DISTDIR)/ clean: compiler_clean @@ -495,53 +449,28 @@ compiler_moc_predefs_clean: build/moc_predefs.h: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp g++ -pipe -O2 -std=gnu++1z -Wall -Wextra -dM -E -o build/moc_predefs.h /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp -compiler_moc_header_make_all: build/moc_InjuryAnalysisUI.cpp build/moc_guidingui.cpp build/moc_injurydisiplayui.cpp build/moc_IntelligenceUI.cpp +compiler_moc_header_make_all: build/moc_MainWindow.cpp compiler_moc_header_clean: - -$(DEL_FILE) build/moc_InjuryAnalysisUI.cpp build/moc_guidingui.cpp build/moc_injurydisiplayui.cpp build/moc_IntelligenceUI.cpp -build/moc_InjuryAnalysisUI.cpp: include/InjuryAnalysisUI.h \ - include/InjuryDatabase.h \ - build/moc_predefs.h \ - /usr/lib/qt5/bin/moc - /usr/lib/qt5/bin/moc $(DEFINES) --include /root/Software_Architecture/src/Client/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/root/Software_Architecture/src/Client -I/root/Software_Architecture/src/Client/include -I/root/Software_Architecture/src/Client/AudioModule -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtQuickWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtMultimediaWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtCharts -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtMultimedia -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtSql -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/13 -I/usr/include/x86_64-linux-gnu/c++/13 -I/usr/include/c++/13/backward -I/usr/lib/gcc/x86_64-linux-gnu/13/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include include/InjuryAnalysisUI.h -o build/moc_InjuryAnalysisUI.cpp - -build/moc_guidingui.cpp: include/guidingui.h \ - AudioModule/IntelligenceUI.h \ + -$(DEL_FILE) build/moc_MainWindow.cpp +build/moc_MainWindow.cpp: include/ui/main/MainWindow.h \ build/moc_predefs.h \ /usr/lib/qt5/bin/moc - /usr/lib/qt5/bin/moc $(DEFINES) --include /root/Software_Architecture/src/Client/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/root/Software_Architecture/src/Client -I/root/Software_Architecture/src/Client/include -I/root/Software_Architecture/src/Client/AudioModule -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtQuickWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtMultimediaWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtCharts -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtMultimedia -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtSql -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/13 -I/usr/include/x86_64-linux-gnu/c++/13 -I/usr/include/c++/13/backward -I/usr/lib/gcc/x86_64-linux-gnu/13/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include include/guidingui.h -o build/moc_guidingui.cpp - -build/moc_injurydisiplayui.cpp: include/injurydisiplayui.h \ - build/moc_predefs.h \ - /usr/lib/qt5/bin/moc - /usr/lib/qt5/bin/moc $(DEFINES) --include /root/Software_Architecture/src/Client/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/root/Software_Architecture/src/Client -I/root/Software_Architecture/src/Client/include -I/root/Software_Architecture/src/Client/AudioModule -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtQuickWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtMultimediaWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtCharts -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtMultimedia -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtSql -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/13 -I/usr/include/x86_64-linux-gnu/c++/13 -I/usr/include/c++/13/backward -I/usr/lib/gcc/x86_64-linux-gnu/13/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include include/injurydisiplayui.h -o build/moc_injurydisiplayui.cpp - -build/moc_IntelligenceUI.cpp: AudioModule/IntelligenceUI.h \ - build/moc_predefs.h \ - /usr/lib/qt5/bin/moc - /usr/lib/qt5/bin/moc $(DEFINES) --include /root/Software_Architecture/src/Client/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/root/Software_Architecture/src/Client -I/root/Software_Architecture/src/Client/include -I/root/Software_Architecture/src/Client/AudioModule -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtQuickWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtMultimediaWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtCharts -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtMultimedia -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtSql -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/13 -I/usr/include/x86_64-linux-gnu/c++/13 -I/usr/include/c++/13/backward -I/usr/lib/gcc/x86_64-linux-gnu/13/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include AudioModule/IntelligenceUI.h -o build/moc_IntelligenceUI.cpp + /usr/lib/qt5/bin/moc $(DEFINES) --include /home/hzk/Software_Architecture/src/Client/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/hzk/Software_Architecture/src/Client -I/home/hzk/Software_Architecture/src/Client/include -I/home/hzk/Software_Architecture/src/Client/include/core -I/home/hzk/Software_Architecture/src/Client/include/ui -I/home/hzk/Software_Architecture/src/Client/AudioModule -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtQuickWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtMultimediaWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtCharts -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtMultimedia -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtSql -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/13 -I/usr/include/x86_64-linux-gnu/c++/13 -I/usr/include/c++/13/backward -I/usr/lib/gcc/x86_64-linux-gnu/13/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include include/ui/main/MainWindow.h -o build/moc_MainWindow.cpp compiler_moc_objc_header_make_all: compiler_moc_objc_header_clean: compiler_moc_source_make_all: compiler_moc_source_clean: -compiler_uic_make_all: build/ui_InjuryAnalysisUI.h build/ui_guidingui.h build/ui_injurydisiplayui.h build/ui_IntelligenceUI.h +compiler_uic_make_all: build/ui_MainWindow.h build/ui_DeviceDialog.h compiler_uic_clean: - -$(DEL_FILE) build/ui_InjuryAnalysisUI.h build/ui_guidingui.h build/ui_injurydisiplayui.h build/ui_IntelligenceUI.h -build/ui_InjuryAnalysisUI.h: ui/InjuryAnalysisUI.ui \ + -$(DEL_FILE) build/ui_MainWindow.h build/ui_DeviceDialog.h +build/ui_MainWindow.h: forms/main/MainWindow.ui \ /usr/lib/qt5/bin/uic - /usr/lib/qt5/bin/uic ui/InjuryAnalysisUI.ui -o build/ui_InjuryAnalysisUI.h + /usr/lib/qt5/bin/uic forms/main/MainWindow.ui -o build/ui_MainWindow.h -build/ui_guidingui.h: ui/guidingui.ui \ +build/ui_DeviceDialog.h: forms/dialogs/DeviceDialog.ui \ /usr/lib/qt5/bin/uic - /usr/lib/qt5/bin/uic ui/guidingui.ui -o build/ui_guidingui.h - -build/ui_injurydisiplayui.h: ui/injurydisiplayui.ui \ - /usr/lib/qt5/bin/uic - /usr/lib/qt5/bin/uic ui/injurydisiplayui.ui -o build/ui_injurydisiplayui.h - -build/ui_IntelligenceUI.h: AudioModule/IntelligenceUI.ui \ - /usr/lib/qt5/bin/uic - /usr/lib/qt5/bin/uic AudioModule/IntelligenceUI.ui -o build/ui_IntelligenceUI.h + /usr/lib/qt5/bin/uic forms/dialogs/DeviceDialog.ui -o build/ui_DeviceDialog.h compiler_yacc_decl_make_all: compiler_yacc_decl_clean: @@ -553,68 +482,41 @@ compiler_clean: compiler_rcc_clean compiler_moc_predefs_clean compiler_moc_heade ####### Compile -build/DogDatabase.o: src/DogDatabase.cpp include/DogDatabase.h \ - include/UAVDatabase.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/DogDatabase.o src/DogDatabase.cpp - -build/InjuryAnalysisUI.o: src/InjuryAnalysisUI.cpp include/InjuryAnalysisUI.h \ - include/InjuryDatabase.h \ - build/ui_InjuryAnalysisUI.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/InjuryAnalysisUI.o src/InjuryAnalysisUI.cpp - -build/InjuryDatabase.o: src/InjuryDatabase.cpp include/InjuryDatabase.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/InjuryDatabase.o src/InjuryDatabase.cpp +build/main.o: src/main.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/main.o src/main.cpp -build/UAVDatabase.o: src/UAVDatabase.cpp include/UAVDatabase.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/UAVDatabase.o src/UAVDatabase.cpp +build/qrc_res.o: src/qrc_res.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/qrc_res.o src/qrc_res.cpp -build/injurydisiplayui.o: src/injurydisiplayui.cpp include/injurydisiplayui.h \ - build/ui_injurydisiplayui.h \ - include/InjuryDatabase.h \ - include/guidingui.h \ - AudioModule/IntelligenceUI.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/injurydisiplayui.o src/injurydisiplayui.cpp +build/UAVDatabase.o: src/core/database/UAVDatabase.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/UAVDatabase.o src/core/database/UAVDatabase.cpp -build/main.o: src/main.cpp include/guidingui.h \ - AudioModule/IntelligenceUI.h \ - include/DogDatabase.h \ - include/UAVDatabase.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/main.o src/main.cpp +build/DogDatabase.o: src/core/database/DogDatabase.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/DogDatabase.o src/core/database/DogDatabase.cpp -build/guidingui.o: src/guidingui.cpp include/guidingui.h \ - AudioModule/IntelligenceUI.h \ - build/ui_guidingui.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/guidingui.o src/guidingui.cpp +build/MainWindow.o: src/ui/main/MainWindow.cpp include/ui/main/MainWindow.h \ + build/ui_MainWindow.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/MainWindow.o src/ui/main/MainWindow.cpp -build/IntelligenceUI.o: AudioModule/IntelligenceUI.cpp AudioModule/IntelligenceUI.h \ - build/ui_IntelligenceUI.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/IntelligenceUI.o AudioModule/IntelligenceUI.cpp +build/DeviceDialog.o: src/ui/dialogs/DeviceDialog.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/DeviceDialog.o src/ui/dialogs/DeviceDialog.cpp build/qrc_res.o: build/qrc_res.cpp $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/qrc_res.o build/qrc_res.cpp -build/moc_InjuryAnalysisUI.o: build/moc_InjuryAnalysisUI.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/moc_InjuryAnalysisUI.o build/moc_InjuryAnalysisUI.cpp - -build/moc_guidingui.o: build/moc_guidingui.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/moc_guidingui.o build/moc_guidingui.cpp - -build/moc_injurydisiplayui.o: build/moc_injurydisiplayui.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/moc_injurydisiplayui.o build/moc_injurydisiplayui.cpp - -build/moc_IntelligenceUI.o: build/moc_IntelligenceUI.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/moc_IntelligenceUI.o build/moc_IntelligenceUI.cpp +build/moc_MainWindow.o: build/moc_MainWindow.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/moc_MainWindow.o build/moc_MainWindow.cpp ####### Install install_target: first FORCE - @test -d $(INSTALL_ROOT)/opt/CasualtySightPlus/bin || mkdir -p $(INSTALL_ROOT)/opt/CasualtySightPlus/bin - $(QINSTALL_PROGRAM) $(QMAKE_TARGET) $(INSTALL_ROOT)/opt/CasualtySightPlus/bin/$(QMAKE_TARGET) - -$(STRIP) $(INSTALL_ROOT)/opt/CasualtySightPlus/bin/$(QMAKE_TARGET) + @test -d $(INSTALL_ROOT)/opt/CasualtySightPlus_new/bin || mkdir -p $(INSTALL_ROOT)/opt/CasualtySightPlus_new/bin + $(QINSTALL_PROGRAM) $(QMAKE_TARGET) $(INSTALL_ROOT)/opt/CasualtySightPlus_new/bin/$(QMAKE_TARGET) + -$(STRIP) $(INSTALL_ROOT)/opt/CasualtySightPlus_new/bin/$(QMAKE_TARGET) uninstall_target: FORCE - -$(DEL_FILE) $(INSTALL_ROOT)/opt/CasualtySightPlus/bin/$(QMAKE_TARGET) - -$(DEL_DIR) $(INSTALL_ROOT)/opt/CasualtySightPlus/bin/ + -$(DEL_FILE) $(INSTALL_ROOT)/opt/CasualtySightPlus_new/bin/$(QMAKE_TARGET) + -$(DEL_DIR) $(INSTALL_ROOT)/opt/CasualtySightPlus_new/bin/ install: install_target FORCE diff --git a/src/Client/doc/README.md b/src/Client/doc/README.md new file mode 100644 index 0000000..c3aa171 --- /dev/null +++ b/src/Client/doc/README.md @@ -0,0 +1,111 @@ +# CasualtySightPlus 项目文档 + +本目录包含CasualtySightPlus项目的所有技术文档,按照功能分类组织。 + +## 文档目录结构 + +### 📋 planning/ - 项目规划文档 +项目规划、需求分析、架构设计等高层次规划文档 + +**当前文档**: +- `task.md` - 项目任务分解和进度跟踪 +- `project_structure_plan.md` - 项目结构重构规划 +- `refactor_impact_assessment.md` - 重构影响评估和风险分析 +- `code_refactor_plan.md` - 代码重构和模块化改造计划 +- `functional_modules_specification.md` - 功能模块详细规格说明 + +**后续文档**: +- `requirements_specification.md` - 系统需求规格说明 +- `architecture_design.md` - 系统架构设计 +- `ui_design_specification.md` - UI设计规范 + +### 🛠️ technical/ - 技术文档 +API文档、组件设计、技术实现细节等 + +**后续文档**: +- `api_documentation.md` - API接口文档 +- `component_design.md` - 组件设计文档 +- `coding_standards.md` - 编码规范 +- `build_instructions.md` - 构建说明 +- `deployment_guide.md` - 部署指南 + +### 🗄️ database/ - 数据库文档 +数据库设计、表结构、迁移脚本等 + +**当前文档**: +- `database_schema.sql` - 原始数据库表结构定义 +- `updated_database_schema.sql` - 更新的数据库表结构(统一设备表) +- `database_design.md` - 数据库设计详细说明 + +**后续文档**: +- `migration_scripts/` - 数据迁移脚本目录 +- `performance_optimization.md` - 数据库性能优化 + +### 📊 reports/ - 项目报告 +阶段性完成报告、测试报告、性能分析等 + +**当前文档**: +- `phase1_completion_report.md` - Phase 1完成报告 +- `code_refactor_summary.md` - 代码重构和模块化改造总结 + +**后续文档**: +- `phase2_completion_report.md` - Phase 2完成报告 +- `phase3_completion_report.md` - Phase 3完成报告 +- `testing_report.md` - 测试报告 +- `performance_analysis.md` - 性能分析报告 +- `final_project_report.md` - 最终项目报告 + +### 🔄 git/ - 版本控制文档 +Git工作流程、分支策略、代码审查等 + +**当前文档**: +- `git_branch_strategy.md` - Git分支管理策略 + +**后续文档**: +- `code_review_guidelines.md` - 代码审查指南 +- `commit_message_standards.md` - 提交信息规范 +- `release_process.md` - 发布流程 + +## 文档维护规范 + +### 文档命名约定 +- 使用小写字母和下划线分隔:`file_name.md` +- 文档类型后缀:`.md`(Markdown)、`.sql`(SQL脚本)、`.json`(配置文件) +- 版本化文档:`document_name_v1.0.md` + +### 文档内容要求 +1. **标题层次**: 使用标准的Markdown标题层次(# ## ### ####) +2. **目录**: 长文档需要包含目录 +3. **更新日期**: 每次重要更新需要记录修改日期 +4. **作者信息**: 标明文档作者和维护者 +5. **版本信息**: 重要文档需要版本号 + +### 文档审查流程 +1. 新建或重大修改的文档需要经过代码审查 +2. 文档变更与代码变更同步进行 +3. 定期review文档的准确性和时效性 + +## 快速导航 + +### 新团队成员必读 +1. [项目任务分解](planning/task.md) +2. [项目结构规划](planning/project_structure_plan.md) +3. [Git分支策略](git/git_branch_strategy.md) + +### 开发者必读 +1. [数据库表结构](database/database_schema.sql) +2. [重构影响评估](planning/refactor_impact_assessment.md) + +### 项目经理必读 +1. [Phase 1完成报告](reports/phase1_completion_report.md) +2. [项目风险评估](planning/refactor_impact_assessment.md) + +## 文档更新日志 + +| 日期 | 文档 | 变更描述 | 作者 | +|------|------|----------|------| +| 2025-06-18 | 全部 | 初始化文档目录结构,迁移Phase 1文档 | Claude | + +--- + +**注意**: 本文档目录遵循项目开发进度动态更新,请定期查看最新版本。 \ No newline at end of file diff --git a/src/Client/doc/database/database_design.md b/src/Client/doc/database/database_design.md new file mode 100644 index 0000000..3f6142e --- /dev/null +++ b/src/Client/doc/database/database_design.md @@ -0,0 +1,240 @@ +# 战场探索系统数据库设计 + +## 设计概述 + +根据"战场探索系统"的实际需求,重新设计了数据库结构: +- **移除了伤员记录表** - 不符合战场探索的核心功能 +- **合并设备表** - 无人机和地面机器人使用统一表结构,通过`device_type`字段区分 +- **增加探索相关功能** - 添加了探索任务等战场探索核心功能 + +## 数据库表结构 + +### 1. devices (统一设备表) ⭐ 核心表 + +**用途**: 存储所有无人设备(无人机 + 地面机器人) + +```sql +CREATE TABLE devices ( + id VARCHAR(50) PRIMARY KEY, -- 设备唯一ID + name VARCHAR(100) NOT NULL, -- 设备名称 + device_type VARCHAR(20) NOT NULL, -- 设备类型: 'uav'=无人机, 'dog'=地面机器人 + state INT DEFAULT 0, -- 设备状态: 0=离线, 1=在线, 2=工作中, 3=错误 + ip VARCHAR(15), -- 设备IP地址 + port INT, -- 通信端口 + longitude DOUBLE, -- 经度坐标 + latitude DOUBLE, -- 纬度坐标 + signal_strength INT DEFAULT 0, -- 信号强度 (0-100) + last_heartbeat TIMESTAMP NULL, -- 最后心跳时间 + battery_level INT DEFAULT 100, -- 电池电量 (0-100) + firmware_version VARCHAR(50), -- 固件版本 + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +); +``` + +**索引优化**: +- `device_type` - 按设备类型快速筛选 +- `state` - 按状态查询在线设备 +- `(longitude, latitude)` - 地理位置查询 +- `(device_type, state)` - 复合索引,查询特定类型的特定状态设备 + +### 2. exploration_tasks (探索任务表) 🎯 业务核心 + +**用途**: 管理战场探索任务 + +```sql +CREATE TABLE exploration_tasks ( + task_id VARCHAR(50) PRIMARY KEY, + task_name VARCHAR(200) NOT NULL, + task_type VARCHAR(50), -- 任务类型: patrol, reconnaissance, search + assigned_devices JSON, -- 分配的设备ID列表 + task_status VARCHAR(20) DEFAULT 'created', -- 任务状态 + start_time TIMESTAMP NULL, + end_time TIMESTAMP NULL, + target_area JSON, -- 目标区域坐标 + task_priority INT DEFAULT 1, -- 优先级: 1=低, 2=中, 3=高, 4=紧急 + created_by VARCHAR(50), + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +); +``` + +### 3. system_config (系统配置表) ⚙️ + +**用途**: 存储系统配置参数 + +```sql +CREATE TABLE system_config ( + config_key VARCHAR(100) PRIMARY KEY, + config_value TEXT, + config_type VARCHAR(20) DEFAULT 'string', + description VARCHAR(500), + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +); +``` + +### 4. device_operation_logs (设备操作日志表) 📝 + +**用途**: 记录所有设备操作日志 + +```sql +CREATE TABLE device_operation_logs ( + log_id BIGINT AUTO_INCREMENT PRIMARY KEY, + device_id VARCHAR(50), + device_type VARCHAR(20), + operation VARCHAR(50), -- 操作: connect, disconnect, control, move, takeoff, land + operation_result VARCHAR(20) DEFAULT 'success', + operator VARCHAR(50), + operation_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + details JSON, + FOREIGN KEY (device_id) REFERENCES devices(id) +); +``` + +### 5. user_sessions (用户会话表) 👤 + +**用途**: 管理用户登录会话 + +```sql +CREATE TABLE user_sessions ( + session_id VARCHAR(100) PRIMARY KEY, + user_name VARCHAR(50), + login_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + last_activity TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + ip_address VARCHAR(45), + user_agent TEXT, + status INT DEFAULT 1 +); +``` + +## 兼容性设计 + +### 视图映射 (保持现有代码工作) + +为了确保现有的`UAVDatabase`和`DogDatabase`类继续工作,创建了兼容性视图: + +```sql +-- UAV设备视图 (兼容UAVDatabase) +CREATE VIEW uavdatabase AS +SELECT id, state, ip, port, longitude as lon, latitude as lat +FROM devices WHERE device_type = 'uav'; + +-- Dog设备视图 (兼容DogDatabase) +CREATE VIEW dogdatabase AS +SELECT id, state, ip, port, longitude as lon, latitude as lat +FROM devices WHERE device_type = 'dog'; +``` + +## 设备类型管理 + +### device_type 枚举值 +- `'uav'` - 无人机设备 +- `'dog'` - 地面机器人设备 + +### state 状态值 +- `0` - 离线 +- `1` - 在线 +- `2` - 工作中 +- `3` - 错误 + +### 示例数据 + +```sql +INSERT INTO devices VALUES +('UAV001', '侦察无人机-01', 'uav', 1, '192.168.1.101', 8001, 116.4074, 39.9042, 85, 95), +('DOG001', '地面机器人-01', 'dog', 1, '192.168.1.201', 8101, 116.4064, 39.9032, 92, 88); +``` + +## 数据库查询示例 + +### 1. 获取所有在线设备 +```sql +SELECT id, name, device_type, signal_strength, battery_level +FROM devices +WHERE state = 1 +ORDER BY device_type, name; +``` + +### 2. 按设备类型分组统计 +```sql +SELECT + device_type, + COUNT(*) as total_count, + SUM(CASE WHEN state = 1 THEN 1 ELSE 0 END) as online_count, + AVG(battery_level) as avg_battery +FROM devices +GROUP BY device_type; +``` + +### 3. 查找信号弱的设备 +```sql +SELECT id, name, device_type, signal_strength, last_heartbeat +FROM devices +WHERE state = 1 AND signal_strength < 50 +ORDER BY signal_strength ASC; +``` + +### 4. 获取设备列表(用于界面显示) +```sql +SELECT + id, + name, + CASE device_type + WHEN 'uav' THEN '无人机' + WHEN 'dog' THEN '地面机器人' + END as type_name, + CASE state + WHEN 0 THEN '离线' + WHEN 1 THEN '在线' + WHEN 2 THEN '工作中' + WHEN 3 THEN '错误' + END as status_name, + signal_strength, + battery_level, + ip, + port +FROM devices +ORDER BY device_type, name; +``` + +## 优势分析 + +### 1. 统一管理 +- ✅ 无人机和机器狗使用相同的数据结构 +- ✅ 简化了数据库连接和管理代码 +- ✅ 界面可以统一显示设备列表 + +### 2. 扩展性强 +- ✅ 添加新设备类型只需增加`device_type`值 +- ✅ 字段统一,便于添加通用功能(如电池监控) +- ✅ 便于实现设备间的协同任务 + +### 3. 性能优化 +- ✅ 减少了表的数量,降低了JOIN操作 +- ✅ 合理的索引设计提升查询性能 +- ✅ JSON字段支持灵活的扩展信息存储 + +### 4. 兼容性保证 +- ✅ 通过视图确保现有代码继续工作 +- ✅ 渐进式迁移,降低风险 +- ✅ 新老代码可以并存 + +## 迁移策略 + +### Phase 1: 表结构迁移 ✅ 已完成 +- 创建新的统一`devices`表 +- 创建兼容性视图 +- 插入示例数据 + +### Phase 2: 代码适配 +- 更新数据库访问类,支持统一设备管理 +- 修改界面代码,实现统一设备列表 +- 添加设备类型筛选功能 + +### Phase 3: 功能增强 +- 实现探索任务管理 +- 添加设备协同功能 +- 完善日志记录系统 + +这个设计完全符合"战场探索系统"的定位,突出了设备管理和探索任务的核心功能,同时保持了与现有代码的兼容性。 \ No newline at end of file diff --git a/src/Client/doc/database/database_schema.sql b/src/Client/doc/database/database_schema.sql new file mode 100644 index 0000000..291dae5 --- /dev/null +++ b/src/Client/doc/database/database_schema.sql @@ -0,0 +1,152 @@ +-- CasualtySightPlus 数据库表结构 +-- 数据库: Client +-- 创建日期: 2025-06-18 + +USE Client; + +-- 1. UAV设备表 (无人机) +CREATE TABLE IF NOT EXISTS uav_devices ( + id VARCHAR(50) PRIMARY KEY, + name VARCHAR(100) NOT NULL DEFAULT 'UAV设备', + state INT DEFAULT 0 COMMENT '设备状态: 0=离线, 1=在线, 2=工作中, 3=错误', + ip VARCHAR(15), + port INT, + longitude DOUBLE, + latitude DOUBLE, + signal_strength INT DEFAULT 0 COMMENT '信号强度 0-100', + last_heartbeat TIMESTAMP NULL COMMENT '最后心跳时间', + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX idx_state (state), + INDEX idx_location (longitude, latitude) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='无人机设备表'; + +-- 2. Dog机器人表 (地面机器人) +CREATE TABLE IF NOT EXISTS dog_devices ( + id VARCHAR(50) PRIMARY KEY, + name VARCHAR(100) NOT NULL DEFAULT '地面机器人', + state INT DEFAULT 0 COMMENT '设备状态: 0=离线, 1=在线, 2=工作中, 3=错误', + ip VARCHAR(15), + port INT, + longitude DOUBLE, + latitude DOUBLE, + signal_strength INT DEFAULT 0 COMMENT '信号强度 0-100', + last_heartbeat TIMESTAMP NULL COMMENT '最后心跳时间', + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX idx_state (state), + INDEX idx_location (longitude, latitude) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='地面机器人设备表'; + +-- 3. 伤员记录表 +CREATE TABLE IF NOT EXISTS injury_records ( + id VARCHAR(50) PRIMARY KEY, + rank INT COMMENT '伤员等级', + longitude DOUBLE, + latitude DOUBLE, + flag INT DEFAULT 1 COMMENT '有效标志: 0=无效, 1=有效', + severity INT DEFAULT 0 COMMENT '严重程度: 0=轻微, 1=中等, 2=严重, 3=危重', + description TEXT COMMENT '伤情描述', + discovered_by VARCHAR(50) COMMENT '发现设备ID', + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX idx_flag (flag), + INDEX idx_severity (severity), + INDEX idx_location (longitude, latitude) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='伤员记录表'; + +-- 4. 系统配置表 +CREATE TABLE IF NOT EXISTS system_config ( + config_key VARCHAR(100) PRIMARY KEY, + config_value TEXT, + config_type VARCHAR(20) DEFAULT 'string' COMMENT '配置类型: string, int, float, boolean, json', + description VARCHAR(500), + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表'; + +-- 5. 用户会话表 +CREATE TABLE IF NOT EXISTS user_sessions ( + session_id VARCHAR(100) PRIMARY KEY, + user_name VARCHAR(50), + login_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + last_activity TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + ip_address VARCHAR(45), + user_agent TEXT, + status INT DEFAULT 1 COMMENT '会话状态: 0=已注销, 1=活跃', + INDEX idx_user (user_name), + INDEX idx_status (status) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户会话表'; + +-- 6. 设备操作日志表 +CREATE TABLE IF NOT EXISTS device_operation_logs ( + log_id BIGINT AUTO_INCREMENT PRIMARY KEY, + device_id VARCHAR(50), + device_type VARCHAR(20) COMMENT '设备类型: uav, dog', + operation VARCHAR(50) COMMENT '操作类型: connect, disconnect, control, move', + operation_result VARCHAR(20) DEFAULT 'success' COMMENT '操作结果: success, failed, timeout', + operator VARCHAR(50) COMMENT '操作员', + operation_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + details JSON COMMENT '操作详细信息', + INDEX idx_device (device_id), + INDEX idx_operation_time (operation_time), + INDEX idx_device_type (device_type) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备操作日志表'; + +-- 插入默认系统配置 +INSERT INTO system_config (config_key, config_value, config_type, description) VALUES +('app.version', '2.0.0', 'string', '应用程序版本'), +('app.theme', 'military', 'string', '默认主题'), +('database.connection_timeout', '30000', 'int', '数据库连接超时时间(毫秒)'), +('ui.auto_refresh_interval', '5000', 'int', '界面自动刷新间隔(毫秒)'), +('ui.device_card_style', 'modern', 'string', '设备卡片样式'), +('map.default_center_lat', '39.9', 'float', '地图默认中心纬度'), +('map.default_center_lon', '116.4', 'float', '地图默认中心经度'), +('map.default_zoom', '12', 'int', '地图默认缩放级别'), +('device.heartbeat_interval', '10000', 'int', '设备心跳间隔(毫秒)'), +('device.connection_timeout', '30000', 'int', '设备连接超时(毫秒)') +ON DUPLICATE KEY UPDATE + config_value = VALUES(config_value), + updated_at = CURRENT_TIMESTAMP; + +-- 为兼容现有代码,创建旧表名的视图 +CREATE OR REPLACE VIEW uavdatabase AS +SELECT + id, + state, + ip, + port, + longitude as lon, + latitude as lat +FROM uav_devices; + +CREATE OR REPLACE VIEW dogdatabase AS +SELECT + id, + state, + ip, + port, + longitude as lon, + latitude as lat +FROM dog_devices; + +CREATE OR REPLACE VIEW injurydatabase AS +SELECT + id, + rank as injuryrank, + longitude as lon, + latitude as lat, + flag +FROM injury_records; + +-- 显示创建的表 +SHOW TABLES; + +-- 显示表结构概要 +SELECT + TABLE_NAME as '表名', + TABLE_COMMENT as '说明', + TABLE_ROWS as '记录数' +FROM information_schema.TABLES +WHERE TABLE_SCHEMA = 'Client' +ORDER BY TABLE_NAME; \ No newline at end of file diff --git a/src/Client/doc/database/updated_database_schema.sql b/src/Client/doc/database/updated_database_schema.sql new file mode 100644 index 0000000..7bb8022 --- /dev/null +++ b/src/Client/doc/database/updated_database_schema.sql @@ -0,0 +1,192 @@ +-- CasualtySightPlus 战场探索系统 - 更新的数据库表结构 +-- 数据库: Client +-- 更新日期: 2025-06-18 +-- 变更: 合并UAV和Dog设备表,移除伤员记录表 + +USE Client; + +-- 删除旧的分离表和视图(如果存在) +DROP VIEW IF EXISTS uavdatabase; +DROP VIEW IF EXISTS dogdatabase; +DROP VIEW IF EXISTS injurydatabase; +DROP TABLE IF EXISTS uav_devices; +DROP TABLE IF EXISTS dog_devices; +DROP TABLE IF EXISTS injury_records; + +-- 1. 统一设备表 (无人机 + 地面机器人) +CREATE TABLE IF NOT EXISTS devices ( + id VARCHAR(50) PRIMARY KEY, + name VARCHAR(100) NOT NULL DEFAULT '无人设备', + device_type VARCHAR(20) NOT NULL COMMENT '设备类型: uav=无人机, dog=地面机器人', + state INT DEFAULT 0 COMMENT '设备状态: 0=离线, 1=在线, 2=工作中, 3=错误', + ip VARCHAR(15), + port INT, + longitude DOUBLE, + latitude DOUBLE, + signal_strength INT DEFAULT 0 COMMENT '信号强度 0-100', + last_heartbeat TIMESTAMP NULL COMMENT '最后心跳时间', + battery_level INT DEFAULT 100 COMMENT '电池电量 0-100', + firmware_version VARCHAR(50) COMMENT '固件版本', + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + + -- 索引优化 + INDEX idx_device_type (device_type), + INDEX idx_state (state), + INDEX idx_location (longitude, latitude), + INDEX idx_type_state (device_type, state) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='统一设备表(无人机+地面机器人)'; + +-- 2. 系统配置表 +CREATE TABLE IF NOT EXISTS system_config ( + config_key VARCHAR(100) PRIMARY KEY, + config_value TEXT, + config_type VARCHAR(20) DEFAULT 'string' COMMENT '配置类型: string, int, float, boolean, json', + description VARCHAR(500), + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表'; + +-- 3. 用户会话表 +CREATE TABLE IF NOT EXISTS user_sessions ( + session_id VARCHAR(100) PRIMARY KEY, + user_name VARCHAR(50), + login_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + last_activity TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + ip_address VARCHAR(45), + user_agent TEXT, + status INT DEFAULT 1 COMMENT '会话状态: 0=已注销, 1=活跃', + INDEX idx_user (user_name), + INDEX idx_status (status) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户会话表'; + +-- 4. 设备操作日志表 +CREATE TABLE IF NOT EXISTS device_operation_logs ( + log_id BIGINT AUTO_INCREMENT PRIMARY KEY, + device_id VARCHAR(50), + device_type VARCHAR(20) COMMENT '设备类型: uav, dog', + operation VARCHAR(50) COMMENT '操作类型: connect, disconnect, control, move, takeoff, land', + operation_result VARCHAR(20) DEFAULT 'success' COMMENT '操作结果: success, failed, timeout', + operator VARCHAR(50) COMMENT '操作员', + operation_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + details JSON COMMENT '操作详细信息', + INDEX idx_device (device_id), + INDEX idx_operation_time (operation_time), + INDEX idx_device_type (device_type), + FOREIGN KEY (device_id) REFERENCES devices(id) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备操作日志表'; + +-- 5. 探索任务表 (战场探索系统的核心功能) +CREATE TABLE IF NOT EXISTS exploration_tasks ( + task_id VARCHAR(50) PRIMARY KEY, + task_name VARCHAR(200) NOT NULL, + task_type VARCHAR(50) COMMENT '任务类型: patrol=巡逻, reconnaissance=侦察, search=搜索', + assigned_devices JSON COMMENT '分配的设备ID列表', + task_status VARCHAR(20) DEFAULT 'created' COMMENT '任务状态: created, running, paused, completed, failed', + start_time TIMESTAMP NULL, + end_time TIMESTAMP NULL, + target_area JSON COMMENT '目标区域坐标', + task_priority INT DEFAULT 1 COMMENT '任务优先级: 1=低, 2=中, 3=高, 4=紧急', + created_by VARCHAR(50), + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX idx_status (task_status), + INDEX idx_priority (task_priority), + INDEX idx_type (task_type) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='探索任务表'; + +-- 插入默认系统配置 +INSERT INTO system_config (config_key, config_value, config_type, description) VALUES +('app.version', '2.0.0', 'string', '应用程序版本'), +('app.theme', 'military', 'string', '默认主题'), +('database.connection_timeout', '30000', 'int', '数据库连接超时时间(毫秒)'), +('ui.auto_refresh_interval', '5000', 'int', '界面自动刷新间隔(毫秒)'), +('ui.device_card_style', 'modern', 'string', '设备卡片样式'), +('map.default_center_lat', '39.9', 'float', '地图默认中心纬度'), +('map.default_center_lon', '116.4', 'float', '地图默认中心经度'), +('map.default_zoom', '12', 'int', '地图默认缩放级别'), +('device.heartbeat_interval', '10000', 'int', '设备心跳间隔(毫秒)'), +('device.connection_timeout', '30000', 'int', '设备连接超时(毫秒)'), +('exploration.max_concurrent_tasks', '5', 'int', '最大并发探索任务数'), +('exploration.default_patrol_speed', '2.0', 'float', '默认巡逻速度(m/s)') +ON DUPLICATE KEY UPDATE + config_value = VALUES(config_value), + updated_at = CURRENT_TIMESTAMP; + +-- 插入示例设备数据 +INSERT INTO devices (id, name, device_type, state, ip, port, longitude, latitude, signal_strength, battery_level) VALUES +('UAV001', '侦察无人机-01', 'uav', 1, '192.168.1.101', 8001, 116.4074, 39.9042, 85, 95), +('UAV002', '侦察无人机-02', 'uav', 0, '192.168.1.102', 8002, 116.4084, 39.9052, 0, 78), +('DOG001', '地面机器人-01', 'dog', 1, '192.168.1.201', 8101, 116.4064, 39.9032, 92, 88), +('DOG002', '地面机器人-02', 'dog', 2, '192.168.1.202', 8102, 116.4054, 39.9022, 76, 65) +ON DUPLICATE KEY UPDATE + name = VALUES(name), + device_type = VALUES(device_type), + updated_at = CURRENT_TIMESTAMP; + +-- 为兼容现有代码,创建视图 +CREATE OR REPLACE VIEW uavdatabase AS +SELECT + id, + state, + ip, + port, + longitude as lon, + latitude as lat +FROM devices +WHERE device_type = 'uav'; + +CREATE OR REPLACE VIEW dogdatabase AS +SELECT + id, + state, + ip, + port, + longitude as lon, + latitude as lat +FROM devices +WHERE device_type = 'dog'; + +-- 创建统一的设备视图(用于新的界面代码) +CREATE OR REPLACE VIEW device_list AS +SELECT + id, + name, + device_type, + CASE device_type + WHEN 'uav' THEN '无人机' + WHEN 'dog' THEN '地面机器人' + ELSE '未知设备' + END as device_type_name, + CASE state + WHEN 0 THEN '离线' + WHEN 1 THEN '在线' + WHEN 2 THEN '工作中' + WHEN 3 THEN '错误' + ELSE '未知状态' + END as state_name, + state, + ip, + port, + longitude, + latitude, + signal_strength, + battery_level, + last_heartbeat, + created_at, + updated_at +FROM devices +ORDER BY device_type, name; + +-- 显示创建的表 +SHOW TABLES; + +-- 显示表结构概要 +SELECT + TABLE_NAME as '表名', + TABLE_COMMENT as '说明', + TABLE_ROWS as '记录数' +FROM information_schema.TABLES +WHERE TABLE_SCHEMA = 'Client' + AND TABLE_TYPE = 'BASE TABLE' +ORDER BY TABLE_NAME; \ No newline at end of file diff --git a/src/Client/doc/git/git_branch_strategy.md b/src/Client/doc/git/git_branch_strategy.md new file mode 100644 index 0000000..814a449 --- /dev/null +++ b/src/Client/doc/git/git_branch_strategy.md @@ -0,0 +1,301 @@ +# Git 分支策略 + +## 分支结构 + +### 主要分支 + +#### main +- **用途**: 生产就绪的稳定代码 +- **保护**: 不允许直接推送,只能通过PR合并 +- **特点**: 始终保持可部署状态 + +#### develop +- **用途**: 开发集成分支,所有功能分支的合并目标 +- **更新频率**: 持续集成新功能 +- **特点**: 最新的开发进度,但可能不稳定 + +### 功能分支 + +#### feature/ui-redesign +- **用途**: 界面重设计相关开发 +- **基于**: develop分支 +- **包含**: + - 主界面布局重构 + - 设备卡片组件开发 + - 样式主题系统 + +#### feature/database-enhancement +- **用途**: 数据库优化和功能增强 +- **基于**: develop分支 +- **包含**: + - 数据库连接管理改进 + - 新表结构实现 + - 数据模型优化 + +#### feature/component-system +- **用途**: 可复用组件系统开发 +- **基于**: develop分支 +- **包含**: + - DeviceCard组件 + - StatusPanel组件 + - MapViewer组件 + +### 支持分支 + +#### hotfix/critical-fix +- **用途**: 紧急修复生产问题 +- **基于**: main分支 +- **合并到**: main 和 develop + +#### release/v2.0.0 +- **用途**: 版本发布准备 +- **基于**: develop分支 +- **包含**: bug修复、文档更新、版本号调整 + +## 分支命名规范 + +### 功能分支 +``` +feature/<功能描述> +feature/ui-redesign +feature/database-enhancement +feature/device-card-component +``` + +### 修复分支 +``` +bugfix/<问题描述> +bugfix/connection-timeout +bugfix/ui-layout-issue +``` + +### 热修复分支 +``` +hotfix/<紧急问题> +hotfix/database-crash +hotfix/security-vulnerability +``` + +### 发布分支 +``` +release/<版本号> +release/v2.0.0 +release/v2.0.1 +``` + +## 工作流程 + +### 1. 功能开发流程 + +```bash +# 1. 从develop创建功能分支 +git checkout develop +git pull origin develop +git checkout -b feature/ui-redesign + +# 2. 开发过程中定期提交 +git add . +git commit -m "feat: 实现设备卡片基础布局" +git commit -m "feat: 添加设备状态指示器" +git commit -m "style: 应用新的颜色主题" + +# 3. 推送到远程分支 +git push origin feature/ui-redesign + +# 4. 创建Pull Request +# 通过GitHub/GitLab界面创建PR +# 目标分支: develop +# 描述: 详细的功能说明和测试结果 +``` + +### 2. 代码审查流程 + +#### PR模板 +```markdown +## 功能描述 +简要描述此PR实现的功能 + +## 变更内容 +- [ ] UI界面重设计 +- [ ] 数据库结构优化 +- [ ] 新增组件开发 +- [ ] 性能优化 +- [ ] Bug修复 + +## 测试清单 +- [ ] 单元测试通过 +- [ ] 集成测试通过 +- [ ] 手动功能测试 +- [ ] 性能测试 +- [ ] 兼容性测试 + +## 截图/演示 +(如果有UI变更,请提供截图或GIF演示) + +## 相关Issues +Closes #123, Relates to #456 +``` + +### 3. 集成流程 + +```bash +# 1. 功能完成后合并到develop +git checkout develop +git pull origin develop +git merge feature/ui-redesign +git push origin develop + +# 2. 删除已合并的功能分支 +git branch -d feature/ui-redesign +git push origin --delete feature/ui-redesign +``` + +### 4. 发布流程 + +```bash +# 1. 从develop创建发布分支 +git checkout develop +git pull origin develop +git checkout -b release/v2.0.0 + +# 2. 版本准备工作 +# 更新版本号 +# 更新CHANGELOG.md +# 最后的bug修复 + +# 3. 合并到main和develop +git checkout main +git merge release/v2.0.0 +git tag v2.0.0 +git push origin main --tags + +git checkout develop +git merge release/v2.0.0 +git push origin develop + +# 4. 删除发布分支 +git branch -d release/v2.0.0 +``` + +## 提交信息规范 + +### 提交类型 +- **feat**: 新功能 +- **fix**: 修复bug +- **docs**: 文档更新 +- **style**: 代码格式调整(不影响功能) +- **refactor**: 重构代码 +- **test**: 测试相关 +- **chore**: 构建过程或辅助工具的变动 + +### 提交格式 +``` +(): + + + +