feat(profile): add public user profiles with activity tabs and stats

Add API routes for user stats, posts, reactions, and comments
Implement profile view with Feeds, Contributions, Reactions tabs
Link to user profiles from edit history, discussions, and life posts
Add database indexes to optimize user-centric queries
This commit is contained in:
2026-05-03 13:14:29 +08:00
parent b9ec8076ac
commit 0e835f9c03
13 changed files with 1762 additions and 146 deletions

View File

@@ -135,7 +135,40 @@ export const systemWordingMessages = {
copyReferralLink: 'Copy link',
referralCopied: 'Referral link copied',
referralCopyFailed: 'Referral link copy failed',
referralLoadFailed: 'Referral details failed to load'
referralLoadFailed: 'Referral details failed to load',
publicSubtitle: 'Review this member\'s Life posts, reactions, comments, and Wiki contributions.',
publicKicker: 'Member Profile',
tabsLabel: 'Profile sections',
tabFeeds: 'Feeds',
tabContributions: 'Contributions',
tabReactions: 'Reactions',
tabComments: 'Comments',
tabAccount: 'Account',
joinedAt: 'Joined {date}',
lifePosts: 'Life posts',
lifeComments: 'Life comments',
lifeReactions: 'Reactions',
discussionComments: 'Wiki comments',
commentsMade: 'Comments',
wikiEdits: 'Wiki edits',
wikiCreates: 'Creates',
wikiUpdates: 'Updates',
wikiDeletes: 'Deletes',
imageUploads: 'Images',
wikiContributionStats: 'Wiki contribution stats',
communityStats: 'Community stats',
contributionBreakdown: 'Contribution breakdown',
total: 'Total',
otherContributions: 'Other',
feedsEmpty: 'No Life posts yet',
contributionsEmpty: 'No Wiki contributions yet',
reactionsEmpty: 'No reactions yet',
commentsEmpty: 'No comments yet',
loadMore: 'Load more',
lifeComment: 'Life comment',
discussionComment: 'Wiki discussion',
lifePostTarget: 'Life post',
lifePostBy: 'Life post by {name}'
},
pokemon: {
title: 'Pokemon',
@@ -857,7 +890,40 @@ export const systemWordingMessages = {
copyReferralLink: '复制链接',
referralCopied: '邀请链接已复制',
referralCopyFailed: '邀请链接复制失败',
referralLoadFailed: '邀请信息加载失败'
referralLoadFailed: '邀请信息加载失败',
publicSubtitle: '查看该成员的 Life 动态、互动、评论和 Wiki 贡献。',
publicKicker: '成员主页',
tabsLabel: '个人主页分区',
tabFeeds: 'Feeds',
tabContributions: '贡献',
tabReactions: '互动',
tabComments: '评论',
tabAccount: '账号',
joinedAt: '加入于 {date}',
lifePosts: 'Life 动态',
lifeComments: 'Life 评论',
lifeReactions: '互动',
discussionComments: 'Wiki 评论',
commentsMade: '评论',
wikiEdits: 'Wiki 编辑',
wikiCreates: '新增',
wikiUpdates: '更新',
wikiDeletes: '删除',
imageUploads: '图片',
wikiContributionStats: 'Wiki 贡献统计',
communityStats: '社区统计',
contributionBreakdown: '贡献分布',
total: '总计',
otherContributions: '其他',
feedsEmpty: '暂无 Life 动态',
contributionsEmpty: '暂无 Wiki 贡献',
reactionsEmpty: '暂无互动',
commentsEmpty: '暂无评论',
loadMore: '加载更多',
lifeComment: 'Life 评论',
discussionComment: 'Wiki 讨论',
lifePostTarget: 'Life 动态',
lifePostBy: '{name} 的 Life 动态'
},
pokemon: {
title: 'Pokemon',