facc04aa65
本提交为 .git 对象库损坏后的重建提交,内容等价于原先三个本地提交 (5e2fd4c2 / 57a53c98 / 5d7e1873)的累积结果,未做任何额外改动。 一、docs 结构整改(整改 #14) 根因:重构时新结构为 untracked 文件,执行 git stash(未带 -u)未纳入, 随后 git reset 拉回 HEAD 旧 tracked 树,导致旧树复活、新旧两棵目录 树并存于 docs/,共 791 文件、双分类体系冲突。 修复动作: - b2 同名异主题文件改名迁移保全 9 个 - C 类 39 个孤立文件按主题正确归类 - A/B1 类 222 个重复文件删除(新结构已有内容副本) - 9 个旧独有空目录删除 - 270 处内部引用按 verified 映射改写 - 整改记录 #14 登记于 04-运维文档/部署运维 结果:docs 791 → 569 文件,顶层仅规范 8 类 + 治理文件,单树恢复。 残留:约 20 处指向从未存在文件的陈旧死链,归入独立文档卫生任务。 二、compose 双目录对齐(消除踩坑 A) - docker-compose.yml:nginx 前端挂载全部由根目录 frontend-*/dist 改为 src/frontend-*/dist(h5 / agent / admin / terminal) - docker-compose.dev.yml:dev 服务 build context 与卷同步改 src/ - 效果:本地 docker compose up 不再把根目录 stale dist 挂回, 与线上一致,分叉隐患消除(已 docker compose config 校验通过) 防复发铁律: - 重构须提交;仓库修复须 git stash -u 或先 commit - 新结构须 git add 并提交,避免再次 untracked 复活 - H5 改动只动 src/frontend-h5/,禁改根目录遗留 frontend-*/
4.7 KiB
4.7 KiB
智能IT支持服务台 - 版本更新说明
版本: v1.1.0 更新日期: 2026-06-14 文档状态: 待审核
一、本次更新内容
1.1 新增功能
| 功能 | 说明 | 优先级 |
|---|---|---|
| 消息撤回 | 2分钟内可撤回自己的消息 | P0 |
| 消息删除 | 删除自己的消息 | P0 |
| 消息状态 | 支持 sending/sent/delivered/read/recalled 状态 | P0 |
| 标记已读 | 一键标记会话已读 | P1 |
| 图片上传 | 支持图片上传(≤10MB) | P1 |
| 文件上传 | 支持文件上传(≤10MB) | P1 |
1.2 架构优化
| 优化项 | 说明 |
|---|---|
| Health Check | 所有容器已配置健康检查 |
| 自动重启 | 容器崩溃自动重启(restart: unless-stopped) |
| AI Gateway 设计 | 预留多模型切换架构 |
1.3 安全增强
| 功能 | 说明 |
|---|---|
| OTP 双因素认证 | 访问管理后台时二次验证 |
| 操作审计 | 关键操作日志记录(规划中) |
二、需要同步的代码
2.1 后端文件
| 文件 | 改动 | 说明 |
|---|---|---|
app/models/message.py |
修改 | 添加 status、recallable_until 字段 |
app/api/messages.py |
修改 | 添加撤回/删除/标记已读/上传 API |
app/api/ws_manager.py |
修改 | 添加消息状态广播 |
docker-compose.yml |
修改 | healthcheck 已配置 |
2.2 数据库变更
-- 需要执行的 SQL 迁移
ALTER TABLE messages ADD COLUMN status VARCHAR(20) DEFAULT 'sent';
ALTER TABLE messages ADD COLUMN recallable_until TIMESTAMP;
2.3 前端文件(如果有)
| 文件 | 说明 |
|---|---|
| 消息操作菜单 | 撤回/删除按钮 |
| 消息状态显示 | 状态图标 |
| 已读标记 | 一键已读 |
三、部署步骤
3.1 本地打包
# 后端打包
cd backend
docker build -t wecom-it-desk-backend:latest .
# 导出镜像
docker save wecom-it-desk-backend:latest -o wecom-it-desk-backend.tar
3.2 服务器部署
# 1. 上传镜像到堡垒机
# 堡垒机: sxn@10.212.189.210:2222 (OTP)
# 目标路径: /tmp/
# 2. SSH 到正式服务器
ssh sxn@10.212.189.210 -p 2222
ssh 10.90.5.110
# 3. 导入镜像
docker load -i /tmp/wecom-it-desk-backend.tar
# 4. 解决容器冲突(重要!)
docker rm -f wecom_it_redis wecom_it_backend wecom_it_postgres wecom_it_nginx 2>/dev/null
# 5. 重新启动
docker compose -p root up -d
# 6. 执行数据库迁移
docker compose exec backend python -c "from app.database import engine; engine.execute('ALTER TABLE messages ADD COLUMN status VARCHAR(20) DEFAULT 'sent'')"
四、验证清单
4.1 健康检查
| 检查项 | 命令 | 预期结果 |
|---|---|---|
| 后端服务 | curl -s http://localhost:8000/health |
{"status": "ok"} |
| Nginx | curl -s http://localhost:80/itdesk/health |
{"status": "ok"} |
| 数据库 | docker compose exec backend python -c "from app.database import engine; print('OK')" |
OK |
| Redis | docker compose exec redis redis-cli ping |
PONG |
4.2 API 测试
| API | 方法 | 测试命令 |
|---|---|---|
| 撤回消息 | POST | curl -X POST http://localhost:8000/api/messages/{id}/recall |
| 删除消息 | DELETE | curl -X DELETE http://localhost:8000/api/messages/{id} |
| 标记已读 | POST | curl -X POST http://localhost:8000/api/conversations/{id}/mark-read |
| 图片上传 | POST | curl -X POST -F "file=@test.jpg" http://localhost:8000/api/messages/image |
4.3 功能测试
| 功能 | 测试场景 | 预期结果 |
|---|---|---|
| 消息发送 | 发送文本消息 | 消息正常显示 |
| 消息撤回 | 2分钟内撤回 | 状态变为 recalled |
| 消息撤回 | 超过2分钟 | 返回 403 错误 |
| 标记已读 | 点击已读 | 所有消息标记为已读 |
五、已知问题与限制
5.1 待解决
| 问题 | 状态 | 说明 |
|---|---|---|
| 容器冲突 | 进行中 | 需指定项目名 -p root |
| 前端同步 | 待确认 | 可能需要更新前端代码 |
5.2 已知限制
| 限制 | 说明 |
|---|---|
| 单节点部署 | MVP 阶段保持单节点 |
| 文件大小 | 单文件 ≤10MB |
| 撤回时间 | 2分钟后不可撤回 |
六、回滚方案
如果部署失败,执行:
# 停止服务
docker compose -p root down
# 恢复旧镜像(如果有备份)
docker load -i wecom-it-desk-backend-old.tar
# 使用备份的配置启动
docker compose -p root up -d
七、联系人
| 角色 | 联系人 | 说明 |
|---|---|---|
| 产品负责人 | 许清楚 | PRD 确认 |
| 技术负责人 | 寇豆码 | 代码审查 |
| QA 负责人 | 严过关 | 测试验证 |
| 运维负责人 | 宋献 | 部署执行 |
文档版本: 1.0 审核状态: 待审核