feat: 优化发布清单和安装结构自动识别
This commit is contained in:
+15
-11
@@ -24,7 +24,7 @@
|
||||
|
||||
- 目前不是把某个 GitHub 后端模板整套照搬进项目,而是采用 FastAPI 作为成熟后端框架,并按成熟 FastAPI 后台项目的常见结构做工程化拆分。
|
||||
- 管理后台前端已经基于 pure-admin-thin 这类成熟后台模板改造。
|
||||
- 管理员鉴权当前仍是项目自有令牌机制,尚未整套接入 FastAPI Users/JWT/RBAC。后续生产化安全加固时,可以继续引入成熟认证权限组件。
|
||||
- 管理员鉴权已经从单一 `ADMIN_TOKEN` 升级为用户名/密码登录、Argon2 密码哈希、JWT access/refresh token、RBAC 权限检查和管理员用户管理页面。`ADMIN_TOKEN` 仍作为旧脚本兼容令牌和崩溃报告管理兜底令牌保留。
|
||||
|
||||
## 当前已落地
|
||||
|
||||
@@ -35,6 +35,7 @@ app/
|
||||
api/
|
||||
router.py
|
||||
routes/
|
||||
admin_auth.py
|
||||
admin_license.py
|
||||
admin_policy.py
|
||||
admin_version.py
|
||||
@@ -53,6 +54,7 @@ app/
|
||||
audit.py
|
||||
db/
|
||||
repositories/
|
||||
admin_user_repository.py
|
||||
app_channel_repository.py
|
||||
crash_report_repository.py
|
||||
device_repository.py
|
||||
@@ -63,6 +65,7 @@ app/
|
||||
client_update_repository.py
|
||||
publish_repository.py
|
||||
schemas/
|
||||
admin_auth.py
|
||||
license.py
|
||||
policy.py
|
||||
version.py
|
||||
@@ -84,7 +87,7 @@ app/
|
||||
当前已经从 `main.py` 抽出的通用能力:
|
||||
|
||||
- `app/core/config.py`:统一读取 `.env`、路径配置和基础 settings。
|
||||
- `app/core/security.py`:后台令牌校验、令牌摘要、`.env` 写入工具。
|
||||
- `app/core/security.py`:管理员 JWT、Argon2 密码哈希、RBAC 权限检查、兼容令牌、令牌摘要、`.env` 写入工具。
|
||||
- `app/core/audit.py`:管理后台写操作审计中间件。
|
||||
- `app/api/routes/frontend.py`:管理后台静态页面、favicon、platform-config、health 路由。
|
||||
- `app/api/routes/admin_license.py`:License 创建、列表、禁用/启用、软删除接口。
|
||||
@@ -94,7 +97,8 @@ app/
|
||||
- `app/api/routes/admin_logs.py`:升级日志、下载日志、管理员审计日志的列表、删除和清空接口。
|
||||
- `app/api/routes/admin_crash_report.py`:崩溃报告管理列表和附件下载接口。
|
||||
- `app/api/routes/admin_device.py`:设备列表和设备禁用/恢复接口。
|
||||
- `app/api/routes/admin_config.py`:管理员令牌校验/变更、运行时配置、客户端配置生成接口。
|
||||
- `app/api/routes/admin_auth.py`:用户名密码登录、JWT 刷新、登录检查、修改密码、管理员用户列表、创建、角色编辑、禁用/启用和重置密码接口。
|
||||
- `app/api/routes/admin_config.py`:运行时配置、客户端配置生成接口,以及旧兼容令牌变更接口。
|
||||
- `app/api/routes/admin_publish.py`:管理端发布新版本接口,包含发布锁和管理员鉴权。
|
||||
- `app/api/routes/client_update.py`:客户端设备登记、更新检测、下载链接、Manifest、下载日志和升级结果上报接口。
|
||||
- `app/api/routes/crash_api.py`:崩溃报告健康检查、报告上传/下载和符号包上传接口。
|
||||
@@ -116,14 +120,14 @@ app/
|
||||
|
||||
后续不建议一次性重写全部后端,而是按下面顺序迁移:
|
||||
|
||||
1. 接入成熟用户认证模块,例如 FastAPI Users。
|
||||
2. 将 `ADMIN_TOKEN` 替换成管理员用户名/密码登录、JWT、refresh token。
|
||||
3. 增加用户、角色、权限、菜单权限、API 权限表。
|
||||
4. 管理后台常用业务接口、客户端更新接口、版本发布接口、崩溃报告接口已经按领域拆到 `app/api/routes/`,并将 SQL 下沉到 `app/repositories/`。
|
||||
5. 继续将请求/响应 `dict` 改成 `app/schemas/` 下的 Pydantic 模型。
|
||||
6. 继续补齐请求/响应模型、权限模型、异常模型,让接口契约更清晰。
|
||||
7. 继续细化 repository,后续可把 SQLite SQL 逐步迁到 ORM 或统一查询层。
|
||||
8. 引入 ORM 和迁移工具,例如 SQLModel/SQLAlchemy + Alembic。
|
||||
1. 继续接入更完整的成熟用户认证模块,例如 FastAPI Users,替换当前轻量用户表。
|
||||
2. 将现有权限点继续细化,例如 `version:publish`、`license:create`、`audit:read`。
|
||||
3. 管理后台常用业务接口、客户端更新接口、版本发布接口、崩溃报告接口已经按领域拆到 `app/api/routes/`,并将 SQL 下沉到 `app/repositories/`。
|
||||
4. 继续将请求/响应 `dict` 改成 `app/schemas/` 下的 Pydantic 模型。
|
||||
5. 继续补齐请求/响应模型、权限模型、异常模型,让接口契约更清晰。
|
||||
6. 继续细化 repository,后续可把 SQLite SQL 逐步迁到 ORM 或统一查询层。
|
||||
7. 引入 ORM 和迁移工具,例如 SQLModel/SQLAlchemy + Alembic。
|
||||
8. 增加登录失败审计、登录限流、会话管理和更细粒度 Token 轮换。
|
||||
9. 保持客户端接口 `/api/v1/...` 尽量兼容,避免客户端 SDK 重编。
|
||||
|
||||
## 为什么不是直接删除 main.py
|
||||
|
||||
Reference in New Issue
Block a user