You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.6 KiB
4.6 KiB
沟通姓名与头像同步:前端增量对接
日期:2026-10-28。对象:求职者端/企业端前端联调人员。本次为本地后端改动,尚未提交、推送或发布;线上 Jenkins #107 不包含本次修复。 本文沿用已确认的头像/Logo 对接结构,作为原文档的增量,不改写历史验收状态。
1. 展示规则
- 对方为求职者:
contactName优先使用当前个人资料realName;缺失、空串或纯空白时回退账号nickname,再回退“求职者”。姓名/昵称首尾空白去除。 - 对方为企业:
contactName继续使用公司名称,avatarUrl继续使用公司 Logo,不替换为 HR 的个人头像或姓名。 - DIRECT 和 TALENT_INVITATION 的会话摘要均按上述非匿名规则展示姓名和头像。
- 修改资料姓名不强行改写账号 nickname;修改头像不影响公司 Logo。
- 没有新增手机号、邮箱、简历正文、用户 ID 等展示字段。原消息 senderScope、已有内部 ID 隐藏和简历权限规则保持不变。
2. 接口与权限
API 路径、认证和响应字段不变,无新增迁移或依赖:
| 接口 | 用途 |
|---|---|
PUT /api/v1/profile/me |
保存资料姓名 realName;已有在线简历的账号继续遵循 revision 规则,不能为了改名绕过并发保护 |
| 现有在线简历保存接口 | 保存 basicInfo.realName,并同步到资料;沿用既有完整保存及 revision 契约 |
GET /api/v1/conversations |
返回最新会话摘要,前端使用 contactName、avatarUrl |
GET /api/v1/conversations/{id} |
返回最新会话详情摘要,字段来源与列表一致 |
POST /api/v1/auth/me/avatar |
上传本人头像,沿用原上传协议,返回新的头像版本 URL |
GET /api/v1/profile-images/{imageId} |
读取头像,仍携带正常 access token;公司 Logo 的原公开规则不变 |
不新增让前端传 userId 查他人姓名的能力。非成员不能读取会话;邀约头像读取仍检查成员、拉黑、撤回、企业认证及已有企业接受/匹配沟通授权。移除展示匿名不等于关闭这些门禁。
图片/文件附件继续只允许 DIRECT 会话。不能通过本次头像调整扩大 TALENT_INVITATION 的附件权限。
3. 缓存更新与前端修改点
- 修改姓名后,等待保存接口真正成功;409 冲突、网络错误或服务端失败不能假装已保存。保存成功后刷新个人资料、在线简历的相应缓存。
- 会话列表和详情统一使用后端 contactName,不再用历史路由参数、第一次登录的 nickname、硬编码名字或旧消息快照长期覆盖。
- 企业端进入/回到沟通页、打开会话详情时重新读取摘要,更新标题与头像。若已有统一轮询/刷新机制,应让它同步合并这两个字段。
- 本次未新增“对方改名”WebSocket 事件。用户 A 改名后,不能只刷新 A 本机就声称企业 B 已刷新;B 应在上述刷新点重新拉取。要实现当前打开页面的即时更新,需前端接入既有刷新机制或另行设计事件。
- 头像更换后使用后端最新版本 URL,并携带认证头;旧 URL 失效不能一直沿用。姓名变化不需要拼接虚假的头像缓存版本。
- 切账号清理会话缓存;异步请求按账号/会话 ID 或请求代次保护,旧响应不能覆盖新账号、新会话的标题与头像。
- 名称/头像加载失败保留明确错误或合理占位,不显示假名字,不从手机号推断姓名。
4. 联调验收
- 求职者修改 realName 后,企业重新 GET 列表、详情,contactName 均返回新值;再次修改也更新,原 nickname 不被强行覆盖。
- 无资料记录、null/空白 realName 时回退 nickname;两者均空白时为“求职者”。
- DIRECT/TALENT_INVITATION 摘要遵循同一显示规则;企业一侧仍显示公司名称和 Logo。
- 邀约会话的已授权成员可加载个人头像;匿名、非成员、拉黑后读取仍拒绝;企业未获沟通授权或投递撤回不因展示规则变化而获权。
- 点击同一个会话、返回列表、重新进入、切账号等场景,标题/列表名字/头像不互相覆盖。
- 邀约附件仍不能通过 DIRECT 附件接口读取或发送;不新增个人敏感字段。
请前端回传实际请求/响应(去除 Token 和个人信息)、姓名保存后的两端录屏/截图、缓存刷新方式、类型检查和测试结果。后端定向测试、真实 MySQL、同次 JAR 黑盒、前端实机与线上发布应分别登记,不能把之前 #107 的通知发布验收当作本次姓名修复也已上线。