成绩互动公开字段深度参考
本页把成绩互动对象分成曲目摘要、评论树、反馈和审核历史四组,说明字段之间的关系和客户端显示规则。
曲目摘要
常见字段:
| 字段 | 说明 |
|---|---|
musicId | 曲目编号 |
likeCount | 点赞数量 |
dislikeCount | 点踩数量 |
commentCount | 评论数量 |
updatedAt | 摘要更新时间 |
计数来自服务端,互动成功后应使用返回对象更新,不要在本地简单加一。更新时间按带时区文本处理。
评论对象
评论可能包含:
id:评论标识;musicId:所属曲目;parentId:父评论,根评论为空或特殊值;kind:评论/反馈等类型;floor:楼层/显示序号;user:作者显示名;content:正文;likeCount/dislikeCount;createdAt。
评论树
客户端可把 parentId 指向的评论作为父节点,构建回复树。父评论缺失时不要把回复随便挂到第一条评论;可以显示为孤立项并反馈数据结构异常。
删除父评论后,回复可能仍然存在或被隐藏,以服务返回为准。删除后的本地树要重新读取,不能只从数组中删除一个节点。
正文处理
正文要转义 HTML、限制长度、避免自动执行链接和脚本。公开显示前检查联系方式、二维码、Token 和个人信息。原始正文不要写入普通错误日志。
互动请求
曲目点赞/点踩
请求需要 Token、曲目编号和页面允许的动作。动作提交中按钮禁用;响应超时先读取摘要和当前用户状态。
评论创建
请求需要 Token、曲目编号、正文,回复时可带父评论。空正文在本地拦截;成功后使用服务返回摘要/评论对象。
评论删除
需要评论标识和曲目编号。删除前展示脱敏正文摘要并二次确认;权限失败时不要换另一个评论 ID尝试。
评论互动
对评论的点赞/点踩要区分曲目摘要和评论摘要。成功后刷新评论树;不要把评论计数直接当作曲目计数。
反馈对象
反馈申请可能包含:
musicId;reason;createdAt;status;decisionAction;decisionBy;decisionNote;updatedAt。
反馈理由应该是可复现、非敏感描述。提交状态和处理状态必须分别展示。
删除列表
部分互动响应可能返回 deleteList,它表示页面应隐藏或移除的内容编号集合。客户端应把它当作服务结果处理,不要把它解释成用户请求的删除范围,也不要自行把其它曲目加入。
审核历史
历史操作项可能包含:
time;event;musicId;actor;reason;action;status;deleteList。
未知事件类型只读显示原值。历史事件的操作者和时间属于审核信息,普通用户不应看到内部字段。
审核决定
决定请求动作由页面提供,常见是显示/隐藏。备注可以为空或是简短的非敏感说明。提交后回读审核对象和历史,不能把 UI 的“提交成功”当成内容已立即变化。
兼容性
reviews可能缺失,表示当前请求没有返回审核信息;comments可能为空数组,表示没有评论;social可能没有某个曲目,不能直接视为曲目不存在;parentId的空值形态以页面当前响应为准;- 时间格式可能变化,优先保留原文。
隐私和导出
互动导出至少脱敏作者、操作者、评论正文中的联系方式和完整时间。测试夹具只用占位 ID 和文本。不要把真实评论、审核备注或聊天原文写入公开文档。
