docs: 文档同步(README/API/架构/部署)
This commit is contained in:
+11
-1
@@ -185,7 +185,7 @@ SQLAlchemy 模型,存于 `data/users.db`:
|
||||
|
||||
| 模型 | 表名 | 说明 |
|
||||
|------|------|------|
|
||||
| `User` | user | 后台用户(Flask-Login 认证,SHA256 密码) |
|
||||
| `User` | user | 后台用户(Flask-Login 认证,SHA256 密码;`is_admin` 管理员 + `perms` 业务权限位) |
|
||||
| `DeviceGroup` | device_group | 设备分组(serials 存 JSON) |
|
||||
| `TaskJob` | task_job | 任务计划(target/params/schedule/retry 存 JSON) |
|
||||
| `CustomAction` | custom_action | 自定义动作(步骤打包,steps 存 JSON) |
|
||||
@@ -195,6 +195,16 @@ SQLAlchemy 模型,存于 `data/users.db`:
|
||||
- 创建所有表
|
||||
- 首次启动创建默认管理员 `admin/admin123`
|
||||
- 自动迁移旧 `groups.json` / `jobs.json` 到 SQLite(迁移后归档为 `.migrated`)
|
||||
- 版本化 schema 迁移(`SCHEMA_MIGRATIONS`):结构变更必须追加迁移条目,`create_all` 只建新表不加列
|
||||
|
||||
### 权限模型
|
||||
|
||||
- `User.perms` 存业务权限位 JSON 数组(`tasks`/`devices`/`apks`/`logs`),`is_admin=true` 拥有全部权限(`has_perm` 短路)
|
||||
- 后端统一用 `@perm_required(PERM_X)` / `@admin_required` 装饰器拦截(web_server.py),无权限返回 403;
|
||||
查看类 GET 接口只要求登录;用户管理、维护接口(STF 重启 `/api/stf/restart`、adb 终端 `/api/adb/cmd`)强制 `admin_required`
|
||||
- adb 终端安全红线:拒绝 `kill-server` / `disconnect`(STF provider 共享 adb transport,断开会误判全设备离线)
|
||||
- 前端 `loadMe()` 拉取 `/api/me`,用 `data-perm` 属性隐藏无权限的 tab/按钮,行内按钮用 `_can(perm)` 判断
|
||||
- 安全兜底:**前端隐藏只是 UX,权限强制在后端**;新增路由时按"写操作必须带权限装饰器"的约定
|
||||
|
||||
### 3.7 APK 管理(`core/apk_manager.py`)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user