feat: 增强标签云组件支持搜索和展开功能

- 将 TagCloud 改造为客户端组件,添加实时搜索功能
- 新增 getTopTags 函数获取热门标签(按项目数量排序)
- 支持展开/收起查看所有标签,提升大量标签场景下的用户体验
- 添加标签相关中英文翻译文本
- 新增 scripts/list-tags.js 辅助脚本用于标签统计分析
This commit is contained in:
2026-01-25 16:51:32 +08:00
parent 3d62cacde8
commit da7101621d
6 changed files with 199 additions and 34 deletions
+25
View File
@@ -156,3 +156,28 @@ export async function getTagsWithProjectCounts(): Promise<TagWithProjectCount[]>
return tags.filter(tag => tag._count.projects > 0)
}
export async function getTopTags(limit: number = 10): Promise<TagWithProjectCount[]> {
const tags = await prisma.tag.findMany({
include: {
_count: {
select: { projects: true }
}
},
where: {
projects: {
some: {} // 只返回有项目的标签
}
}
})
// 按项目数量降序、名称升序排序
return tags
.filter(tag => tag._count.projects > 0)
.sort((a, b) => {
const countDiff = b._count.projects - a._count.projects
if (countDiff !== 0) return countDiff
return a.name.localeCompare(b.name, 'zh')
})
.slice(0, limit)
}