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