Skip to content

Contact Avatars

Haisu Zuo edited this page Oct 9, 2026 · 1 revision

联系人头像

系统从企业微信当前资料读取内部成员的 user/get.avatar 和外部联系人的 externalcontact/get.external_contact.avatar。头像不是人工上传资料,也不影响 身份、名称、备注、权限或会话归档。

更新与回退

  • 外部联系人沿用已有的变更回调、增量刷新和每日对账;每次详情同步都会刷新头像。
  • 内部归档席位由每日有界后台对账刷新;backend/scripts/sync_contact_avatars_once.py 可用于隔离的非生产历史回填,必须设置 RND371_AVATAR_BACKFILL=1,并且会拒绝 APP_ENV=production。生产回填需要单独批准。
  • 企业微信未返回头像、权限不足、头像 URL 过期、网络失败、响应不是允许的图片,或 图片过大时,页面显示稳定的姓名首字母;姓名也不可用时显示匿名 ?。不会显示破图。

隐私与访问边界

企业微信源 URL 是仅服务端短暂使用的输入:浏览器、HTML、公开 API 和日志均不会 收到该 URL、access token、签名参数或存储对象 key。服务端只接受 HTTPS 的 WeCom CDN 允许来源,不跟随重定向,限制内容类型、图片签名、2 MiB 大小和网络超时,然后把通过 验证的图片写入现有私有存储。

浏览器仅请求 /api/admin/avatars/{internal|external}/{id}。该端点要求当前有效的控制台 会话,并先以会话 tenant 过滤联系人;跨租户、未知、离职/禁用和缓存缺失均统一返回 404。响应为私有、每次重新鉴权的缓存,避免租户切换或撤权后继续使用旧权限访问。

Clone this wiki locally