# pilot-app **Repository Path**: tainshan/pilot-app ## Basic Information - **Project Name**: pilot-app - **Description**: 无人机管理后台 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-09-25 - **Last Updated**: 2026-03-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Pilot - 无人机飞控管理后台 基于FastAPI的无人机飞控管理系统,提供完整的无人机设备管理、任务调度、航线规划、数据监控和告警处理功能。 ## 功能特点 ### 核心功能 - **用户权限管理**:完整的RBAC权限控制体系,支持多角色(超级管理员、操作员、查看者) - **设备管理**:无人机设备、型号管理,支持设备状态监控和参数配置 - **任务调度**:任务创建、调度、执行和监控,支持任务模板 - **航线规划**:灵活的航线设计,支持禁飞区和重点监测区域管理 - **AI检测集成**:支持多种AI检测模型的管理和应用 - **实时监控**:无人机飞行状态实时监控和数据采集 - **告警系统**:智能告警和工单处理流程 - **日志管理**:操作日志、飞行日志、异常日志的全面记录 ### 技术特点 - **高性能**:基于FastAPI框架,支持异步请求处理 - **安全性**:JWT认证,细粒度权限控制 - **可扩展性**:模块化设计,易于扩展新功能 - **数据持久化**:使用SQLAlchemy ORM和SQLite数据库 - **现代API**:符合RESTful设计规范的API接口 - **开发友好**:详细的API文档和类型提示 ## 技术栈 - **后端框架**:FastAPI 0.110.0 - **ASGI服务器**:Uvicorn 0.29.0 - **ORM框架**:SQLAlchemy 2.0.27 - **数据验证**:Pydantic 2.6.1 - **认证授权**:passlib, bcrypt, python-jose - **数据库**:SQLite(默认),可配置为PostgreSQL - **工具库**:pandas, matplotlib, httpx, alembic ## 项目结构 ``` pilot/ ├── app/ # 主应用目录 │ ├── __init__.py # 包初始化 │ ├── core/ # 核心配置和功能 │ │ └── config.py # 全局配置 │ ├── db/ # 数据库相关 │ │ ├── init_db.py # 数据库初始化脚本 │ │ └── session.py # 数据库会话管理 │ ├── main.py # 应用入口 │ ├── models/ # 数据库模型 │ │ ├── users.py # 用户相关模型 │ │ ├── drones.py # 无人机相关模型 │ │ ├── routes.py # 航线相关模型 │ │ ├── missions.py # 任务相关模型 │ │ ├── models.py # 检测模型相关模型 │ │ ├── alerts.py # 告警相关模型 │ │ └── logs.py # 日志相关模型 │ ├── routers/ # API路由 │ │ ├── auth.py # 认证路由 │ │ ├── users.py # 用户管理路由 │ │ ├── drones.py # 设备管理路由 │ │ ├── missions.py # 任务管理路由 │ │ ├── routes.py # 航线管理路由 │ │ ├── models.py # 模型管理路由 │ │ ├── logs.py # 日志管理路由 │ │ └── alerts.py # 告警管理路由 │ ├── schemas/ # 请求和响应模型 │ ├── services/ # 业务逻辑层 │ └── utils/ # 工具函数 ├── requirements.txt # 项目依赖 └── venv/ # 虚拟环境 ``` ## 安装指南 ### 环境要求 - Python 3.8+(推荐3.10+) - pip 20.0+ ### 步骤1:克隆项目 ```bash git clone <项目仓库地址> cd pilot ``` ### 步骤2:创建虚拟环境 ```bash # Windows python -m venv venv venv\Scripts\activate # macOS/Linux python3 -m venv venv source venv/bin/activate ``` ### 步骤3:安装依赖 ```bash pip install -r requirements.txt ``` ### 步骤4:配置环境变量 创建`.env`文件(可选),自定义配置: ``` # 项目配置 PROJECT_NAME="Pilot - Drone Management System" # 安全配置 SECRET_KEY="your-secret-key" ACCESS_TOKEN_EXPIRE_MINUTES=1440 # 24小时 # 数据库配置 # 默认使用SQLite,可配置为PostgreSQL # SQLALCHEMY_DATABASE_URI="postgresql://user:password@localhost/dbname" # 管理员账户 FIRST_SUPERUSER=admin FIRST_SUPERUSER_PASSWORD=your-secure-password ``` ### 步骤5:启动应用 ```bash # 开发模式 uvicorn app.main:app --reload # 生产模式 uvicorn app.main:app --host 0.0.0.0 --port 8000 ``` ## API文档 启动应用后,可以访问以下地址查看自动生成的API文档: - **Swagger UI**:http://localhost:8000/docs - **ReDoc**:http://localhost:8000/redoc ## 数据库初始化 应用启动时会自动执行数据库初始化,包括: - 创建所有数据库表 - 创建默认超级管理员账户(用户名:admin,密码:admin@123,可通过配置修改) - 创建基础角色和权限 ## 默认账户 系统初始化后,会创建以下默认账户: - **超级管理员**:用户名 `admin`,密码 `admin@123` 首次登录后,请立即修改密码以确保安全。 ## 角色权限说明 ### 超级管理员 (superadmin) - 拥有系统所有功能的完整权限 - 可以创建、修改和删除用户、角色和权限 - 可以管理所有无人机、任务和系统配置 ### 操作员 (operator) - 可以查看用户信息 - 可以管理无人机、任务和航线 - 可以查看检测模型和日志 - 可以处理告警和工单 ### 查看者 (viewer) - 只有查看权限 - 可以查看用户、无人机、任务、航线、模型、日志和告警信息 ## 安全注意事项 1. 生产环境中,请修改默认的超级管理员账户和密码 2. 配置适当的CORS策略,限制允许的源 3. 考虑使用HTTPS协议保护通信安全 4. 定期备份数据库 5. 避免将敏感信息硬编码在代码中 ## 开发指南 ### 代码风格 - 遵循PEP 8规范 - 使用类型提示 - 为函数和类添加文档字符串 ### 数据库迁移 如果需要修改数据库模型,可以使用Alembic进行数据库迁移: ```bash # 初始化迁移环境(首次使用) alembic init alembic # 创建迁移脚本 alembic revision --autogenerate -m "描述信息" # 应用迁移 alembic upgrade head ``` ### 测试 项目支持使用pytest进行单元测试和集成测试: ```bash pip install pytest pytest-asyncio pytest ``` ## 部署建议 ### 生产环境部署 1. 使用Gunicorn作为WSGI服务器,配合Uvicorn工作进程 2. 使用Nginx作为反向代理 3. 配置SSL证书启用HTTPS 4. 使用PostgreSQL或MySQL替代SQLite 5. 配置适当的日志级别和监控 6. 使用Docker容器化部署 ### Docker部署示例 ```dockerfile FROM python:3.10-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"] ``` ## 常见问题 ### 1. 如何修改默认数据库? 编辑`.env`文件,设置`SQLALCHEMY_DATABASE_URI`环境变量指向你的数据库: ``` SQLALCHEMY_DATABASE_URI="postgresql://username:password@localhost/dbname" ``` ### 2. 如何创建新的API端点? 1. 在`app/routers/`目录下创建新的路由文件 2. 在`app/services/`目录下实现业务逻辑 3. 在`app/schemas/`目录下定义请求和响应模型 4. 在`app/main.py`中注册新的路由 ### 3. 如何添加新的模型? 1. 在`app/models/`目录下创建新的模型文件 2. 在`app/db/init_db.py`中导入新模型,确保数据库初始化时创建表 3. 为新模型创建相应的CRUD操作和API端点 ## 许可证 [MIT License](LICENSE) ## 联系方式 如有问题或建议,请联系项目维护团队。