fix(analysis): omit members without repeated catchphrases

Voice transcription normalization can remove every phrase for a member while leaving an empty member entry. Filter those entries from the result so overview and selected-member views retain their empty states.

Add a regression test for single-use transcriptions alongside another member with valid catchphrases.
This commit is contained in:
digua committed 2026-09-04 00:27:29 +08:00
1 parent 8b7d62e248
commit 4392519d30
2 files changed
+15 -1

No files matched your search

@@ -203,6 +203,20 @@ describe('getCatchphraseAnalysis', () => {
db.close()
})
it('omits members whose normalized voice phrases never repeat', (t) => {
const db = createCatchphraseDb([
{ memberId: 1, content: '[语音 3秒] 只转写一次', count: 1 },
{ memberId: 2, content: '收到', count: 3 },
])
t.after(() => db.close())
assert.deepEqual(
getCatchphraseAnalysis(db).members.map((member) => member.memberId),
[2]
)
assert.deepEqual(getCatchphraseAnalysis(db, { memberId: 1 }), { members: [] })
})
it('filters explicit system notifications but keeps emoji labels', () => {
const db = createCatchphraseDb([
{ memberId: 1, content: '[系统] 对方赞了你分享的 图文', count: 4 },
+1 -1
View File
@@ -109,5 +109,5 @@ export function getCatchphraseAnalysis(db: DatabaseAdapter, filter?: TimeFilter)
return countDifference || a.memberId - b.memberId
})
return { members }
return { members: members.filter((member) => member.catchphrases.length > 0) }
}