27f76918b2
本 PR 汇合三块运营后台改动(原 #50 仅含其中「加固」一块,已并入本 PR 并关闭)。 ## 1. review 加固 (436b2a3) - 超管防自锁:降级/禁用最后一个 active super_admin 前校验,杜绝零超管死局 - 时间筛选统一 tz-aware(列为 timestamptz),比较绝对时刻、不依赖 DB 会话时区 - 上报审核 / 调余额(set·扣减)加行锁,防并发/连点重复发钱 - ad_audit 复算排序补 id 次级键;health-check 限 finance;调账/拒绝 reason 去空白校验 ## 2. 反馈改版 (5a18dbb) - contact 可选、截图≤6;admin 反馈列表筛选/排序;admin·wallet 接口调整 + docs ## 3. 列表页码分页 (1a7a624) - CursorPage 加 total;新增 offset_paginate(count 与分页同源) - 上报/审计日志从 id 游标改 offset 分页(支持跳页) - 用户 / 提现 / 上报 / 审计日志 四页接入页码分页 测试:admin 套件 47 passed。前端配套改动见 shaguabijia-admin-web。 --------- Co-authored-by: OuYingJun1024 <1034284404@qq.com> Reviewed-on: #51 Co-authored-by: ouzhou <ouzhou@wonderable.ai> Co-committed-by: ouzhou <ouzhou@wonderable.ai>
37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
"""admin 操作审计日志查询(所有 admin 可看:谁在何时对什么做了什么)。"""
|
|
from __future__ import annotations
|
|
|
|
from typing import Annotated
|
|
|
|
from fastapi import APIRouter, Depends, Query
|
|
|
|
from app.admin.deps import AdminDb, get_current_admin
|
|
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(get_current_admin)],
|
|
)
|
|
|
|
|
|
@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,
|
|
)
|