MBE 开发、部署、发布流程可视化


🏗️ 环境架构图

┌─────────────────────────────────────────────────────────────┐
│                     用户访问层                               │
├──────────────────────┬──────────────────────────────────────┤
│  生产环境              │  开发环境                            │
│  mbe.hi-maker.com    │  dev.hi-maker.com                   │
│  app.hi-maker.com    │  dev-app.hi-maker.com               │
└──────────┬───────────┴──────────┬───────────────────────────┘
           │                      │
    ┌──────▼──────┐        ┌─────▼──────┐
    │ mbe-tunnel  │        │ mbe-tunnel-dev │
    └──────┬──────┘        └─────┬──────┘
           │                     │
    ┌──────▼───────┐       ┌────▼─────┐
    │  mbe-api     │       │ mbe-api-dev │
    │  (GPU)       │       │             │
    │  Port: 8000  │       │ Port: 8001  │
    └──────┬───────┘       └────┬─────┘
           │                    │
    ┌──────▼──────┬─────────────▼────┐
    │ mbe-postgres│  mbe-postgres-dev │
    │ mbe-redis   │  mbe-redis-dev    │
    └─────────────┴──────────────────┘

🔄 完整开发流程

[1. 需求]
    ↓
[2. 设计]
    ↓
[3. 开发] ──→ 本地环境 (localhost:8001)
    ↓           ├── 编码
    │           ├── 单元测试
    │           └── 本地验证
    ↓
[4. 代码审查] ──→ GitHub PR
    ↓              ├── 自动检查 (CI)
    │              ├── 人工审查
    │              └── 修改反馈
    ↓
[5. 集成] ──→ develop 分支
    ↓           └── 合并代码
    ↓
[6. 开发环境部署] ──→ dev.hi-maker.com
    ↓                  ├── 自动部署
    │                  ├── 集成测试
    │                  └── 功能验证
    ↓
[7. 发布准备]
    ↓
[8. 生产环境部署] ──→ mbe.hi-maker.com
    ↓                  ├── 备份数据
    │                  ├── 滚动部署
    │                  └── 健康检查
    ↓
[9. 监控] ──→ 日志/指标/用户反馈
    ↓
[10. 反馈优化] ──→ 回到 [1. 需求]

🌊 Git 分支流程

main (生产) ──────────────●──────────●─────────→
                          ↑          ↑
                       v1.1.0     v1.2.0
                          ↑          ↑
                    release/v1.1.0  release/v1.2.0
                          ↑          ↑
develop ─────●─────●─────●──────●───●──────●────→
             ↑     ↑     ↑      ↑   ↑      ↑
             │     │     │      │   │      │
feature/A ───┘     │     │      │   │      │
feature/B ─────────┘     │      │   │      │
bugfix/C ────────────────┘      │   │      │
feature/D ──────────────────────┘   │      │
feature/E ──────────────────────────┘      │
hotfix/F ──────────────────────────────────┘

👥 团队协作流程

产品经理 (PM)
    │
    ├─→ 需求文档 ──→ Tech Lead
    │                   │
    │                   ├─→ 技术评审
    │                   │
    │                   ├─→ 任务分配
    │                   ↓
    │            ┌──────┴──────┬──────────┬─────────┐
    │            ↓             ↓          ↓         ↓
    │      后端开发1      后端开发2   前端开发   测试工程师
    │            │             │          │         │
    │            ├─→ 开发      │          │         │
    │            ├─→ 单元测试  │          │         │
    │            └─→ 提交PR ───┴─→ 代码审查 ←───────┘
    │                          │
    │                          ├─→ 合并 → develop
    │                          │
    │                          ├─→ 部署 → dev环境
    │                          │
    │                          └─→ 集成测试
    │                              │
    │                              ├─→ 测试通过
    │                              │
    └─← 验收确认 ←──────────────────┘
                                   │
                                   ├─→ 准备发布
                                   │
                                   └─→ 生产部署

🧪 测试流程图

代码提交
    ↓
┌───────────────────┐
│   单元测试         │  ← 本地环境
│   (Unit Tests)    │     pytest
└─────────┬─────────┘
          ↓ PASS
┌───────────────────┐
│   代码审查         │  ← GitHub PR
│   (Code Review)   │     人工审查
└─────────┬─────────┘
          ↓ APPROVED
┌───────────────────┐
│   集成测试         │  ← 开发环境
│   (Integration)   │     自动化测试
└─────────┬─────────┘
          ↓ PASS
┌───────────────────┐
│   端到端测试       │  ← 开发环境
│   (E2E Tests)     │     用户场景测试
└─────────┬─────────┘
          ↓ PASS
┌───────────────────┐
│   性能测试         │  ← 开发环境
│   (Performance)   │     压力测试
└─────────┬─────────┘
          ↓ PASS
┌───────────────────┐
│   安全扫描         │  ← 自动化
│   (Security)      │     漏洞扫描
└─────────┬─────────┘
          ↓ PASS
    [准备发布]

🚀 部署流程图

[开发完成]
    ↓
┌────────────────┐
│ 1. 前置检查     │
│  - 测试通过     │
│  - 审查完成     │
│  - 备份准备     │
└────────┬───────┘
         ↓
┌────────────────┐
│ 2. 创建发布分支 │
│  release/v1.2.3│
└────────┬───────┘
         ↓
┌────────────────┐
│ 3. 备份数据     │
│  - 数据库       │
│  - 配置文件     │
└────────┬───────┘
         ↓
┌────────────────┐
│ 4. 构建镜像     │
│  docker build  │
└────────┬───────┘
         ↓
┌────────────────┐
│ 5. 数据库迁移   │
│  (如需要)       │
└────────┬───────┘
         ↓
┌────────────────┐
│ 6. 部署更新     │
│  docker-compose│
│  up -d         │
└────────┬───────┘
         ↓
┌────────────────┐
│ 7. 健康检查     │
│  /health       │
└────────┬───────┘
         ↓
      成功? ──No──→ [回滚]
         │
        Yes
         ↓
┌────────────────┐
│ 8. 功能验证     │
│  quick_test    │
└────────┬───────┘
         ↓
┌────────────────┐
│ 9. 监控观察     │
│  10-30分钟     │
└────────┬───────┘
         ↓
┌────────────────┐
│ 10. 发布完成    │
│  - 打tag        │
│  - 合并到main   │
│  - 通知团队     │
└────────────────┘

📅 Sprint 时间表

Week 1
├─ 周一
│  └─ 10:00-12:00 Sprint Planning
├─ 周二-周四
│  ├─ 10:00-10:15 每日站会
│  └─ 开发和测试
└─ 周五
   ├─ 10:00-10:15 每日站会
   └─ 15:00-16:00 技术分享

Week 2
├─ 周一-周三
│  ├─ 10:00-10:15 每日站会
│  └─ 开发和测试
├─ 周四
│  ├─ 10:00-10:15 每日站会
│  └─ 14:00-16:00 准备演示
└─ 周五
   ├─ 14:00-15:00 Sprint Review
   ├─ 15:00-16:00 Sprint Retrospective
   └─ 16:00-17:00 准备下个Sprint

🎯 实际案例流程图

System Prompt 优化项目

Day 1 (周一)
10:00 │ Sprint Planning
      │ - 确定任务: System Prompt优化
      │ - 目标: 法律引用覆盖率 40% → 80%
      ↓
11:00 │ 问题分析
      │ - 发现 system_prompt 为空
      │ - 知识库已足够丰富
      ↓
14:00 │ 方案设计
      │ - 设计 2000+字符 system_prompt
      │ - 创建文档: FINAL_SOLUTION.md
      ↓
      
Day 2 (周二)
10:00 │ 每日站会
      ↓
10:30 │ 本地开发
      │ - 创建 system_prompt_text.txt
      │ - 更新 experts/index.json
      ↓
14:00 │ 本地测试
      │ - 验证配置格式
      │ - 重启容器测试
      ↓
16:00 │ 提交代码
      │ - git commit
      │ - 创建 PR
      ↓

Day 3 (周三)
10:00 │ 每日站会
      ↓
10:30 │ 代码审查
      │ - Tech Lead 审查
      │ - 通过
      ↓
11:00 │ 合并到 develop
      ↓
11:30 │ 部署到开发环境
      │ - 重启 mbe-api-dev
      ↓
12:00 │ 集成测试
      │ - quick_test_lawyer.py (10个问题)
      ↓
14:00 │ 测试结果分析
      │ - 通过: 8/10
      │ - 知识库隔离: 100%
      │ - 法律引用: 100%
      ↓
15:00 │ 准备生产发布
      │ - 备份配置
      │ - 准备发布文档
      ↓
16:00 │ 部署到生产
      │ - 更新 system_prompt
      │ - 重启 mbe-api
      ↓
16:30 │ 生产验证
      │ - 运行测试
      │ - 监控日志
      ↓
17:00 │ 发布完成
      │ - 通知团队
      │ - 更新文档
      ↓
      ✅ 项目完成!

🔀 代码流转图

开发者本地
    │
    ├─→ feature分支开发
    │   └─→ 本地测试
    │       └─→ 提交到远程
    ↓
GitHub/GitLab
    │
    ├─→ 触发 CI/CD
    │   ├─→ 代码规范检查
    │   ├─→ 单元测试
    │   └─→ 构建Docker镜像
    ↓
代码审查
    │
    ├─→ Reviewer 审查
    │   ├─→ 提出建议
    │   └─→ 开发者修改
    ↓
合并到 develop
    │
    ├─→ 自动触发部署
    │   └─→ 部署到开发环境
    ↓
开发环境
    │
    ├─→ 集成测试
    │   ├─→ 自动化测试
    │   └─→ 手动功能测试
    ↓
测试通过
    │
    ├─→ 准备发布
    │   └─→ 创建 release 分支
    ↓
生产环境
    │
    ├─→ 手动部署
    │   ├─→ 备份数据
    │   ├─→ 更新代码
    │   └─→ 重启服务
    ↓
验证和监控
    │
    └─→ 发布完成

👥 团队协作流程

产品经理
    │
    ├─→ 需求文档
    ↓
Tech Lead
    │
    ├─→ 技术评审
    │   ├─→ 可行性分析
    │   ├─→ 工作量估算
    │   └─→ 风险评估
    ↓
Sprint Planning
    │
    ├─→ 任务分解
    │   ├─→ User Story
    │   ├─→ Technical Task
    │   └─→ Bug Fix
    ↓
任务分配
    │
    ├─→ 后端开发
    │   ├─→ API开发
    │   ├─→ 业务逻辑
    │   └─→ 数据库设计
    │
    ├─→ 前端开发
    │   ├─→ 界面开发
    │   ├─→ 交互优化
    │   └─→ 前端测试
    │
    └─→ 测试工程师
        ├─→ 测试用例设计
        ├─→ 自动化测试
        └─→ 性能测试
        
每日站会 (同步进度)
    │
    ├─→ 昨天完成
    ├─→ 今天计划
    └─→ 遇到阻碍
    
    ↓
持续开发和集成
    ↓
Sprint Review
    │
    ├─→ 功能演示
    ├─→ 产品验收
    └─→ 用户反馈
    
    ↓
Sprint Retrospective
    │
    ├─→ 总结经验
    ├─→ 改进措施
    └─→ 下个Sprint规划

🚨 应急响应流程

[故障发现]
    │
    ├─→ 自动告警
    │   ├─→ 错误率告警
    │   ├─→ 响应时间告警
    │   └─→ 服务down告警
    │
    └─→ 用户报告
        └─→ Slack/工单
        
        ↓
    
[快速评估]
    │
    ├─→ P0: 生产服务完全不可用
    │   └─→ 立即响应
    │
    ├─→ P1: 核心功能异常
    │   └─→ 1小时内响应
    │
    └─→ P2/P3: 一般问题
        └─→ 正常流程处理
        
        ↓
        
[P0/P1 紧急流程]
    │
    ├─→ 5分钟内
    │   ├─→ Slack #emergency 通知
    │   ├─→ 电话通知 Tech Lead
    │   └─→ 组建应急小组
    │
    ├─→ 15分钟内
    │   ├─→ 快速回滚到稳定版本
    │   ├─→ 验证服务恢复
    │   └─→ 通知用户
    │
    ├─→ 1小时内
    │   ├─→ 问题根因分析
    │   ├─→ 收集日志和数据
    │   └─→ 制定修复方案
    │
    └─→ 24小时内
        ├─→ 开发修复补丁
        ├─→ 测试验证
        └─→ 发布热修复
        
        ↓
        
[事后总结]
    │
    ├─→ 编写事故报告
    │   ├─→ 问题描述
    │   ├─→ 影响范围
    │   ├─→ 根本原因
    │   ├─→ 解决方案
    │   └─→ 预防措施
    │
    └─→ 流程改进
        ├─→ 更新监控告警
        ├─→ 完善测试用例
        └─→ 优化部署流程

📊 质量保证流程

代码开发
    ↓
┌────────────────────┐
│  自动化检查         │
│  - 代码规范(flake8)│
│  - 类型检查(mypy)  │
│  - 单元测试(pytest)│
│  - 覆盖率检查      │
└─────────┬──────────┘
          ↓ PASS
┌────────────────────┐
│  人工审查           │
│  - 功能正确性      │
│  - 代码质量        │
│  - 性能考虑        │
│  - 安全性          │
└─────────┬──────────┘
          ↓ APPROVED
┌────────────────────┐
│  集成测试           │
│  - API测试         │
│  - 数据库测试      │
│  - 缓存测试        │
└─────────┬──────────┘
          ↓ PASS
┌────────────────────┐
│  端到端测试         │
│  - 用户流程测试    │
│  - 专家回答测试    │
└─────────┬──────────┘
          ↓ PASS
┌────────────────────┐
│  性能测试           │
│  - 响应时间        │
│  - 并发测试        │
│  - 压力测试        │
└─────────┬──────────┘
          ↓ PASS
     [发布就绪]

🎯 关键决策点

需求评审
    │
    ├─→ 是否符合产品规划?
    ├─→ 技术可行性如何?
    ├─→ 工作量多大?
    └─→ 优先级如何?
        ↓
      [开始] or [延后]
      
技术方案评审
    │
    ├─→ 架构是否合理?
    ├─→ 性能是否可接受?
    ├─→ 可维护性如何?
    └─→ 是否有更好方案?
        ↓
      [通过] or [重新设计]
      
代码审查
    │
    ├─→ 功能是否正确?
    ├─→ 质量是否达标?
    ├─→ 测试是否充分?
    └─→ 文档是否完善?
        ↓
      [合并] or [修改]
      
发布决策
    │
    ├─→ 测试是否全部通过?
    ├─→ 是否有重大风险?
    ├─→ 备份是否完成?
    └─→ 回滚方案是否准备?
        ↓
      [发布] or [延后]

文档用途: 团队协作流程可视化参考
更新频率: 流程变更时及时更新
维护者: Tech Lead