feat: 完善服务端工程化、发布流程和自动化测试

This commit is contained in:
2026-07-16 08:36:12 +00:00
parent 0b71e8d024
commit 5d7aa560e5
29 changed files with 822 additions and 7987 deletions
+28
View File
@@ -12,7 +12,9 @@
- 运行服务:Uvicorn。
- 请求模型和参数校验:FastAPI 自带的 Pydantic 体系。
- 管理后台前端:GitHub 上的 pure-admin-thin / vue-pure-admin 生态,技术栈是 Vue3、Element Plus、TypeScript、Vite。
- 前端包管理:统一使用 npm 和 package-lock.json,不再维护 pnpm-lock.yaml。
- 对象存储:MinIO。
- 自动化测试:pytest。测试用例会在临时目录里创建隔离数据库、临时 Manifest 私钥、临时上传目录和崩溃报告目录。
后端工程化参考方向:
@@ -113,9 +115,35 @@ app/
- `app/repositories/`:管理后台已迁移接口的数据库读写层,route 不再直接拼 SQL 或打开数据库连接。
- `app/api/router.py`:统一注册基础路由。
- `main.py`:已经压缩为服务入口,只保留生命周期、MinIO 初始化、静态挂载和全局客户端鉴权。
- `tests/`:自动化测试入口,覆盖管理员登录/JWT、License/设备登记、更新检查、版本发布、崩溃报告上传幂等和管理员查询。
当前业务接口路径保持不变,避免影响 Launcher、Updater 和已部署管理页面。
## 自动化测试
第一次运行测试前安装开发依赖:
```bash
cd update-server
./venv/bin/pip install -r requirements-dev.txt
```
运行测试:
```bash
./venv/bin/python3 -m pytest -q
```
当前测试不连接真实 MinIO,也不使用真实 `mini.db`。测试夹具会自动创建临时数据库和临时目录,并生成临时 RSA 私钥,因此适合在提交前快速回归。
当前覆盖范围:
- 管理员默认账号初始化、用户名密码登录、JWT 签发。
- 应用创建、License 创建、设备登记和设备数占用。
- 客户端更新检查和版本策略响应。
- 版本发布事务、文件 hash 入库、MinIO 不可用时本地存储回退。
- 崩溃报告上传、同一 `clientReportId` 幂等重复上传、管理员查询。
## 后续迁移路线
后续不建议一次性重写全部后端,而是按下面顺序迁移: