好友、申请与黑名单
好友管理覆盖好友、申请、添加、黑名单四页签及玩家资料、赠礼。私聊独立见聊天,公会见公会。当前源码已有界面和本地模拟数据,尚不能认定真实好友服务联调完成。旧 Markdown 将全部社交标成“预留”已经不足以描述现状;完整设计也不能反过来证明已上线。下列设计来自批准状态 unknown 的飞书文档,并与当前源码对照。
入口、状态与容量
主界面社交入口默认打开好友页,四页签分别为好友/申请/添加/黑名单;无额外底部功能栏。功能开放条件由配置决定。申请状态分陌生人、已发送、待处理、好友、黑名单;好友关系双向建立,拒绝/删除回到陌生人,拉黑还清除关系及双方待处理申请。解除拉黑不自动恢复好友。
| 参数 | 来源默认值与规则 |
|---|---|
好友上限 FriendMax | 100;已满不可添加或接受,仍可接收/拒绝申请;双方都须有容量 |
申请上限 FriendRequestMax | 50,超限淘汰最早申请 |
申请有效期 FriendRequestExpire | 7天,到期失效 |
拒绝冷却 FriendRequestCD | 24小时;正文写推荐排除,配置表/客户端设计又写重新申请冷却,实际作用范围待确认 |
推荐数量 RecommendCount | 10;当前本地模拟每批4人,不等价 |
推荐刷新 RecommendRefreshCD | 5秒 |
搜索结果 SearchResultMax | 最多20 |
黑名单 BlacklistMax | 100 |
| 私聊长度/历史 | 100字符/100条;历史条数的会话还是总量口径未统一,详见聊天页 |
离线显示 OfflineLongTime | 超过7天显示长期离线/7天以上,不无限增长 |
未读显示 UnreadMaxDisplay | 超99显示99+ |
满员提示应说明自己满或对方满;网络失败与业务拒绝有各自结果,不能把按钮点击当作建立关系。2026-09-08 客户端设计保留“月卡扩容入口”的提案,没有给扩容数、条件和现行配置,本页不将其列为已提供权益。
好友页、玩家资料与删除
好友条目展示头像/头像框、昵称、等级、战力、在线/最近活跃状态、私聊未读、赠礼/领取和聊天入口;打开页时刷新资料。列表按未读优先→在线优先→最近活跃→建立好友时间排序。同一在线/未读档内的稳定排序方向与实际服务端时间需要核对。
点击头像打开玩家资料,基本字段包括玩家ID、头像/框、昵称、等级、公会、关卡进度、在线状态、战力;最高进度、排行、称号、外观/活动信息仅在游戏确有对应数据时展示。好友可聊天、删除、拉黑,陌生人可申请、拉黑。举报入口属于后续规划,不因设计稿菜单出现就认为已接通。
删除先二次确认;确认后双方好友列表移除,但保留聊天记录和会话。取消不改变关系。客户端设计中的“建立好友时间”可能只能记录本机首次见到,不等同于服务端真实建立时间,不能据此声称跨设备完全一致。
源文档一处将在线状态限于好友,申请/推荐表又列在线字段;陌生人是否可见在线状态未形成一致契约。
好友申请
从推荐、搜索或玩家资料发送申请。已发送状态不能重复按钮连发;被任一方拉黑不能申请。接收端展示申请人的身份、战力/进度与申请时间,可单独同意或拒绝。
- 同意前校验双方上限;成功建立双向关系并清理申请。来源把“同意后的通知”标为暂不处理,不能强加实时通知要求。
- 拒绝移除申请且不通知对方,按冷却规则处理后续申请/推荐。
- 一键同意按申请时间顺序逐个处理;对方满员跳过,本人满员停止,未成功申请保留,不能一次性清空全部。
- 一键拒绝须确认;取消不移除,确认按实际成功结果刷新。
- 过期、被拉黑、双方之一已成为好友等变化应重新判断,不以旧页面快照直接执行。
推荐与搜索
推荐优先相近等级/主线进度和近期活跃玩家,并满足有效服务器范围。排除自己、已有好友、已发申请、待处理申请、任一方向黑名单、拒绝冷却、离线超过7天。刷新尽量避免与刚展示批次重复;候选不足可少于默认数量,不填入不合法对象。跨服推荐与范围需要配置决定,当前没有已确认跨服契约。
搜索支持精确ID、精确昵称和模糊昵称,结果优先级依次如此;排除黑名单,结果上限20。无输入、没有结果、请求失败和不能添加应有明确反馈;不将搜索输入原文作为埋点字段。结果与推荐均可查看资料并申请,已申请显示对应状态。
黑名单
从好友、资料或聊天进入拉黑,先确认。成功后移除已有好友关系,清除双方待处理申请,禁止双向私聊和好友申请;推荐/搜索排除。公共频道消息也按聊天屏蔽规则隐藏。达到100人上限时不能继续加入,不能静默淘汰旧黑名单。
黑名单页显示身份及解除操作;解除后是陌生人,后续联系重新按准入规则。解除不恢复历史好友、待处理申请或被屏蔽期间自动补发的内容。举报与拉黑是不同动作,拉黑成功不等于举报受理。
赠礼、领取与后续互助
每名好友每天可赠送1次,不消耗自己的体力/资源;收到赠礼每日最多领取20次,未领赠礼在日刷新时失效。显示已赠、可赠、可领、今日已达上限等状态。单次赠送/领取与一键操作只对符合条件的好友执行,一键按列表顺序处理到每日总额度;总赠送额度、单次奖励数量与日切时区源案没有统一具体值。
字段 GiftDailyMax/GiftReceiveMax/GiftReward 分别表达赠送上限、领取上限和奖励;领取必须走真实道具链路。好友求助/助力及 HelpDailyMax/HelpReward/HelpReceiveReward 是未来规划,未进入当前可玩范围。不能把赠礼本地计数增加当作服务端体力到账。
红点、空态、文案与音效
设计红点由待处理申请、私聊未读、可领取赠礼分别产生,再聚合到社交入口;进入好友列表不自动消除申请或未读会话,已领/已处理才更新对应状态。无好友、无申请、无推荐/搜索结果、无黑名单分别展示对应空态与可行动入口,避免空白页面。
固定标题、按钮、提示、相对时间均本地化,玩家昵称/ID保持原文;文字长度适应不同语言,头像和未读标记不被长昵称遮盖。使用通用开页/切页/确认音,同意成功、拒绝普通点击、赠送/领取、发收消息及错误反馈各按动作播放;不另起好友背景音乐。
界面规格、文案与资源
好友页顶部显示当前/上限(如“好友37/100”),申请页显示申请数量(如“好友申请12”);推荐页包括搜索框、推荐好友标题及刷新按钮,刷新冷却时按钮不可点击。搜索结果可处于好友/已申请/可添加状态。好友条目支持上下滚动及长按/更多菜单(资料、删除、拉黑);资料页有返回、更多、头像和身份区,好友的主按钮为聊天。在线用高亮标记,离线弱化;原文超过7天统一“7天前在线”,另一文案表写“很久未上线”,显示口径待统一。
| 场景 | 来源规定的文案/反馈 |
|---|---|
| 无好友 | “还没有好友,快去认识新朋友吧!”及“添加好友”按钮 |
| 无申请/推荐/黑名单/聊天 | “暂无好友申请” / “暂时没有找到合适的玩家” / “黑名单为空” / “和好友打个招呼吧!” |
| 关系状态 | 在线、刚刚在线、X分钟前/小时前/天前在线、很久未上线、已申请、好友、已屏蔽 |
| 申请与关系反馈 | 好友申请已发送、已添加好友、好友数量已达上限、申请已拒绝、好友已删除、已加入黑名单、已解除拉黑 |
| 查询与消息反馈 | 搜索不到该玩家、刷新过于频繁、消息发送失败、举报已提交(后续) |
| 赠礼反馈 | 已赠送、赠送成功、领取成功、今日领取次数已达上限 |
| 删除确认 | 标题“删除好友”,正文“确定删除该好友吗?”,取消/确定 |
| 拉黑确认 | 标题“加入黑名单”,正文说明不再收到该玩家申请和聊天,取消/确定 |
| 全拒确认 | 标题“全部拒绝”,正文“确定拒绝全部好友申请吗?”,取消/确定 |
美术资源包括好友入口及四页签、搜索/刷新/加号、在线/聊天/未读/更多、删除/拉黑/举报、赠送/领取/求助图标;页面背景、四类列表底板、资料面板、聊天气泡、输入框、页签选中/未选中态、红点/数字底板及空态插图。后续举报/求助资源不应提前变成可点击的已实现功能。文本表的“全部领取”入口也需核实,不能由一键赠送自动推定一键领取已接通。
配置与统计设计
除了容量表,推荐配置还包括等级/关卡区间、活跃范围、候选池、重复展示延迟、跨服范围;快捷语配置为 ID、文案key、顺序、启用、解锁条件(是否在当前文本版开放见聊天页)。以下为原方案统计契约,未发现本次已接入的证据:
| 事件 | 字段/口径 |
|---|---|
friend_page_open | source、friend_count、request_count、unread_count |
friend_tab_click | tab(friend/request/add/blacklist)、friend_count |
friend_request_send | target_uid、source(recommend/search/profile)、result、fail_reason |
friend_request_handle | target_uid、action(accept/reject)、source(single/batch)、result |
friend_recommend_refresh | refresh_count、result_count |
friend_search | search_type(uid/nickname)、has_result、result_count;不含原始关键词 |
friend_delete | target_uid、friend_duration、result(success/cancel) |
friend_block / friend_unblock | target_uid、relation/source/result;解除记录block_duration |
friend_profile_open | target_uid、relation、source |
friend_chat_open / friend_chat_send | target_uid、unread_count/source;发送记录message_type、message_length、result,不含正文 |
friend_chat_mute / friend_report | target_uid、action;举报report_type/source/result,后续范围 |
friend_gift_send / friend_gift_receive | target_uid或sender_uid、gift_type、daily_send_count或daily_receive_count |
friend_help_request / friend_help_complete | help_type、daily_request_count/friend_count;target_uid/reward_id/daily_help_count,后续范围 |
当前实现与缺口
frontend 7f0636c9 的 Features/Social/Model/SocialModel.cs 在初始化和读取中调用 EnsureFakeSeeded,填充模拟世界消息、好友、私聊、申请和推荐池;推荐固定4人轮换。源码确实已有四页签、申请/拉黑/删除、赠礼和会话相关 Command 入口,但这些界面数据不能证明真实对端存在。
Features/Social/RedDot/SocialRedDotHandler.cs 当前聚合申请数+私聊未读,尚未包含赠礼;SocialFriendConfig 默认好友/黑名单100、每日领取20。Infrastructure/Nakama 中存在好友/聊天服务代码,2026-09-08 设计说明仍要求业务端回填 nakamaKey、username、worldRoomName、nakamaUserId,并提供搜索、推荐、申请生命周期、拉黑和赠礼能力。当前私聊/世界发送命令仍本地追加,详见聊天页,不能用 Nakama 类存在覆盖接线缺口。
未确认项包括真实双向关系与服务器容量、申请7天/24小时规则、在线时间与排序、跨设备未读、赠礼日切及资产到账;模拟消息中的公会战、组队等文本不是功能存在证据。
来源与现有测试入口
整合旧 social-chat-guild-friend.md 的社交边界;飞书 Wc0UdS9nDoM43PxzsYUc1wlbnvg 全部好友设计、UI/参数/统计表及 AZIgdFJbxo7no2xBUvbcSIZRnng 交叉规则(阅读件2026-10-13);frontend Infrastructure/Nakama/Nakama社交模块-客户端设计.md 的产品规则及第13节决策、上述 Social 源码。飞书大量表格截图已重组为上述规则表,不以图片附件代替正文。
当前可观察入口为社交→好友/申请/添加/黑名单;尚无本次真实服务联调结果,未定位独立完整好友测试入口。未新增或扩写测试。本地验证:根据项目策略禁止执行。