HHafa PRD
Product Requirement Document

Hafa 社交语聊 App 拉黑功能 PRD

提供明确、可执行的拉黑闭环,降低骚扰和冲突,避免拉黑人与被拉黑人继续通过房间、私信、邀请、关注关系发生社交触达。

版本v1.1
适用场景语聊房 / AI Party / 多人 Party / 私信 / 用户资料卡 / 黑名单管理
设计规范DESIGN.md:极简、玻璃拟态、lime 强调色
普通用户拉黑别人

只建立拉黑关系,双方均留在当前房间。

房主拉黑房间内用户

被拉黑人立即退出当前房间,解除拉黑前不能重新进入。

1. 功能背景

社交语聊 App 中,用户可能遇到骚扰、恶意邀请、私信打扰、房间冲突或不希望继续接触的用户。

拉黑功能用于让当前登录用户主动屏蔽指定用户。拉黑成功后,系统需要在房间、私信、邀请、关注关系和黑名单管理中同步生效,减少双方继续产生直接互动的机会。


2. 核心角色定义

角色定义
拉黑人发起拉黑操作的当前登录用户
被拉黑人被加入黑名单的用户
房主当前房间或 Party 的创建 / 管理用户
普通用户当前房间内非房主用户

2.1 拉黑关系

当拉黑人拉黑被拉黑人后,系统建立一条拉黑关系:

拉黑人 blocked 被拉黑人

2.2 生效原则

  1. 拉黑人不再看到被拉黑人创建的房间 / Party。
  2. 被拉黑人不能再向拉黑人发送私信。
  3. 被拉黑人不能再向拉黑人发起房间、上麦、Party 邀请。
  4. 拉黑人与被拉黑人之间的关注关系自动解除。
  5. 房间内发生拉黑时,系统按拉黑人在房间内的身份处理当前房间状态。
  6. 解除拉黑后,不自动恢复关注关系。

3. 功能范围

3.1 本期包含

模块说明
用户资料页拉黑在用户主页 / 用户资料卡中发起拉黑
房间内拉黑在房间用户资料卡中发起拉黑
私信中拉黑在私信会话中发起拉黑
黑名单管理查看和解除拉黑
房间 / Party 屏蔽拉黑人不再看到被拉黑人创建的房间 / Party
当前房间处理普通用户拉黑后留在当前房间;房主拉黑后移出被拉黑人
私信限制被拉黑人不能继续给拉黑人发私信
邀请限制被拉黑人不能继续邀请拉黑人
关注关系解除拉黑成功后自动解除双方关注关系

3.2 本期不包含

模块处理方式
举报处理结果通知归属举报流程,本期不处理
禁言 / 全站处罚归属平台处罚,本期不处理
群体拉黑本期仅支持单个用户拉黑
拉黑原因选择后续规划
拉黑后自动举报后续规划
推荐系统过滤后续规划
搜索结果过滤后续规划
反向推荐过滤后续规划
埋点统计后续规划
风控观察后续规划
后台日志分析后续规划

4. 拉黑入口

4.1 用户资料页

入口:

用户主页 / 用户资料卡 → 更多 → 拉黑

适用场景:

  1. 他人个人主页。
  2. 用户资料卡。
  3. 房间外展示的用户资料入口。

4.2 房间内用户资料卡

入口:

房间内点击用户头像 → 用户资料卡 → 更多 → 拉黑

适用对象:

  1. 房主。
  2. 麦上用户。
  3. 麦下用户。
  4. 房间观众。

4.3 私信会话页

入口:

私信会话页 → 右上角更多 → 拉黑

5. 拉黑确认弹窗

用户点击“拉黑”后,系统展示二次确认弹窗,避免误操作。

5.1 弹窗文案

标题:

加入黑名单

说明:

拉黑后,你将无法看到对方的房间,对方也不能再给你发消息或邀请你。你们的关注关系将自动解除。

5.2 按钮

按钮类型规则
取消次按钮关闭弹窗,不执行拉黑
确认拉黑危险按钮提交拉黑请求

6. 拉黑成功后的通用规则

拉黑成功后,系统需要同步执行以下规则:

项目规则
拉黑关系建立拉黑人对被拉黑人的拉黑关系
房间 / Party 展示拉黑人不再看到被拉黑人创建的房间 / Party
房间进入被拉黑人不能进入拉黑人创建或管理的房间 / Party
私信发送被拉黑人不能给拉黑人发送私信
邀请发送被拉黑人不能邀请拉黑人进房、上麦或加入 Party
关注关系自动解除双方关注关系
历史消息保留历史消息,不主动删除
黑名单被拉黑人出现在拉黑人的黑名单中

7. 房间内拉黑规则

房间内拉黑需要根据拉黑人的房间身份处理当前房间状态。普通用户拉黑房间内成员时,只建立拉黑关系,不改变当前房间状态;房主拉黑房间内成员时,被拉黑人立即退出当前房间。

7.1 普通用户拉黑房间内用户

当普通用户在房间内拉黑任意房间成员时,系统只建立拉黑关系,拉黑人和被拉黑人均不退出当前房间。

7.1.1 处理结果

项目规则
拉黑关系普通用户拉黑被拉黑人
当前房间处理拉黑人留在当前房间
被拉黑人是否退出不退出
后续房间展示拉黑人不再看到被拉黑人创建的房间 / Party
后续私信被拉黑人不能给拉黑人发私信
后续邀请被拉黑人不能邀请拉黑人
关注关系自动解除双方关注关系

7.1.2 轻提示

拉黑人侧轻提示:

已加入黑名单

7.1.3 适用场景

场景处理
普通用户拉黑当前房主双方留在当前房间
普通用户拉黑麦上用户双方留在当前房间
普通用户拉黑麦下用户双方留在当前房间
普通用户拉黑房间观众双方留在当前房间

7.2 房主拉黑房间内用户

当房主在自己的房间内拉黑某个用户时,被拉黑人立即被移出当前房间。

7.2.1 处理结果

项目规则
拉黑关系房主拉黑被拉黑人
当前房间处理被拉黑人立即退出当前房间
房主是否退出不退出
被拉黑人能否重新进入该房间不能进入
被拉黑人能否进入房主后续创建的房间 / Party解除拉黑前不能进入
被拉黑人能否给房主发私信不能发送
被拉黑人能否邀请房主不能邀请
关注关系自动解除双方关注关系

7.2.2 轻提示

房主侧轻提示:

已拉黑并移出房间

被拉黑人侧轻提示:

你已离开当前房间

7.3 与踢出房间的区别

操作是否离开当前房间是否限制后续进入房主房间是否解除关注是否限制私信 / 邀请
踢出房间
普通用户拉黑用户
房主拉黑用户被拉黑人离开

结论:

踢出房间 = 单次房间管理行为
普通用户拉黑用户 = 强关系屏蔽 + 后续触达限制
房主拉黑用户 = 强关系屏蔽 + 当前房间处理 + 后续触达限制

8. 私信限制规则

拉黑人拉黑被拉黑人后,私信规则如下:

行为结果
被拉黑人给拉黑人发新消息不允许发送
被拉黑人在旧会话中继续发消息发送失败
拉黑人给被拉黑人发消息不允许发送,需先解除拉黑
双方历史消息保留
会话列表保留历史会话
新消息通知被拉黑人消息不触发拉黑人通知

8.1 被拉黑人发送失败提示

消息发送失败

8.2 拉黑人主动发送提示

你已拉黑该用户,解除拉黑后可继续发送消息

9. 邀请限制规则

拉黑人拉黑被拉黑人后,邀请规则如下:

邀请类型规则
被拉黑人邀请拉黑人进入房间不允许
被拉黑人邀请拉黑人上麦不允许
被拉黑人邀请拉黑人加入 Party不允许
被拉黑人邀请拉黑人进行语音互动不允许
拉黑人邀请被拉黑人不允许,需先解除拉黑

9.1 被拉黑人邀请失败提示

邀请失败

9.2 拉黑人邀请被拉黑人提示

你已拉黑该用户,解除拉黑后可邀请

10. 关注关系处理规则

拉黑成功后,系统自动解除双方关注关系。

原关系拉黑后结果
拉黑人关注被拉黑人自动取消关注
被拉黑人关注拉黑人自动移除关注关系
双方互相关注双方关注关系解除
双方无关注关系不处理关注关系

关注数和粉丝数按解除后的关系实时更新或准实时更新。

解除拉黑后,关注关系不自动恢复,用户需要重新手动关注。


11. 黑名单管理

11.1 入口

我的 → 设置 → 隐私设置 → 黑名单

11.2 页面内容

内容说明
用户头像展示被拉黑人当前头像
用户昵称展示被拉黑人当前昵称
解除拉黑按钮点击后进入解除拉黑确认流程

11.3 空状态

暂无拉黑用户

11.4 账号异常展示

场景展示规则
被拉黑人改名 / 换头像黑名单展示最新资料
被拉黑人注销账号展示为“已注销用户”

12. 解除拉黑规则

拉黑人解除对被拉黑人的拉黑后,能力恢复如下:

能力结果
看到被拉黑人创建的房间 / Party恢复
收到被拉黑人私信恢复
收到被拉黑人邀请恢复
关注关系不自动恢复
历史消息保留
当前房间关系不自动恢复

12.1 解除拉黑确认弹窗

标题:

解除拉黑?

说明:

解除后,你可能会再次看到该用户的房间、消息和邀请。

按钮:

按钮规则
取消关闭弹窗
解除拉黑移出黑名单

13. 前端交互说明

13.1 拉黑成功轻提示

场景轻提示
房间外拉黑已拉黑该用户
普通用户在房间内拉黑别人已加入黑名单
房主在房间内拉黑用户已拉黑并移出房间
私信内拉黑已拉黑该用户

13.2 拉黑失败轻提示

场景轻提示
网络异常网络异常,请稍后重试
用户不存在用户不存在
已经拉黑你已拉黑该用户
拉黑自己不能拉黑自己
服务异常操作失败,请稍后重试

13.3 房间内拉黑后的页面跳转

当前页面拉黑后跳转
普通用户在语聊房拉黑别人拉黑人留在当前房间
普通用户在 AI Party 拉黑别人拉黑人留在当前 Party
房主拉黑房间内用户房主留在当前房间,被拉黑人退出
最小化房间状态下被移出关闭最小化房间入口
后台状态下被移出下次进入 App 时不恢复该房间

14. 服务端接口

14.1 拉黑接口

POST /user/block

请求参数:

参数类型必填说明
targetUserIdstring被拉黑人用户 ID
sourcestring拉黑来源,取值包括 profile、room、chat
roomIdstring发生拉黑操作时所在房间 ID,非房间场景为空
operatorRolestring拉黑人在当前房间中的角色,取值为 owner 或 user

服务端处理逻辑:

  1. 校验被拉黑人是否存在。
  2. 禁止拉黑自己。
  3. 已拉黑时返回已拉黑结果。
  4. 创建拉黑关系。
  5. 解除双方关注关系。
  6. 限制私信、邀请、进入房间。
  7. 如果存在 roomId,按房间身份处理当前房间状态:
    • 拉黑人是普通用户:不处理当前房间状态。
    • 拉黑人是房主:被拉黑人退出当前房间。
  8. 返回拉黑结果。

返回示例:

{
  "success": true,
  "needExitRoom": true,
  "exitUserId": "user_123",
  "message": "blocked_success"
}

字段说明:

字段说明
success是否成功
needExitRoom是否需要有人退出当前房间
exitUserId需要退出房间的用户 ID;仅房主拉黑房间内用户时为被拉黑人用户 ID
message状态信息

14.2 解除拉黑接口

POST /user/unblock

请求参数:

参数类型必填说明
targetUserIdstring被拉黑人用户 ID

返回示例:

{
  "success": true,
  "message": "unblocked_success"
}

14.3 黑名单列表接口

GET /user/block-list

返回字段:

字段类型说明
userIdstring被拉黑人用户 ID
nicknamestring被拉黑人当前昵称
avatarstring被拉黑人当前头像

15. 数据结构说明

15.1 block_relation 表

字段类型说明
idstring主键
user_idstring拉黑人用户 ID
blocked_user_idstring被拉黑人用户 ID
sourcestring来源
room_idstring房间 ID,非房间场景为空
created_atdatetime拉黑时间
statusint1 生效,0 解除

15.2 follow_relation 表处理

拉黑成功后,系统删除或置为失效以下关注关系:

拉黑人关注被拉黑人
被拉黑人关注拉黑人

16. 各模块校验规则

16.1 房间列表过滤

查询房间列表时,不展示被拉黑人创建的房间 / Party。

不展示拉黑人已拉黑用户创建的房间 / Party

16.2 房间进入校验

进入房间前需要校验房主与当前登录用户之间是否存在拉黑关系。

如果当前登录用户已拉黑房主 → 不允许进入
如果房主已拉黑当前登录用户 → 不允许进入

用户提示:

无法进入该房间

16.3 私信发送校验

发送消息前需要校验发送方与接收方之间是否存在拉黑关系。

如果发送方已拉黑接收方 → 不允许发送
如果接收方已拉黑发送方 → 不允许发送

16.4 邀请发送校验

发起邀请前需要校验邀请方与被邀请方之间是否存在拉黑关系。

如果邀请方已拉黑被邀请方 → 不允许邀请
如果被邀请方已拉黑邀请方 → 不允许邀请

16.5 关注校验

存在拉黑关系时,双方不能关注对方。

用户尝试关注时,按以下文案提示:

场景提示
当前登录用户已拉黑对方你已拉黑该用户,解除拉黑后可关注
对方已拉黑当前登录用户当前无法关注该用户

17. 异常场景

场景处理
拉黑时网络失败不创建拉黑关系,提示“网络异常,请稍后重试”
重复拉黑返回已拉黑结果,提示“你已拉黑该用户”
拉黑自己不允许,提示“不能拉黑自己”
普通用户房间内拉黑后仍在房间内符合预期
房主拉黑用户后被拉黑人仍在房间内服务端强制移出,并关闭该用户房间连接
拉黑后仍收到邀请邀请发送校验未生效,需要修复
拉黑后仍看到房间房间列表过滤未生效,需要修复
解除拉黑后关注关系未恢复符合预期
最小化房间状态下被移出关闭最小化房间入口
房主拉黑正在麦上的用户被拉黑人立即下麦并退出房间

18. 产品合规与合理性审视

18.1 合理性结论

项目结论
用户主动控制合理,拉黑由当前登录用户主动触发
二次确认合理,可降低误操作
不明示拉黑关系合理,可降低冲突升级风险
当前房间处理合理,普通用户拉黑只建立关系,房主拉黑体现房间管理权
关注关系解除合理,符合“停止继续社交触达”的功能目标
历史消息保留合理,避免因拉黑导致历史记录异常丢失

18.2 隐私保护要求

  1. 黑名单数据属于用户隐私,不对外展示。
  2. 被拉黑人侧不展示“你已被拉黑”类文案。
  3. 黑名单列表只展示完成解除拉黑所需的最小信息。
  4. 私信、邀请、进入房间等限制必须由服务端校验,不能只依赖前端隐藏。
  5. 后续如增加非 P0 治理能力,需要单独评估个人信息处理范围。

18.3 反骚扰要求

  1. 拉黑后,被拉黑人不能继续通过私信、邀请、进入房间触达拉黑人。
  2. 房主拉黑房间内用户后,被拉黑人不能继续停留在当前房间。
  3. 普通用户在房间内拉黑别人后,只建立拉黑关系,双方留在当前房间。
  4. 系统提示避免暴露拉黑关系,减少对抗和冲突。

19. 测试用例

19.1 基础拉黑

用例操作预期
用户资料页拉黑拉黑人在被拉黑人资料页点击拉黑拉黑成功
私信页拉黑拉黑人在与被拉黑人的私信中拉黑拉黑成功
房间内拉黑拉黑人在房间内拉黑被拉黑人按拉黑人身份处理当前房间状态
重复拉黑拉黑人再次拉黑同一用户提示已拉黑
拉黑自己当前登录用户拉黑自己不允许

19.2 房主拉黑场景

用例操作预期
房主拉黑麦上用户房主拉黑麦上用户被拉黑人立即下麦并退出房间
房主拉黑麦下用户房主拉黑麦下用户被拉黑人立即退出房间
房主拉黑观众房主拉黑观众被拉黑人立即退出房间
被拉黑人重新进入被拉黑人重新进入房主的房间禁止进入
被拉黑人进入房主后续 Party被拉黑人进入房主新建 Party禁止进入
被拉黑人私信房主被拉黑人给房主发私信发送失败
被拉黑人邀请房主被拉黑人邀请房主邀请失败

19.3 普通用户拉黑场景

用例操作预期
普通用户拉黑房主普通用户在房主的房间内拉黑房主双方留在当前房间
普通用户拉黑麦上用户普通用户拉黑麦上用户双方留在当前房间
普通用户拉黑麦下用户普通用户拉黑麦下用户双方留在当前房间
普通用户拉黑观众普通用户拉黑观众双方留在当前房间

19.4 房间展示与进入

用例操作预期
房间列表拉黑人拉黑被拉黑人后刷新房间列表不展示被拉黑人创建的房间
AI Party 列表拉黑人拉黑被拉黑人后进入列表不展示被拉黑人创建的 AI Party
多人 Party 列表拉黑人拉黑被拉黑人后进入列表不展示被拉黑人创建的多人 Party
进入房间校验拉黑人尝试进入被拉黑人创建的房间不允许进入

19.5 私信相关

用例操作预期
被拉黑人给拉黑人发私信拉黑人已拉黑被拉黑人发送失败
拉黑人给被拉黑人发私信拉黑人已拉黑被拉黑人提示需解除拉黑
历史消息拉黑人拉黑被拉黑人后查看会话历史消息保留
消息通知被拉黑人给拉黑人发消息拉黑人不收到通知

19.6 邀请相关

用例操作预期
被拉黑人邀请拉黑人进房拉黑人已拉黑被拉黑人邀请失败
被拉黑人邀请拉黑人上麦拉黑人已拉黑被拉黑人邀请失败
拉黑人邀请被拉黑人拉黑人已拉黑被拉黑人提示需解除拉黑

19.7 关注关系

用例操作预期
拉黑人关注被拉黑人后拉黑拉黑人拉黑被拉黑人拉黑人自动取消关注被拉黑人
被拉黑人关注拉黑人后被拉黑拉黑人拉黑被拉黑人被拉黑人不再关注拉黑人
双方互关后拉黑拉黑人拉黑被拉黑人双方关注关系解除
解除拉黑拉黑人解除拉黑关注关系不恢复

20. 验收标准

满足以下条件,功能可验收通过:

  1. 用户可在资料页、私信页、房间用户卡片中拉黑对方。
  2. 拉黑前有二次确认弹窗。
  3. 拉黑后,拉黑人不再看到被拉黑人创建的房间 / Party。
  4. 普通用户在房间内拉黑别人后,普通用户和被拉黑人均留在当前房间。
  5. 房主在房间内拉黑用户后,被拉黑人立即退出当前房间。
  6. 被拉黑人无法再次进入拉黑人创建或管理的房间 / Party。
  7. 被拉黑人无法继续给拉黑人发私信。
  8. 被拉黑人无法继续邀请拉黑人进入房间、上麦或加入 Party。
  9. 拉黑成功后,双方关注关系自动解除。
  10. 解除拉黑后,不自动恢复关注关系。
  11. 黑名单页面可查看和解除拉黑用户。
  12. 所有限制逻辑均由服务端校验,前端不可绕过。
  13. 相关轻提示、弹窗、异常提示完整可用。
  14. 被拉黑人侧不直接暴露拉黑关系。

21. 后续规划

优先级能力
P1推荐系统过滤
P1搜索结果过滤
P1反向推荐过滤
P1房间邀请列表过滤
P2拉黑原因选择
P2拉黑后自动举报入口
P2埋点统计
P2风控观察
P2后台日志分析