feat(admin): 运营后台跟进——review 加固 + 反馈改版 + 列表页码分页 (#51)
本 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>
This commit was merged in pull request #51.
This commit is contained in:
+4
-3
@@ -125,7 +125,7 @@ def test_long_password_does_not_crash(admin_client: TestClient) -> None:
|
||||
|
||||
|
||||
def test_audit_log_pagination_no_gap() -> None:
|
||||
"""审计游标分页跨页不丢/不重(回归 next_cursor off-by-one)。"""
|
||||
"""审计分页跨页不丢/不重(offset 分页:cursor 即 offset,翻完覆盖全部)。"""
|
||||
from app.admin.repositories import admin_user as admin_repo
|
||||
from app.admin.repositories import audit_log as audit_repo
|
||||
|
||||
@@ -142,12 +142,13 @@ def test_audit_log_pagination_no_gap() -> None:
|
||||
)
|
||||
created_ids.append(log.id)
|
||||
|
||||
# limit=2 翻 5 条,收集所有 id,应正好覆盖创建的 5 条(无丢无重)
|
||||
# limit=2 翻 5 条,收集所有 id,应正好覆盖创建的 5 条(无丢无重);total 恒为符合条件总数
|
||||
seen: list[int] = []
|
||||
cursor = None
|
||||
for _ in range(10): # 上限防死循环
|
||||
rows, cursor = audit_repo.list_audit_logs(db, action=action, limit=2, cursor=cursor)
|
||||
rows, cursor, total = audit_repo.list_audit_logs(db, action=action, limit=2, cursor=cursor)
|
||||
seen.extend(r.id for r in rows)
|
||||
assert total == len(created_ids), f"total 应为 {len(created_ids)},得 {total}"
|
||||
if cursor is None:
|
||||
break
|
||||
assert sorted(seen) == sorted(created_ids), f"分页丢/重: want={created_ids} got={seen}"
|
||||
|
||||
Reference in New Issue
Block a user