Files
UAVManager/README.md
T

79 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 无人机资产管理系统
BS 架构的无人机资产管理库:管理无人机基本信息(机型、编号、链路ID、飞控ID、备注),
记录每次主状态变更(待组装 / 待调试 / 待飞 / 损坏),可按机型查看"日期 × 飞机编号"的状态透视表,
也可查看每一架无人机的完整状态变更历史。
## 功能
- **无人机管理**:新增、编辑、删除无人机;机型筛选;编号唯一
- **主状态管理**:修改状态时写入一条含时间戳的记录(每次修改均保留)
- **自定义状态**:内置"待组装/待调试/待飞/损坏",可新增自定义状态并设置/修改颜色、改名;内置与已被使用的状态不可删除(改名会同步更新历史记录)
- **状态历史**:每一架无人机的时间线,展示每条变更记录(时间戳 + 状态 + 备注),**单条记录可删除**
- **飞行历史**:每架无人机的飞行记录(日期、时长、起降地点、备注),支持增/删/改;支持**统一添加**——一次勾选多架飞机编号批量添加,对应飞机自动同步
- **飞行透视表**:行=日期、列=编号,单元格=当日飞行次数,支持机型与日期范围筛选
- **按机型透视表**:行 = 日期、列 = 飞机编号、单元格 = 当日状态;无变更日期自动沿用前一状态;支持自定义日期范围(默认近 30 天)
- **状态颜色区分**:待组装=灰、待调试=橙、待飞=绿、损坏=红
- **手动导出 Excel**:点击「导出 Excel」按钮,下载 `无人机台账.xlsx`;不含日期时导出「无人机台账(含每架飞行次数)+ 状态历史 + 飞行历史」,选择日期时导出「每日状态矩阵 + 状态变更明细 + 无人机台账 + 飞行历史」;飞行历史 sheet 行=飞机编号、首列=飞行次数总计、后列=每日飞行记录;数据以点击时刻为准
## 技术栈
- 后端:Python + FastAPI + Uvicorn
- 数据库:SQLite(单文件 `uav.db`,无需安装数据库服务)
- 前端:原生 HTML / CSS / JavaScript(无构建工具、无第三方依赖)
- Excel 导出:openpyxl
## 部署(其他电脑)
1. **安装 Python**(3.9+):<https://www.python.org/downloads/>,安装时勾选 *Add python.exe to PATH*
2. 把本项目整个文件夹拷贝到目标电脑(含 `main.py`、`static/`、`start.bat`)
3. 双击 `start.bat` —— 首次运行会自动安装 fastapi、uvicorn 并启动服务
4. 浏览器自动打开 <http://127.0.0.1:8000> 即可使用
> 局域网共享:同一网段内其他电脑浏览器访问 `http://本机IP:8000`(服务已监听 0.0.0.0)。
> 数据文件 `uav.db` 与程序同目录,备份/迁移时直接拷贝该文件即可。
## 手动启动
```bash
pip install fastapi uvicorn openpyxl
python -m uvicorn main:app --host 0.0.0.0 --port 8000
```
## REST API
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | `/api/drones?model=` | 无人机列表(含当前状态,可按机型筛选) |
| POST | `/api/drones` | 新增无人机(机型、编号必填,编号唯一) |
| PUT | `/api/drones/{id}` | 编辑无人机(机型/链路ID/飞控ID/备注) |
| DELETE | `/api/drones/{id}` | 删除无人机(级联删除其状态记录) |
| GET | `/api/drones/models` | 全部机型列表 |
| POST | `/api/drones/{id}/status` | 修改主状态,写入一条含时间戳的记录 |
| GET | `/api/drones/{id}/history` | 单机完整状态变更记录 |
| DELETE | `/api/drones/{id}/history/{record_id}` | 删除单条状态历史记录 |
| GET/POST | `/api/drones/{id}/flights` | 单机飞行历史列表 / 新增飞行记录 |
| PUT/DELETE | `/api/drones/{id}/flights/{flight_id}` | 修改 / 删除飞行记录 |
| POST | `/api/flights/batch` | 统一添加飞行历史(多个编号批量同步) |
| GET | `/api/flight-matrix?model=&start=&end=` | 飞行透视表(当日飞行次数) |
| GET | `/api/status-matrix?model=&start=&end=` | 按机型返回日期×编号状态矩阵 |
| GET | `/api/export-excel` | 手动导出 `无人机台账.xlsx`(台账 + 状态历史两个 sheet) |
| GET/POST | `/api/status-types` | 状态列表 / 新增自定义状态(name 必填,color 可选自动配色) |
| PUT/DELETE | `/api/status-types/{name}` | 状态改名/改色(改名同步历史)/ 删除(内置与已使用状态不可删) |
交互式接口文档:启动服务后访问 <http://127.0.0.1:8000/docs>
## 目录结构
```
UAVManager/
├── main.py # FastAPI 后端(应用 + 数据库 + API)
├── start.bat # Windows 一键启动脚本
├── README.md
├── uav.db # SQLite 数据库(运行时自动创建)
└── static/ # 前端页面
├── index.html
├── style.css
└── app.js
```