chawin.chen commited on
Commit
44d459b
·
1 Parent(s): 6507333

feat: 排行榜返回用户昵称

Browse files
Files changed (3) hide show
  1. database.py +3 -3
  2. models.py +1 -0
  3. test/test_ranking_consistency.py +1 -1
database.py CHANGED
@@ -829,8 +829,8 @@ async def get_face_score_leaderboard(
829
  device_suffix = f"_{current_device_id}" if current_device_id else None
830
  result_items: List[Dict[str, Any]] = []
831
  for cached_item in cached_or_fresh_items[:limit]:
832
- nickname = str(cached_item.get("_nickname") or "")
833
- public_item = {key: value for key, value in cached_item.items() if key != "_nickname"}
834
  public_item["is_current_user"] = bool(device_suffix and nickname.endswith(device_suffix))
835
  result_items.append(public_item)
836
  return result_items
@@ -913,6 +913,7 @@ async def get_face_score_leaderboard(
913
  "record_id": row_id,
914
  "rank": len(items) + 1,
915
  "score": score_val,
 
916
  "region_code": row_region,
917
  "region_name": row_country_name,
918
  "gender": gender,
@@ -920,7 +921,6 @@ async def get_face_score_leaderboard(
920
  "avatar_id": avatar_id,
921
  "created_at": updated_at_str,
922
  "updated_at": updated_at_str,
923
- "_nickname": str(row.get("nickname") or ""),
924
  })
925
  if len(items) >= limit:
926
  break
 
829
  device_suffix = f"_{current_device_id}" if current_device_id else None
830
  result_items: List[Dict[str, Any]] = []
831
  for cached_item in cached_or_fresh_items[:limit]:
832
+ nickname = str(cached_item.get("nickname") or "")
833
+ public_item = dict(cached_item)
834
  public_item["is_current_user"] = bool(device_suffix and nickname.endswith(device_suffix))
835
  result_items.append(public_item)
836
  return result_items
 
913
  "record_id": row_id,
914
  "rank": len(items) + 1,
915
  "score": score_val,
916
+ "nickname": str(row.get("nickname") or ""),
917
  "region_code": row_region,
918
  "region_name": row_country_name,
919
  "gender": gender,
 
921
  "avatar_id": avatar_id,
922
  "created_at": updated_at_str,
923
  "updated_at": updated_at_str,
 
924
  })
925
  if len(items) >= limit:
926
  break
models.py CHANGED
@@ -126,6 +126,7 @@ class LeaderboardItem(BaseModel):
126
  record_id: int
127
  rank: int
128
  score: float
 
129
  region_code: Optional[str] = None
130
  region_name: Optional[str] = None
131
  gender: Optional[str] = None
 
126
  record_id: int
127
  rank: int
128
  score: float
129
+ nickname: Optional[str] = None
130
  region_code: Optional[str] = None
131
  region_name: Optional[str] = None
132
  gender: Optional[str] = None
test/test_ranking_consistency.py CHANGED
@@ -87,7 +87,7 @@ class RankingConsistencyTest(unittest.IsolatedAsyncioTestCase):
87
  self.assertEqual(88.85, result["items"][0]["score"])
88
  self.assertTrue(result["items"][0]["is_current_user"])
89
  self.assertTrue(result["items"][1]["is_current_user"])
90
- self.assertNotIn("_nickname", result["items"][0])
91
  query = fetch_all.await_args.args[0]
92
  self.assertNotIn("NOT EXISTS", query)
93
  self.assertIn("ORDER BY score DESC, candidate.id ASC", query)
 
87
  self.assertEqual(88.85, result["items"][0]["score"])
88
  self.assertTrue(result["items"][0]["is_current_user"])
89
  self.assertTrue(result["items"][1]["is_current_user"])
90
+ self.assertEqual("android_release_current-device", result["items"][0]["nickname"])
91
  query = fetch_all.await_args.args[0]
92
  self.assertNotIn("NOT EXISTS", query)
93
  self.assertIn("ORDER BY score DESC, candidate.id ASC", query)