fda82fe313
## 变更 - 权限目录新增一级分组“监控审计”,统一设备存活、埋点成功率、埋点日志和审计日志。 - 补齐 `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>
37 lines
1.9 KiB
Markdown
37 lines
1.9 KiB
Markdown
# GET /admin/api/audit-logs — 审计日志(谁改了什么,游标分页)
|
||
|
||
> 所属:Admin·Audit 组(前缀 `/admin/api/audit-logs`) | 鉴权:Bearer admin_token + `audit-logs` 页面权限 | [← 返回 API 索引](../README.md)
|
||
|
||
## 入参(query)
|
||
| 字段 | 类型 | 必填 | 默认 | 说明 |
|
||
|---|---|---|---|---|
|
||
| `action` | string | ❌ | null | 按操作类型过滤,如 `admin.create` / `admin.update` |
|
||
| `target_type` | string | ❌ | null | 按目标对象类型过滤,如 `admin` |
|
||
| `admin_id` | int | ❌ | null | 按操作人(管理员 id)过滤 |
|
||
| `limit` | int | ❌ | 50 | 1–100 |
|
||
| `cursor` | int | ❌ | null | 上一页末条 `id`,首页不传 |
|
||
|
||
## 出参
|
||
响应 `200`:`{ items: AdminAuditLogOut[], next_cursor: int|null }`(按 `id` 倒序;分页见 [索引#游标分页约定](./README.md#游标分页约定))
|
||
|
||
**AdminAuditLogOut**
|
||
| 字段 | 类型 | 说明 |
|
||
|---|---|---|
|
||
| `id` | int | 审计 id(也是游标) |
|
||
| `admin_id` | int | 操作人管理员 id |
|
||
| `admin_username` | string | 操作人账号(写入时快照) |
|
||
| `action` | string | 操作类型,如 `admin.create` / `admin.update` |
|
||
| `target_type` | string | 目标对象类型,如 `admin` |
|
||
| `target_id` | string \| null | 目标对象 id(字符串) |
|
||
| `detail` | object \| null | 操作详情(JSON,如变更字段) |
|
||
| `ip` | string \| null | 操作来源 IP(取 XFF 首段或直连 IP,仅记录不鉴权) |
|
||
| `created_at` | datetime | 操作时间(UTC) |
|
||
|
||
## 错误码
|
||
- `401` 未带 admin token / token 无效或过期 / 管理员被禁用
|
||
- `403` 当前管理员没有 `audit-logs` 页面权限
|
||
|
||
## 说明
|
||
- 整组(`/admin/api/audit-logs`)守卫为 `require_page("audit-logs")`,默认仅超级管理员和技术角色可查看,也可由超管给自定义角色授权。
|
||
- 审计日志只增不改不删,任何写操作经 `write_audit` 落一条。数据表见 [admin_audit_log](../database/admin_audit_log.md)。
|