# 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 全部修完再合入,**不要在评审发现的问题未修前再叠加新功能**。