bea288e414
== 已部署上线 (9项) == - 代办事项真实数据源集成 (企微审批API 8bug修复链) - H5/坐席端 Logo样式统一+绿色背景 - 视频引导页修复 (localStorage key v2) - 坐席端 v9 Vue版本修复 (ElMessage._context) - 截图按钮 v10 修复 (getDisplayMedia user gesture) - 扫码样式恢复+H5扫码登录跳转修复 - H5截图快捷键提示 == 代码完成待部署 (3项) == - 知识迭代3Bug修复 (#8 POST端点/#7 MERGE幂等/#6 过期检查) - 会议室预定-小鱼易联终端 (40文件, 40/40测试通过) - IT资产升级审批推送 (asset_service.py) == 需求文档 (2项) == - 坐席端AI辅助消息框-PRD (4项新功能确认) - 坐席端布局优化建议 v2.0 (7天计划) == 新增文档 == - 日报-2026-07-11.md - 知识迭代Bug修复报告-20260711.md - 会议室预定-部署指南.md - CHANGELOG.md 更新 == 测试 == - test_todo_integration.py: 40/40 - test_meetingroom.py: 40/40 - test_bugfix_ki_suggestions.py: 21/21
31 lines
1.5 KiB
Markdown
31 lines
1.5 KiB
Markdown
# 头像修复完成 — 后端代理方案
|
||
|
||
## 一句话
|
||
通过新建后端头像代理端点 `/api/avatar/proxy`,不修改 nginx 安全头,解决 COEP / Mixed Content / CSP 三层拦截导致的头像不显示问题。
|
||
|
||
## 验证结果
|
||
- **API 代理**:✅ 正常返回 image/jpeg(42KB / 65KB 测试均通过)
|
||
- **浏览器控制台**:✅ 零 COEP / Mixed Content / CSP 错误
|
||
- **Network 请求**:✅ 3 个头像全部通过 `/api/avatar/proxy?url=...` 200 加载
|
||
- **视觉验证**:✅ 坐席工作台头像正常显示(左侧会话列表 + 顶部导航栏)
|
||
|
||
## 修改文件
|
||
| 文件 | 操作 |
|
||
|-----|------|
|
||
| `backend/app/services/avatar_service.py` | 修改(新增 `wrap_avatar_url` + HTTP→HTTPS 转换) |
|
||
| `backend/app/services/session_service.py` | 修改(3 个头像返回路径统一包装) |
|
||
| `backend/app/api/avatar.py` | 新建(代理端点 + SSRF 白名单) |
|
||
| `backend/app/api/router.py` | 修改(注册路由) |
|
||
|
||
## 已部署
|
||
- 4 个文件已上传 → 复制到 `/opt/wecom-it-desk/app/` → `docker compose restart backend`
|
||
- Redis 头像缓存 `employee:avatar:*` 已清除(3 个 key)
|
||
- 代理端点即时生效
|
||
|
||
## 关于"获取坐席列表失败"
|
||
本次浏览器验证未复现该错误。如持续出现,需检查后端日志中 `/api/agents` 的具体报错。
|
||
|
||
## 交付物
|
||
- `deliverables/software-bugfix-avatar-coep-delivery-2026-07-10.md` — 详细修复报告
|
||
- 截图 `screenshot-1783683005062.png` — 验证截图
|