3.1 KiB
3.1 KiB
workbuddy 评审反馈 — 2026-06-14 消息相关推送
推送内容: 消息撤回/删除/状态/已读/图片上传/文件上传(版本说明 v1.1.0)
评审日期: 2026-06-14
评审人: Claude
主报告: D:\资料\03-项目开发\wecom_it_smart_desk\docs\评审报告\workbuddy-2026-06-14-消息优化.md
⭐ 给 workbuddy 的关键反馈
- 本次推送 6/13 = 46% 是 P0 鉴权漏洞 —— 必须加 "端点必须 Depends 鉴权" 自检
- 版本说明文档有 4 处错误,含
-p root正是用户生产事故的根因 - 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)
- 部署步骤 5 删除
-p root标志 —— 这是用户 6-14 生产事故的根因 - 部署步骤 6 SQL 引号未转义 —— 改用 Alembic 迁移,不要手动 ALTER
- 2.1 ws_manager 文档与代码不符(实际未实现状态广播) → 改 "规划中" 或 "本次未实现"
- 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 全部修完再合入,不要在评审发现的问题未修前再叠加新功能。