1a7a624b87
用户/提现/上报/审计日志四个主列表页从「加载更多」改为页码分页: - CursorPage 加 total 字段(可选,不影响其它接口) - queries 新增 offset_paginate(items, next_cursor, total);count 与分页同源, 筛选条件一处构建避免漂移;list_users/withdraw/price_reports 接入返回 total - price_reports / audit_logs 从 id 游标改 offset 分页(cursor 即 offset),支持跳页 - 四个 router 透出 total;withdraw 详情内部调用同步解包 - 反馈页本轮排除(其 router/model 正在 feat/feedback-iteration 迭代,避免纠缠) 测试: test_audit_log_pagination 改为校验 offset+total;admin 套件 47 passed。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
25 lines
671 B
Python
25 lines
671 B
Python
"""通用 schema:游标分页响应 + 通用 ok 响应。"""
|
|
from __future__ import annotations
|
|
|
|
from typing import Generic, TypeVar
|
|
|
|
from pydantic import BaseModel
|
|
|
|
T = TypeVar("T")
|
|
|
|
|
|
class CursorPage(BaseModel, Generic[T]):
|
|
"""分页响应:items + 下一页游标(next_cursor=None 表示末页)+ 可选 total。
|
|
|
|
next_cursor:offset 分页时即下一页 offset,「加载更多」用;末页为 None。
|
|
total:符合筛选条件的总条数,页码分页(antd pagination)用;不需要总数的接口可不传(None)。
|
|
"""
|
|
|
|
items: list[T]
|
|
next_cursor: int | None = None
|
|
total: int | None = None
|
|
|
|
|
|
class OkResponse(BaseModel):
|
|
ok: bool = True
|