6.6冲刺

昨天的成就: 顺利通过了Sprint 3功能验收(准确率88%,满意度92%),修复了导出路径和分页性能问题,完成了测试环境部署,耗时8小时
遇到的困难: 验收演示紧张情绪,数据库迁移表冲突,PM2环境变量未加载,Nginx反向代理端口配置错误
今天的任务: 召开Sprint回顾会议,整理项目文档归档,团队庆祝与休整
📝 工作代码展示

  1. PM2 进程管理配置 (ecosystem.config.js)
    javascript
    module.exports = {
    apps: [{
    name: 'ai-service',
    script: 'src/server.js',
    instances: 2, // 集群模式,利用多核CPU
    exec_mode: 'cluster', // 集群模式
    autorestart: true, // 自动重启
    watch: false, // 生产环境关闭文件监听

    // 开发环境
    env: {
    NODE_ENV: 'development',
    PORT: 3002
    },

    // 生产环境
    env_production: {
    NODE_ENV: 'production',
    PORT: 3002,
    DASHSCOPE_API_KEY: process.env.DASHSCOPE_API_KEY // 从系统环境变量继承
    },

    // 日志配置
    error_file: './logs/err.log',
    out_file: './logs/out.log',
    log_date_format: 'YYYY-MM-DD HH:mm:ss',

    // 资源限制
    max_memory_restart: '500M', // 内存超过500MB自动重启防止泄漏
    min_uptime: '10s', // 最小运行时间
    max_restarts: 10 // 最大重启次数
    }]
    };

  2. Nginx 反向代理配置 (/etc/nginx/conf.d/ai-service.conf)
    nginx
    server {
    listen 80;
    server_name test-server.example.com;

    前端静态资源 (React SPA)

    location / {
    root /var/www/construction-mgmt;
    index index.html;
    try_files $uri $uri/ /index.html; # 支持 React Router 历史模式

    缓存策略

    location ~* .(js|css|png|jpg|jpeg|gif|ico)$ {
    expires 7d;
    add_header Cache-Control "public, immutable";
    }
    }

    AI 服务 API 代理

    location /api/ai/ {
    proxy_pass http://localhost:3002/api/;

    关键 Header 转发

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    超时设置(AI识别较慢,需延长)

    proxy_connect_timeout 60s;
    proxy_send_timeout 60s;
    proxy_read_timeout 120s;

    大文件上传支持

    client_max_body_size 50M;
    }

    主系统其他 API

    location /api/ {
    proxy_pass http://localhost:3001/api/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    }

    日志记录

    access_log /var/log/nginx/ai-service-access.log;
    error_log /var/log/nginx/ai-service-error.log warn;
    }

  3. 自动化部署脚本 (deploy.sh)
    bash

!/bin/bash

set -e

echo " 开始部署 AI Service 到测试环境..."

1. 本地构建

echo "[1/6] 本地构建代码..."
npm run build

2. 打包并上传

echo "[2/6] 打包并上传到服务器..."
tar -czf dist.tar.gz dist/ src/ package.json package-lock.json ecosystem.config.js .env.example
scp dist.tar.gz user@test-server:/tmp/ai-service/
ssh user@test-server "cd /tmp/ai-service && tar -xzf dist.tar.gz"

3. 服务器端安装依赖

echo "[3/6] 安装生产依赖..."
ssh user@test-server "cd /opt/ai-service && npm install --production"

4. 数据库迁移

echo "[4/6] 执行数据库迁移..."
ssh user@test-server "cd /opt/ai-service && npx sequelize db:migrate"

5. 重启服务

echo "[5/6] 重启 PM2 服务..."
ssh user@test-server "pm2 reload ecosystem.config.js --env production"

6. 健康检查

echo "[6/6] 验证服务状态..."
HTTP_CODE=$(ssh user@test-server "curl -s -o /dev/null -w '%{http_code}' http://localhost:3002/health")

if [ "$HTTP_CODE" -eq 200 ]; then
echo "✅ 部署成功!服务运行正常。"
echo "访问地址: http://test-server.example.com"
else
echo "❌ 部署失败!HTTP 状态码: $HTTP_CODE"
exit 1
fi

清理临时文件

rm dist.tar.gz
4. Sprint 回顾会议记录模板 (docs/Sprint3-Retrospective.md)
markdown

Sprint 3 回顾会议记录

日期: 2026-06-06
参与人: 韩磊(开发)、张经理(产品)、李工(测试)、王总(项目经理)
时长: 1小时

1. 数据回顾

  • 目标达成率: 100% (15/15 任务完成)
  • 识别准确率: 88% (目标 ≥85%) ✅
  • 用户满意度: 92% (目标 ≥85%) ✅
  • Bug 总数: 5个 (严重 0, 一般 2, 轻微 3)

2. Keep (做得好的地方)

  1. 测试驱动开发 (TDD): 提前发现了Windows路径和JSON序列化等边界问题。
  2. 提示词迭代优化: 通过3轮A/B测试,准确率从72%提升到88%。
  3. 完善的文档体系: 降低了用户学习成本,培训反馈极佳。
  4. 并发容错设计: Promise.allSettled 确保了批量识别的高可用性。

3. Problem (需要改进的地方)

  1. 第三方服务依赖风险: 阿里云API偶尔波动,演示时曾出现503错误。
  2. 性能优化滞后: 历史记录页面在数据量大时加载慢,后期才优化。
  3. 跨平台测试不足: Windows路径问题在开发后期才发现。

4. Try (下次尝试的新方法)

  1. 建立 Mock 服务器: 模拟第三方API响应,确保演示和开发不受外部影响。
  2. 引入性能基准测试: 在开发初期就设定性能指标(如加载时间<1s)。
  3. 自动化部署流水线: 编写标准部署脚本,减少人为配置错误(如Nginx端口)。
posted @ 2026-06-18 21:34  sas1996  阅读(5)  评论(0)    收藏  举报