脱敏排行榜昵称

This commit is contained in:
yml2213
2026-08-18 10:07:42 +08:00
parent c6e9a9b962
commit 1617c5e999
2 changed files with 18 additions and 1 deletions
@@ -14,6 +14,7 @@ import {
normalizeWithdrawChannel,
normalizeRequirementFields,
mapWorkOrderForWorker,
maskWorkerLeaderboardDisplayName,
resolveCollectSubmitTargetWorkOrder,
resolveMatchingProductRuleDecision,
resolveWorkerPermissions,
@@ -130,6 +131,12 @@ test('接单密码必须包含大小写字母、数字和标点符号', () => {
assert.throws(() => validateWorkerPassword('Aa123456'), { errorCode: 'worker_password_invalid' })
})
test('排行榜打手名称仅展示首字符', () => {
assert.equal(maskWorkerLeaderboardDisplayName('张三'), '张****')
assert.equal(maskWorkerLeaderboardDisplayName('Alice'), 'A****')
assert.equal(maskWorkerLeaderboardDisplayName(''), '****')
})
test('快手具体 SKU 精确规则优先于大标题包含规则', () => {
const decision = resolveMatchingProductRuleDecision(buildOrderRow(), buildOrderItemRow(), [
buildProductRule(),
@@ -1158,7 +1158,12 @@ export async function getWorkerHallLeaderboard(session: WorkerSession) {
})
const current = entries.find((entry) => entry.workerId === session.workerId)
return {
items: entries.filter((entry) => entry.rank <= 10),
items: entries
.filter((entry) => entry.rank <= 10)
.map((entry) => ({
...entry,
displayName: maskWorkerLeaderboardDisplayName(entry.displayName),
})),
current: {
rank: current?.rank || null,
acceptedOrderCount: current?.acceptedOrderCount || 0,
@@ -1166,6 +1171,11 @@ export async function getWorkerHallLeaderboard(session: WorkerSession) {
}
}
export function maskWorkerLeaderboardDisplayName(value: unknown): string {
const firstCharacter = Array.from(String(value || '').trim())[0]
return firstCharacter ? `${firstCharacter}****` : '****'
}
export async function grabWorkerHallOrder(workOrderId: number | string, session: WorkerSession) {
requireActiveWorkerSession(session)
const worker = await getRequiredWorker(session.workerId)