1. 功能背景
社交语聊 App 中,用户可能遇到骚扰、恶意邀请、私信打扰、房间冲突或不希望继续接触的用户。
拉黑功能用于让当前登录用户主动屏蔽指定用户。拉黑成功后,系统需要在房间、私信、邀请、关注关系和黑名单管理中同步生效,减少双方继续产生直接互动的机会。
2. 核心角色定义
| 角色 | 定义 |
|---|---|
| 拉黑人 | 发起拉黑操作的当前登录用户 |
| 被拉黑人 | 被加入黑名单的用户 |
| 房主 | 当前房间或 Party 的创建 / 管理用户 |
| 普通用户 | 当前房间内非房主用户 |
2.1 拉黑关系
当拉黑人拉黑被拉黑人后,系统建立一条拉黑关系:
拉黑人 blocked 被拉黑人
2.2 生效原则
- 拉黑人不再看到被拉黑人创建的房间 / Party。
- 被拉黑人不能再向拉黑人发送私信。
- 被拉黑人不能再向拉黑人发起房间、上麦、Party 邀请。
- 拉黑人与被拉黑人之间的关注关系自动解除。
- 房间内发生拉黑时,系统按拉黑人在房间内的身份处理当前房间状态。
- 解除拉黑后,不自动恢复关注关系。
3. 功能范围
3.1 本期包含
| 模块 | 说明 |
|---|---|
| 用户资料页拉黑 | 在用户主页 / 用户资料卡中发起拉黑 |
| 房间内拉黑 | 在房间用户资料卡中发起拉黑 |
| 私信中拉黑 | 在私信会话中发起拉黑 |
| 黑名单管理 | 查看和解除拉黑 |
| 房间 / Party 屏蔽 | 拉黑人不再看到被拉黑人创建的房间 / Party |
| 当前房间处理 | 普通用户拉黑后留在当前房间;房主拉黑后移出被拉黑人 |
| 私信限制 | 被拉黑人不能继续给拉黑人发私信 |
| 邀请限制 | 被拉黑人不能继续邀请拉黑人 |
| 关注关系解除 | 拉黑成功后自动解除双方关注关系 |
3.2 本期不包含
| 模块 | 处理方式 |
|---|---|
| 举报处理结果通知 | 归属举报流程,本期不处理 |
| 禁言 / 全站处罚 | 归属平台处罚,本期不处理 |
| 群体拉黑 | 本期仅支持单个用户拉黑 |
| 拉黑原因选择 | 后续规划 |
| 拉黑后自动举报 | 后续规划 |
| 推荐系统过滤 | 后续规划 |
| 搜索结果过滤 | 后续规划 |
| 反向推荐过滤 | 后续规划 |
| 埋点统计 | 后续规划 |
| 风控观察 | 后续规划 |
| 后台日志分析 | 后续规划 |
4. 拉黑入口
4.1 用户资料页
入口:
用户主页 / 用户资料卡 → 更多 → 拉黑
适用场景:
- 他人个人主页。
- 用户资料卡。
- 房间外展示的用户资料入口。
4.2 房间内用户资料卡
入口:
房间内点击用户头像 → 用户资料卡 → 更多 → 拉黑
适用对象:
- 房主。
- 麦上用户。
- 麦下用户。
- 房间观众。
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
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| targetUserId | string | 是 | 被拉黑人用户 ID |
| source | string | 否 | 拉黑来源,取值包括 profile、room、chat |
| roomId | string | 否 | 发生拉黑操作时所在房间 ID,非房间场景为空 |
| operatorRole | string | 否 | 拉黑人在当前房间中的角色,取值为 owner 或 user |
服务端处理逻辑:
- 校验被拉黑人是否存在。
- 禁止拉黑自己。
- 已拉黑时返回已拉黑结果。
- 创建拉黑关系。
- 解除双方关注关系。
- 限制私信、邀请、进入房间。
- 如果存在
roomId,按房间身份处理当前房间状态:- 拉黑人是普通用户:不处理当前房间状态。
- 拉黑人是房主:被拉黑人退出当前房间。
- 返回拉黑结果。
返回示例:
{
"success": true,
"needExitRoom": true,
"exitUserId": "user_123",
"message": "blocked_success"
}
字段说明:
| 字段 | 说明 |
|---|---|
| success | 是否成功 |
| needExitRoom | 是否需要有人退出当前房间 |
| exitUserId | 需要退出房间的用户 ID;仅房主拉黑房间内用户时为被拉黑人用户 ID |
| message | 状态信息 |
14.2 解除拉黑接口
POST /user/unblock
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| targetUserId | string | 是 | 被拉黑人用户 ID |
返回示例:
{
"success": true,
"message": "unblocked_success"
}
14.3 黑名单列表接口
GET /user/block-list
返回字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| userId | string | 被拉黑人用户 ID |
| nickname | string | 被拉黑人当前昵称 |
| avatar | string | 被拉黑人当前头像 |
15. 数据结构说明
15.1 block_relation 表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 主键 |
| user_id | string | 拉黑人用户 ID |
| blocked_user_id | string | 被拉黑人用户 ID |
| source | string | 来源 |
| room_id | string | 房间 ID,非房间场景为空 |
| created_at | datetime | 拉黑时间 |
| status | int | 1 生效,0 解除 |
15.2 follow_relation 表处理
拉黑成功后,系统删除或置为失效以下关注关系:
拉黑人关注被拉黑人
被拉黑人关注拉黑人
16. 各模块校验规则
16.1 房间列表过滤
查询房间列表时,不展示被拉黑人创建的房间 / Party。
不展示拉黑人已拉黑用户创建的房间 / Party
16.2 房间进入校验
进入房间前需要校验房主与当前登录用户之间是否存在拉黑关系。
如果当前登录用户已拉黑房主 → 不允许进入
如果房主已拉黑当前登录用户 → 不允许进入
用户提示:
无法进入该房间
16.3 私信发送校验
发送消息前需要校验发送方与接收方之间是否存在拉黑关系。
如果发送方已拉黑接收方 → 不允许发送
如果接收方已拉黑发送方 → 不允许发送
16.4 邀请发送校验
发起邀请前需要校验邀请方与被邀请方之间是否存在拉黑关系。
如果邀请方已拉黑被邀请方 → 不允许邀请
如果被邀请方已拉黑邀请方 → 不允许邀请
16.5 关注校验
存在拉黑关系时,双方不能关注对方。
用户尝试关注时,按以下文案提示:
| 场景 | 提示 |
|---|---|
| 当前登录用户已拉黑对方 | 你已拉黑该用户,解除拉黑后可关注 |
| 对方已拉黑当前登录用户 | 当前无法关注该用户 |
17. 异常场景
| 场景 | 处理 |
|---|---|
| 拉黑时网络失败 | 不创建拉黑关系,提示“网络异常,请稍后重试” |
| 重复拉黑 | 返回已拉黑结果,提示“你已拉黑该用户” |
| 拉黑自己 | 不允许,提示“不能拉黑自己” |
| 普通用户房间内拉黑后仍在房间内 | 符合预期 |
| 房主拉黑用户后被拉黑人仍在房间内 | 服务端强制移出,并关闭该用户房间连接 |
| 拉黑后仍收到邀请 | 邀请发送校验未生效,需要修复 |
| 拉黑后仍看到房间 | 房间列表过滤未生效,需要修复 |
| 解除拉黑后关注关系未恢复 | 符合预期 |
| 最小化房间状态下被移出 | 关闭最小化房间入口 |
| 房主拉黑正在麦上的用户 | 被拉黑人立即下麦并退出房间 |
18. 产品合规与合理性审视
18.1 合理性结论
| 项目 | 结论 |
|---|---|
| 用户主动控制 | 合理,拉黑由当前登录用户主动触发 |
| 二次确认 | 合理,可降低误操作 |
| 不明示拉黑关系 | 合理,可降低冲突升级风险 |
| 当前房间处理 | 合理,普通用户拉黑只建立关系,房主拉黑体现房间管理权 |
| 关注关系解除 | 合理,符合“停止继续社交触达”的功能目标 |
| 历史消息保留 | 合理,避免因拉黑导致历史记录异常丢失 |
18.2 隐私保护要求
- 黑名单数据属于用户隐私,不对外展示。
- 被拉黑人侧不展示“你已被拉黑”类文案。
- 黑名单列表只展示完成解除拉黑所需的最小信息。
- 私信、邀请、进入房间等限制必须由服务端校验,不能只依赖前端隐藏。
- 后续如增加非 P0 治理能力,需要单独评估个人信息处理范围。
18.3 反骚扰要求
- 拉黑后,被拉黑人不能继续通过私信、邀请、进入房间触达拉黑人。
- 房主拉黑房间内用户后,被拉黑人不能继续停留在当前房间。
- 普通用户在房间内拉黑别人后,只建立拉黑关系,双方留在当前房间。
- 系统提示避免暴露拉黑关系,减少对抗和冲突。
19. 测试用例
19.1 基础拉黑
| 用例 | 操作 | 预期 |
|---|---|---|
| 用户资料页拉黑 | 拉黑人在被拉黑人资料页点击拉黑 | 拉黑成功 |
| 私信页拉黑 | 拉黑人在与被拉黑人的私信中拉黑 | 拉黑成功 |
| 房间内拉黑 | 拉黑人在房间内拉黑被拉黑人 | 按拉黑人身份处理当前房间状态 |
| 重复拉黑 | 拉黑人再次拉黑同一用户 | 提示已拉黑 |
| 拉黑自己 | 当前登录用户拉黑自己 | 不允许 |
19.2 房主拉黑场景
| 用例 | 操作 | 预期 |
|---|---|---|
| 房主拉黑麦上用户 | 房主拉黑麦上用户 | 被拉黑人立即下麦并退出房间 |
| 房主拉黑麦下用户 | 房主拉黑麦下用户 | 被拉黑人立即退出房间 |
| 房主拉黑观众 | 房主拉黑观众 | 被拉黑人立即退出房间 |
| 被拉黑人重新进入 | 被拉黑人重新进入房主的房间 | 禁止进入 |
| 被拉黑人进入房主后续 Party | 被拉黑人进入房主新建 Party | 禁止进入 |
| 被拉黑人私信房主 | 被拉黑人给房主发私信 | 发送失败 |
| 被拉黑人邀请房主 | 被拉黑人邀请房主 | 邀请失败 |
19.3 普通用户拉黑场景
| 用例 | 操作 | 预期 |
|---|---|---|
| 普通用户拉黑房主 | 普通用户在房主的房间内拉黑房主 | 双方留在当前房间 |
| 普通用户拉黑麦上用户 | 普通用户拉黑麦上用户 | 双方留在当前房间 |
| 普通用户拉黑麦下用户 | 普通用户拉黑麦下用户 | 双方留在当前房间 |
| 普通用户拉黑观众 | 普通用户拉黑观众 | 双方留在当前房间 |
19.4 房间展示与进入
| 用例 | 操作 | 预期 |
|---|---|---|
| 房间列表 | 拉黑人拉黑被拉黑人后刷新房间列表 | 不展示被拉黑人创建的房间 |
| AI Party 列表 | 拉黑人拉黑被拉黑人后进入列表 | 不展示被拉黑人创建的 AI Party |
| 多人 Party 列表 | 拉黑人拉黑被拉黑人后进入列表 | 不展示被拉黑人创建的多人 Party |
| 进入房间校验 | 拉黑人尝试进入被拉黑人创建的房间 | 不允许进入 |
19.5 私信相关
| 用例 | 操作 | 预期 |
|---|---|---|
| 被拉黑人给拉黑人发私信 | 拉黑人已拉黑被拉黑人 | 发送失败 |
| 拉黑人给被拉黑人发私信 | 拉黑人已拉黑被拉黑人 | 提示需解除拉黑 |
| 历史消息 | 拉黑人拉黑被拉黑人后查看会话 | 历史消息保留 |
| 消息通知 | 被拉黑人给拉黑人发消息 | 拉黑人不收到通知 |
19.6 邀请相关
| 用例 | 操作 | 预期 |
|---|---|---|
| 被拉黑人邀请拉黑人进房 | 拉黑人已拉黑被拉黑人 | 邀请失败 |
| 被拉黑人邀请拉黑人上麦 | 拉黑人已拉黑被拉黑人 | 邀请失败 |
| 拉黑人邀请被拉黑人 | 拉黑人已拉黑被拉黑人 | 提示需解除拉黑 |
19.7 关注关系
| 用例 | 操作 | 预期 |
|---|---|---|
| 拉黑人关注被拉黑人后拉黑 | 拉黑人拉黑被拉黑人 | 拉黑人自动取消关注被拉黑人 |
| 被拉黑人关注拉黑人后被拉黑 | 拉黑人拉黑被拉黑人 | 被拉黑人不再关注拉黑人 |
| 双方互关后拉黑 | 拉黑人拉黑被拉黑人 | 双方关注关系解除 |
| 解除拉黑 | 拉黑人解除拉黑 | 关注关系不恢复 |
20. 验收标准
满足以下条件,功能可验收通过:
- 用户可在资料页、私信页、房间用户卡片中拉黑对方。
- 拉黑前有二次确认弹窗。
- 拉黑后,拉黑人不再看到被拉黑人创建的房间 / Party。
- 普通用户在房间内拉黑别人后,普通用户和被拉黑人均留在当前房间。
- 房主在房间内拉黑用户后,被拉黑人立即退出当前房间。
- 被拉黑人无法再次进入拉黑人创建或管理的房间 / Party。
- 被拉黑人无法继续给拉黑人发私信。
- 被拉黑人无法继续邀请拉黑人进入房间、上麦或加入 Party。
- 拉黑成功后,双方关注关系自动解除。
- 解除拉黑后,不自动恢复关注关系。
- 黑名单页面可查看和解除拉黑用户。
- 所有限制逻辑均由服务端校验,前端不可绕过。
- 相关轻提示、弹窗、异常提示完整可用。
- 被拉黑人侧不直接暴露拉黑关系。
21. 后续规划
| 优先级 | 能力 |
|---|---|
| P1 | 推荐系统过滤 |
| P1 | 搜索结果过滤 |
| P1 | 反向推荐过滤 |
| P1 | 房间邀请列表过滤 |
| P2 | 拉黑原因选择 |
| P2 | 拉黑后自动举报入口 |
| P2 | 埋点统计 |
| P2 | 风控观察 |
| P2 | 后台日志分析 |