# 无人机资产管理系统 BS 架构的无人机资产管理库:管理无人机基本信息(机型、编号、链路ID、飞控ID、备注), 记录每次主状态变更(待组装 / 待调试 / 待飞 / 损坏),可按机型查看"日期 × 飞机编号"的状态透视表, 也可查看每一架无人机的完整状态变更历史。 ## 功能 - **无人机管理**:新增、编辑、删除无人机;机型筛选;编号唯一 - **主状态管理**:修改状态时写入一条含时间戳的记录(每次修改均保留) - **自定义状态**:内置"待组装/待调试/待飞/损坏",可新增自定义状态并设置/修改颜色、改名;内置与已被使用的状态不可删除(改名会同步更新历史记录) - **状态历史**:每一架无人机的时间线,展示每条变更记录(时间戳 + 状态 + 备注),**单条记录可删除** - **飞行历史**:每架无人机的飞行记录(日期、时长、起降地点、备注),支持增/删/改;支持**统一添加**——一次勾选多架飞机编号批量添加,对应飞机自动同步 - **飞行透视表**:行=日期、列=编号,单元格=当日飞行次数,支持机型与日期范围筛选 - **按机型透视表**:行 = 日期、列 = 飞机编号、单元格 = 当日状态;无变更日期自动沿用前一状态;支持自定义日期范围(默认近 30 天) - **状态颜色区分**:待组装=灰、待调试=橙、待飞=绿、损坏=红 - **手动导出 Excel**:点击「导出 Excel」按钮,下载 `无人机台账.xlsx`(含"无人机台账"与"状态历史"两个工作表),数据以点击时刻为准 ## 技术栈 - 后端:Python + FastAPI + Uvicorn - 数据库:SQLite(单文件 `uav.db`,无需安装数据库服务) - 前端:原生 HTML / CSS / JavaScript(无构建工具、无第三方依赖) - Excel 导出:openpyxl ## 部署(其他电脑) 1. **安装 Python**(3.9+):,安装时勾选 *Add python.exe to PATH* 2. 把本项目整个文件夹拷贝到目标电脑(含 `main.py`、`static/`、`start.bat`) 3. 双击 `start.bat` —— 首次运行会自动安装 fastapi、uvicorn 并启动服务 4. 浏览器自动打开 即可使用 > 局域网共享:同一网段内其他电脑浏览器访问 `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}` | 状态改名/改色(改名同步历史)/ 删除(内置与已使用状态不可删) | 交互式接口文档:启动服务后访问 ## 目录结构 ``` UAVManager/ ├── main.py # FastAPI 后端(应用 + 数据库 + API) ├── start.bat # Windows 一键启动脚本 ├── README.md ├── uav.db # SQLite 数据库(运行时自动创建) └── static/ # 前端页面 ├── index.html ├── style.css └── app.js ```