# workbuddy 评审反馈 — 2026-06-14 消息相关推送

**推送内容**: 消息撤回/删除/状态/已读/图片上传/文件上传(版本说明 v1.1.0)
**评审日期**: 2026-06-14
**评审人**: Claude
**主报告**: `D:\资料\03-项目开发\wecom_it_smart_desk\docs\评审报告\workbuddy-2026-06-14-消息优化.md`

---

## ⭐ 给 workbuddy 的关键反馈

1. **本次推送 6/13 = 46% 是 P0 鉴权漏洞** —— 必须加 "端点必须 Depends 鉴权" 自检
2. **版本说明文档有 4 处错误**,含 `-p root` 正是用户生产事故的根因
3. **5 个端点完全没有鉴权依赖** —— 新增端点请用以下模式之一:
   - 坐席端: `agent: Agent = Depends(get_current_agent)` (来自 `app.api.agents`)
   - H5 员工端: `employee_id: str = Depends(_get_current_employee)` (来自 `app.api.h5`)
   - 上传通用: 需新建 `get_current_user_id` 兼容两端

## 🔴 P0 已修(本地代码,本评审完成)

| # | 端点 | 修复要点 |
|---|---|---|
| P0-1 | GET /h5/conversations/{id}/participants | is_creator/is_participant 校验 |
| P0-2 | POST /messages/{id}/recall | agent 鉴权 + sender_id 校验 |
| P0-3 | DELETE /messages/{id} | 同上 |
| P0-4 | POST /conversations/{id}/mark-read | agent 鉴权 + assigned/collaborator + SQL `is_(False)` |
| P0-5 | POST /messages/image | agent 鉴权 |
| P0-6 | POST /messages/file | 同上 |

## 🟡 P1 请 workbuddy 跟进

| # | 项 | 行动 |
|---|---|---|
| P1-1 | upload 路径在容器本地 | 改 volume mount(参考 nginx 静态文件挂载模式) |
| P1-2 | SQL 迁移未走 Alembic | **生成对应迁移脚本**:`alembic revision --autogenerate -m "add message status and recallable_until"` |
| P1-3 | docker-compose backend healthcheck 用 curl | 改用 Python 一行:`python -c "import socket; s=socket.socket(); s.connect(('localhost',8000))"` |
| P1-4 | ws_manager 没实现"消息状态广播" | 实现方法(如 `broadcast_message_status(conv_id, msg_id, status)`) |

## 🟢 P2 请 workbuddy 跟进

| # | 项 | 行动 |
|---|---|---|
| P2-2 | upload 写文件非原子 | 先写 `*.tmp` 再 rename |
| P2-3 | upload 返回原始文件名 | URL encode 或 XSS 过滤 |

## 📄 文档修订清单(`docs/IT智能服务台-版本更新说明-20250614.md`)

1. **部署步骤 5** 删除 `-p root` 标志 —— 这是用户 6-14 生产事故的根因
2. **部署步骤 6** SQL 引号未转义 —— 改用 Alembic 迁移,不要手动 ALTER
3. **2.1 ws_manager** 文档与代码不符(实际未实现状态广播) → 改 "规划中" 或 "本次未实现"
4. **2.1 docker-compose** "healthcheck 已配置" 不准确 → 加注 backend curl 坑

## 🔁 流程建议

- 推送前自检清单:
  - [ ] 新增/修改端点是否有 `Depends(...)` 鉴权?
  - [ ] 数据库 schema 变化是否有 Alembic 迁移?
  - [ ] Docker 配置变化是否本地起得了容器?
  - [ ] 版本说明与代码 diff 是否完全一致?
- 强烈建议:workbuddy 推送前跑 `pre-commit-review.py`(可由 Claude 生成),**P0 数量超 0 拒绝推送**

---

**下次推送窗口**: 建议等 P1-1~4 + P2-2/3 全部修完再合入,**不要在评审发现的问题未修前再叠加新功能**。
