补充创作者主页与关注粉丝工程文档 #638
Reference in New Issue
Block a user
Delete Branch "feat/creator-hub"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
本 PR 补齐创作者主页与关注粉丝功能的产品合同和工程设计,供后续按里程碑实施;本次只修改文档。
桌面导航第四项进入自己的创作者主页,“我的”移到第五项。游戏详情可进入作者主页并关注/取消关注;自己或他人的关注、粉丝列表均公开可查看,点击用户头像或昵称可进入其主页。本人支持取消/重新关注、回关和移除粉丝,并明确两个关注方向独立。
工程设计包含关系表与 DTO、认证和事务边界、跨页状态同步、共享组件、深链及验收要求,拆分关系查询和页面交互两个里程碑。按用户要求,游戏列表沿用最多 48 项的现有限制,不增加游戏目录分页改造。
验证:
Summary
本次变更新增创作者主页、关注 / 取关 / 移除粉丝和公开资料查询,并把他人的关注、粉丝列表固定为只读。服务端对自关注、重复关注、缺失用户、关系方向和公开字段的约束,以及内部路由(未挂到
/api/external/v1)与契约形状是对齐的;浏览器里无应用内历史时用replaceAppHistoryPath兜底,避免深链返回循环。主要缺陷在游戏详情作者行:昵称补查未完成或失败时,会把公开投影的占位词「创作者」当成昵称渲染出来。关系列表对非法tab会静默打开关注列表,和现行设计里的无效链接状态不一致。按严重程度
审查范围是
feat/creator-hub相对origin/master的已提交改动(bdcf67cb)。这是评论,不是批准。@@ -328,0 +335,4 @@<CreatorAuthoruser={{id: game.author.id,displayName: authorName || game.author.name || '创作者',[缺陷] 游戏详情的作者行改为
CreatorAuthor后,展示名取authorName || game.author.name || '创作者'。useGameAuthorDisplayName(src/components/game-distribution/useGameAuthorName.ts:34)在按作者 ID 补查完成前返回null,查不到或网络失败时返回空串;公开游戏投影没有真实昵称时,author.name就是占位词「创作者」(server-rs/crates/api-server/src/modules/game_distribution.rs:3158)。null和空串都会落到这个占位词上,加载过程中以及补查失败后,作者行都把角色词当成昵称显示,同一行的关注按钮同时可用。同函数仍把displayGame.author.name收成空串,供GameDetailDisplay在空名时不渲染「由 X 制作」;新传入的authorContent始终是元素,packages/shared/src/components/GameDetailDisplay/index.tsx:239的??短路后,这条空名降级不再执行。建议: 补查结果仍为
null时不要使用game.author.name,作者行只保留头像占位或骨架。结果为空串时传空展示名,或在名字仍是「创作者」「未知作者」时不渲染昵称。关注操作继续使用game.author.id。@@ -832,0 +910,4 @@<CreatorConnectionsPageid={gameId}tab={gameSearchParams.get('tab') === 'followers'[建议] 现行设计约定关系列表在缺少主人或
tab非法时展示明确的无效链接状态(docs/technical/【技术方案】创作者主页与关注粉丝工程设计-2026-10-05.md:105)。缺少id时CreatorConnectionsPage会提示「缺少创作者 ID」。壳层只把精确等于followers的查询打开为粉丝列表,缺省、空串和其他字符串都会打开关注列表。带错误tab的深链因此直接进入关注列表。建议:
tab不是following或followers时,渲染与缺少创作者 ID 同类的无效链接状态。若缺省tab需要落到关注列表,把这个默认写进设计,并只对缺省生效。把注释意见改挂到新增的
authorContent行上。上一条审查正文不变。@@ -57,6 +57,7 @@ export interface GameDetailDisplayProps extends GameDetailShowcaseProps {playCount?: number;};/** 「游玩方式」文案;缺省「未标注操作方式」。 */authorContent?: ReactNode;[注释] 新增的
authorContent插在「游玩方式」注释和controlsLabel之间。该注释现在挂在作者插槽上,文案仍是游玩方式的缺省说明。建议: 把这句注释移回
controlsLabel,并为authorContent注明它替换默认作者行。