fix(api): 客户/群列表排序改为friend_id/room_id ASC(对齐云客API自然顺序)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
浅念
2026-08-15 14:14:24 +08:00
parent aa90d9d8f2
commit 854da6e566
3 changed files with 4 additions and 8 deletions
-1
View File
@@ -71,7 +71,6 @@ async def list_customers(
list_stmt = list_stmt.where(*conditions)
list_stmt = (
list_stmt.order_by(
sa.nullslast(Customer.last_chat_time.desc()),
Customer.friend_id.asc(),
)
.limit(page_size)
-1
View File
@@ -61,7 +61,6 @@ async def list_groups(
list_stmt = list_stmt.where(*conditions)
list_stmt = (
list_stmt.order_by(
sa.nullslast(ChatGroup.last_chat_time.desc()),
ChatGroup.room_id.asc(),
)
.limit(page_size)
+4 -6
View File
@@ -205,19 +205,17 @@ async def test_pagination_page_size_one(client: AsyncClient):
assert len(body["items"]) == 1
async def test_order_is_last_chat_time_desc_nulls_last(client: AsyncClient):
"""Order: ``last_chat_time desc`` (nulls last), then ``friend_id``.
async def test_order_is_friend_id_asc(client: AsyncClient):
"""Order: ``friend_id ASC`` (natural API/云客 order).
Seeded rows have last_chat_time 2000 / 1000 / None -> expected order
``[wx_a, wx_b, wa_c]`` (the whatsapp row with NULL last_chat_time lands
last even though it has no timestamp).
Seeded IDs wa_c < wx_a < wx_b → expected order ``[wa_c, wx_a, wx_b]``.
"""
r = await client.get(
"/api/customers", params={"page": 1, "page_size": 20}
)
assert r.status_code == 200
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):