# TSP智能助手部署与更新指南

## 📋 目录
- [部署策略](#部署策略)
- [版本控制](#版本控制)
- [更新方式](#更新方式)
- [环境管理](#环境管理)
- [备份与回滚](#备份与回滚)
- [监控与通知](#监控与通知)
- [最佳实践](#最佳实践)

## 🚀 部署策略

### 1. 多环境部署架构

```
开发环境 (Development)
    ↓ 测试通过
测试环境 (Staging)  
    ↓ 验证通过
生产环境 (Production)
```

### 2. 环境配置

| 环境 | 路径 | 服务名 | 自动重启 | 用途 |
|------|------|--------|----------|------|
| development | `./dev_deploy` | 无 | 否 | 本地开发 |
| staging | `/opt/tsp_assistant_staging` | `tsp_assistant_staging` | 是 | 功能测试 |
| production | `/opt/tsp_assistant` | `tsp_assistant` | 是 | 生产服务 |

## 🔄 版本控制

### 版本号规则
- **主版本号 (Major)**: 重大功能变更，可能不兼容
- **次版本号 (Minor)**: 新功能添加，向后兼容
- **修订号 (Patch)**: 错误修复，向后兼容

### 版本管理命令

```bash
# 查看当前版本
python version.py version

# 增加版本号
python version.py increment --type patch    # 1.2.0 -> 1.2.1
python version.py increment --type minor    # 1.2.0 -> 1.3.0
python version.py increment --type major    # 1.2.0 -> 2.0.0

# 添加变更日志
python version.py changelog --message "修复系统性能趋势图表显示问题"

# 创建Git标签
python version.py tag --message "Release v1.2.0"
```

## 🔧 更新方式

### 1. 热更新 (Hot Update)
**适用场景**: 前端文件、配置文件、非核心Python文件
**优点**: 无需重启服务，用户体验好
**缺点**: 有限制，不能更新核心逻辑

```bash
# 热更新
python scripts/update_manager.py hot-update --source ./new_version --environment production
```

**支持热更新的文件**:
- `src/web/static/js/dashboard.js`
- `src/web/static/css/style.css`
- `src/web/templates/dashboard.html`
- `src/web/app.py` (部分)
- 配置文件

### 2. 完整更新 (Full Update)
**适用场景**: 核心逻辑变更、数据库结构变更、依赖更新
**优点**: 完整更新，确保一致性
**缺点**: 需要重启服务

```bash
# 完整更新
python scripts/update_manager.py full-update --source ./new_version --environment production
```

### 3. 自动更新 (Auto Update)
**智能选择**: 优先尝试热更新，失败则进行完整更新

```bash
# 自动更新
python scripts/update_manager.py auto-update --source ./new_version --environment production
```

## 🌍 环境管理

### 部署到不同环境

```bash
# 开发环境
python scripts/update_manager.py auto-update --source ./new_version --environment development

# 测试环境
python scripts/update_manager.py auto-update --source ./new_version --environment staging

# 生产环境
python scripts/update_manager.py auto-update --source ./new_version --environment production
```

### 环境检查

```bash
# 检查更新可用性
python scripts/update_manager.py check --source ./new_version --environment production
```

## 💾 备份与回滚

### 自动备份
- 每次更新前自动创建备份
- 备份包含应用文件和数据库
- 备份信息记录在 `backup_info.json`

### 手动备份

```bash
# 创建备份
python scripts/update_manager.py create-backup --environment production
```

### 回滚操作

```bash
# 列出所有备份
python scripts/update_manager.py list-backups

# 回滚到指定备份
python scripts/update_manager.py rollback --backup tsp_assistant_backup_20250916_163000 --environment production
```

### 备份信息
每个备份包含：
- 应用文件完整副本
- 数据库文件
- 版本信息
- Git提交哈希
- 备份时间戳

## 📊 监控与通知

### 健康检查
- 更新后自动执行健康检查
- 检查服务是否正常启动
- 验证API接口可用性

### 通知机制
- 更新成功/失败通知
- 回滚操作通知
- 系统状态监控

## 🎯 最佳实践

### 1. 更新流程

```bash
# 1. 开发完成，提交代码
git add .
git commit -m "feat: 添加新功能"
git push

# 2. 更新版本号
python version.py increment --type minor
python version.py changelog --message "添加新功能"

# 3. 创建发布标签
python version.py tag --message "Release v1.4.0"

# 4. 部署到测试环境
python scripts/update_manager.py auto-update --source . --environment staging

# 5. 测试验证通过后，部署到生产环境
python scripts/update_manager.py auto-update --source . --environment production
```

### 1.1. 飞书集成部署前准备

```bash
# 1. 配置飞书应用
# - 在飞书开放平台创建企业自建应用
# - 获取app_id和app_secret
# - 配置应用权限（读取多维表格）

# 2. 更新配置文件
# 编辑 config/integrations_config.json
{
  "feishu": {
    "app_id": "your-app-id",
    "app_secret": "your-app-secret", 
    "app_token": "your-app-token",
    "table_id": "your-table-id",
    "status": "active"
  }
}

# 3. 初始化数据库（包含新字段）
python init_database.py

# 4. 测试飞书连接
# 访问主仪表板的"飞书同步"标签页
# 点击"测试连接"验证配置
```

### 2. 安全更新

```bash
# 生产环境更新前先备份
python scripts/update_manager.py create-backup --environment production

# 使用自动更新（包含回滚机制）
python scripts/update_manager.py auto-update --source ./new_version --environment production
```

### 3. 紧急回滚

```bash
# 快速回滚到最新备份
python scripts/update_manager.py rollback --backup $(python scripts/update_manager.py list-backups | head -1 | cut -d' ' -f2) --environment production
```

### 4. 版本管理最佳实践

- **开发阶段**: 使用patch版本号
- **功能完成**: 使用minor版本号
- **重大变更**: 使用major版本号
- **每次发布**: 创建Git标签
- **重要更新**: 记录详细变更日志

## 🛠️ 工具集成

### CI/CD 集成

```yaml
# GitHub Actions 示例
name: Deploy TSP Assistant
on:
  push:
    tags: ['v*']
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Deploy to Staging
        run: |
          python scripts/update_manager.py auto-update --source . --environment staging
      - name: Run Tests
        run: |
          # 运行自动化测试
      - name: Deploy to Production
        if: success()
        run: |
          python scripts/update_manager.py auto-update --source . --environment production
```

### Docker 集成

```dockerfile
# Dockerfile 示例
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "start_dashboard.py"]
```

## 🚨 故障处理

### 常见问题

1. **更新失败**
   - 检查依赖是否正确安装
   - 验证数据库迁移是否成功
   - 查看服务日志

2. **回滚失败**
   - 确认备份文件完整性
   - 检查文件权限
   - 验证服务配置

3. **健康检查失败**
   - 检查服务是否正常启动
   - 验证端口是否被占用
   - 查看应用日志

4. **飞书集成问题**
   - 检查飞书应用权限配置
   - 验证app_token和table_id是否正确
   - 确认网络连接和API访问权限
   - 查看飞书同步日志

5. **数据库字段迁移失败**
   - 检查数据库连接状态
   - 验证字段映射配置
   - 确认数据库权限
   - 查看数据库初始化日志

### 紧急处理

```bash
# 停止服务
sudo systemctl stop tsp_assistant

# 手动回滚
sudo rm -rf /opt/tsp_assistant
sudo cp -r ./backups/tsp_assistant_backup_20250916_163000/app /opt/tsp_assistant
sudo chown -R www-data:www-data /opt/tsp_assistant
sudo systemctl start tsp_assistant
```

## 📝 更新记录

### v1.4.0 (2025-09-19)
- ✅ 飞书集成功能：支持飞书多维表格数据同步
- ✅ 页面功能合并：飞书同步页面合并到主仪表板
- ✅ 数据库架构优化：扩展工单表字段，支持飞书数据
- ✅ 代码重构优化：大文件拆分，降低运行风险
- ✅ 字段映射完善：智能映射飞书字段到本地数据库
- ✅ 数据库初始化改进：集成字段迁移到初始化流程

### v1.3.0 (2025-09-17)
- ✅ 数据库架构优化：MySQL主数据库+SQLite备份系统
- ✅ 工单详情API修复：解决数据库会话管理问题
- ✅ 备份管理系统：自动备份MySQL数据到SQLite
- ✅ 数据库状态监控：实时监控MySQL和SQLite状态
- ✅ 备份管理API：支持数据备份和恢复操作

### v1.2.0 (2025-09-16)
- ✅ 系统设置扩展：API管理、模型参数配置、端口管理
- ✅ 真实数据分析：修复性能趋势图表显示
- ✅ 工单AI建议功能
- ✅ 知识库搜索优化
- ✅ Agent管理改进

### v1.1.0 (2025-09-16)
- ✅ 工单AI建议功能
- ✅ 知识库搜索优化
- ✅ Agent管理改进

### v1.0.0 (2024-01-01)
- ✅ 初始版本发布

---

**注意**: 生产环境更新前请务必在测试环境验证，并确保有可用的备份。
