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.3 KiB
Python
37 lines
1.3 KiB
Python
"""admin 操作审计日志查询(需要 audit-logs 页面权限)。"""
|
|
from __future__ import annotations
|
|
|
|
from typing import Annotated
|
|
|
|
from fastapi import APIRouter, Depends, Query
|
|
|
|
from app.admin.deps import AdminDb, require_page
|
|
from app.admin.repositories import audit_log as audit_repo
|
|
from app.admin.schemas.admin import AdminAuditLogOut
|
|
from app.admin.schemas.common import CursorPage
|
|
|
|
router = APIRouter(
|
|
prefix="/admin/api/audit-logs",
|
|
tags=["admin-audit"],
|
|
dependencies=[Depends(require_page("audit-logs"))],
|
|
)
|
|
|
|
|
|
@router.get("", response_model=CursorPage[AdminAuditLogOut], summary="审计日志(谁改了什么)")
|
|
def list_audit_logs(
|
|
db: AdminDb,
|
|
action: Annotated[str | None, Query()] = None,
|
|
target_type: Annotated[str | None, Query()] = None,
|
|
admin_id: Annotated[int | None, Query()] = None,
|
|
limit: Annotated[int, Query(ge=1, le=100)] = 50,
|
|
cursor: Annotated[int | None, Query()] = None,
|
|
) -> CursorPage[AdminAuditLogOut]:
|
|
items, next_cursor, total = audit_repo.list_audit_logs(
|
|
db, action=action, target_type=target_type, admin_id=admin_id, limit=limit, cursor=cursor,
|
|
)
|
|
return CursorPage(
|
|
items=[AdminAuditLogOut.model_validate(x) for x in items],
|
|
next_cursor=next_cursor,
|
|
total=total,
|
|
)
|