fix(api): 客户/群列表排序改为friend_id/room_id ASC(对齐云客API自然顺序)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -71,7 +71,6 @@ async def list_customers(
|
|||||||
list_stmt = list_stmt.where(*conditions)
|
list_stmt = list_stmt.where(*conditions)
|
||||||
list_stmt = (
|
list_stmt = (
|
||||||
list_stmt.order_by(
|
list_stmt.order_by(
|
||||||
sa.nullslast(Customer.last_chat_time.desc()),
|
|
||||||
Customer.friend_id.asc(),
|
Customer.friend_id.asc(),
|
||||||
)
|
)
|
||||||
.limit(page_size)
|
.limit(page_size)
|
||||||
|
|||||||
@@ -61,7 +61,6 @@ async def list_groups(
|
|||||||
list_stmt = list_stmt.where(*conditions)
|
list_stmt = list_stmt.where(*conditions)
|
||||||
list_stmt = (
|
list_stmt = (
|
||||||
list_stmt.order_by(
|
list_stmt.order_by(
|
||||||
sa.nullslast(ChatGroup.last_chat_time.desc()),
|
|
||||||
ChatGroup.room_id.asc(),
|
ChatGroup.room_id.asc(),
|
||||||
)
|
)
|
||||||
.limit(page_size)
|
.limit(page_size)
|
||||||
|
|||||||
@@ -205,19 +205,17 @@ async def test_pagination_page_size_one(client: AsyncClient):
|
|||||||
assert len(body["items"]) == 1
|
assert len(body["items"]) == 1
|
||||||
|
|
||||||
|
|
||||||
async def test_order_is_last_chat_time_desc_nulls_last(client: AsyncClient):
|
async def test_order_is_friend_id_asc(client: AsyncClient):
|
||||||
"""Order: ``last_chat_time desc`` (nulls last), then ``friend_id``.
|
"""Order: ``friend_id ASC`` (natural API/云客 order).
|
||||||
|
|
||||||
Seeded rows have last_chat_time 2000 / 1000 / None -> expected order
|
Seeded IDs wa_c < wx_a < wx_b → expected order ``[wa_c, wx_a, wx_b]``.
|
||||||
``[wx_a, wx_b, wa_c]`` (the whatsapp row with NULL last_chat_time lands
|
|
||||||
last even though it has no timestamp).
|
|
||||||
"""
|
"""
|
||||||
r = await client.get(
|
r = await client.get(
|
||||||
"/api/customers", params={"page": 1, "page_size": 20}
|
"/api/customers", params={"page": 1, "page_size": 20}
|
||||||
)
|
)
|
||||||
assert r.status_code == 200
|
assert r.status_code == 200
|
||||||
ids = [it["friend_id"] for it in r.json()["items"]]
|
ids = [it["friend_id"] for it in r.json()["items"]]
|
||||||
assert ids == ["wx_a", "wx_b", "wa_c"]
|
assert ids == ["wa_c", "wx_a", "wx_b"]
|
||||||
|
|
||||||
|
|
||||||
async def test_filter_by_owner_account_id(client: AsyncClient):
|
async def test_filter_by_owner_account_id(client: AsyncClient):
|
||||||
|
|||||||
Reference in New Issue
Block a user