linkeyu
fda82fe313
后台:新增监控审计权限分组并加强接口鉴权 (#159)
## 变更
- 权限目录新增一级分组“监控审计”,统一设备存活、埋点成功率、埋点日志和审计日志。
- 补齐 `analytics-health` 页面权限,技术角色默认拥有四项监控审计权限;运营默认仅保留设备存活。
- 新增服务端 `require_page` 守卫,四组 API 不再只依赖前端隐藏导航,直接调用也会校验角色或个人页面权限。
- 增加迁移,为存量技术角色补上 `analytics-health` 权限,并同步接口文档。
## 验证
- 改动文件 `ruff check` 通过。
- `tests/test_admin_roles.py tests/test_analytics_health.py`: 24 passed。
- Alembic 从空库 upgrade 到 head,再 downgrade 本迁移:通过。
- 全量测试:443 passed、6 failed;6 项失败在干净 `origin/main` 上原样复现(主干为 442 passed、6 failed),与本 PR 无关。
---------
Co-authored-by: unknown <798648091@qq.com>
Reviewed-on: #159
Co-authored-by: linkeyu <linkeyu@wonderable.ai>
Co-committed-by: linkeyu <linkeyu@wonderable.ai>
2026-07-22 17:22:09 +08:00
..
2026-05-23 17:37:18 +08:00
2026-06-08 05:54:55 +08:00
2026-07-22 15:42:25 +08:00
2026-06-23 17:58:30 +08:00
2026-06-27 03:06:53 +08:00
2026-06-02 09:53:25 +08:00
2026-06-10 22:49:33 +08:00
2026-06-08 00:16:25 +08:00
2026-07-09 17:31:24 +08:00
2026-07-18 19:11:45 +08:00
2026-07-01 20:21:34 +08:00
2026-06-26 23:33:31 +08:00
2026-06-06 00:42:39 +08:00
2026-06-16 01:39:05 +08:00
2026-06-10 02:28:56 +08:00
2026-06-01 22:23:15 +08:00
2026-07-11 13:47:12 +08:00
2026-06-09 01:56:47 +08:00
2026-06-23 17:33:38 +08:00
2026-06-29 09:54:13 +08:00
2026-06-15 23:13:14 +08:00
2026-07-22 10:53:21 +08:00
2026-05-27 21:04:03 +08:00
2026-06-21 00:16:40 +08:00
2026-07-05 09:46:19 +08:00
2026-06-04 03:02:41 +08:00
2026-07-09 01:09:03 +08:00
2026-07-05 09:46:19 +08:00
2026-07-21 13:52:40 +08:00
2026-06-06 04:13:08 +08:00
2026-06-17 10:00:29 +08:00
2026-06-06 00:42:39 +08:00
2026-06-24 20:50:21 +08:00
2026-06-26 23:56:29 +08:00
2026-05-27 21:04:03 +08:00
2026-06-21 00:16:40 +08:00
2026-06-07 23:17:27 +08:00
2026-06-09 01:56:47 +08:00
2026-06-13 03:53:43 +08:00
2026-06-17 22:33:33 +08:00
2026-07-13 17:46:11 +08:00
2026-06-01 22:23:15 +08:00
2026-07-05 09:46:19 +08:00
2026-06-01 22:23:15 +08:00
2026-06-01 22:23:15 +08:00
2026-07-04 02:39:12 +08:00
2026-06-10 22:26:51 +08:00
2026-06-23 17:24:54 +08:00
2026-07-22 17:18:26 +08:00
2026-07-09 17:31:48 +08:00
2026-06-10 16:07:33 +08:00
2026-06-14 23:41:54 +08:00
2026-06-30 22:59:36 +08:00
2026-07-09 17:31:48 +08:00
2026-06-30 22:59:36 +08:00
2026-06-30 22:59:36 +08:00
2026-06-08 03:20:51 +08:00
2026-06-17 21:32:10 +08:00
2026-06-17 10:00:29 +08:00
2026-06-17 10:00:29 +08:00
2026-06-25 17:47:30 +08:00
2026-06-19 11:44:11 +08:00
2026-06-10 22:26:51 +08:00
2026-06-15 23:13:14 +08:00
2026-06-26 15:28:16 +08:00
2026-06-23 17:33:38 +08:00
2026-06-23 17:33:38 +08:00
2026-07-22 15:42:25 +08:00
2026-07-22 10:53:21 +08:00
2026-06-12 00:51:47 +08:00
2026-06-06 04:13:08 +08:00
2026-05-29 15:20:22 +08:00
2026-06-10 15:43:54 +08:00
2026-05-30 18:13:11 +08:00
2026-06-22 23:18:42 +08:00
2026-06-29 23:11:30 +08:00
2026-05-28 22:27:36 +08:00
2026-07-02 19:50:14 +08:00
2026-05-27 21:04:03 +08:00
2026-06-27 02:58:29 +08:00
2026-06-08 04:57:55 +08:00
2026-06-09 21:48:48 +08:00
2026-06-30 21:56:58 +08:00
2026-06-20 13:39:45 +08:00
2026-06-07 23:17:27 +08:00
2026-06-07 23:17:27 +08:00
2026-06-23 21:09:10 +08:00
2026-06-08 00:16:25 +08:00
2026-07-18 19:11:45 +08:00
2026-06-09 18:10:58 +08:00
2026-07-09 17:31:48 +08:00
2026-07-10 19:23:12 +08:00
2026-07-22 10:53:21 +08:00
2026-07-22 17:22:09 +08:00
2026-07-22 15:42:25 +08:00
2026-06-10 18:32:51 +08:00
2026-06-07 23:17:27 +08:00
2026-07-17 21:49:10 +08:00
2026-06-07 23:17:27 +08:00
2026-06-07 23:17:27 +08:00
2026-06-07 23:17:27 +08:00
2026-06-07 03:31:35 +08:00
2026-05-27 21:04:03 +08:00
2026-06-01 21:29:52 +08:00
2026-05-27 21:04:03 +08:00
2026-06-14 01:24:29 +08:00
2026-06-16 01:25:57 +08:00
2026-06-14 01:24:29 +08:00
2026-06-14 01:24:29 +08:00
2026-06-15 18:07:32 +08:00
2026-05-27 21:04:03 +08:00
2026-06-10 22:27:06 +08:00
2026-05-27 21:04:03 +08:00
2026-06-06 18:52:42 +08:00
2026-05-27 21:04:03 +08:00
2026-05-27 21:04:03 +08:00
2026-06-06 04:51:50 +08:00
2026-06-09 01:56:37 +08:00