# v2.2.0 部署检查清单

## 部署前准备

### 1. 本地文件准备
- [x] v2.2.0.patch (56KB) - 已生成
- [x] git_patch_deploy_v2.2.sh - 已创建
- [x] DEPLOY_v2.2.0.md - 完整部署文档
- [x] migrate_news_fields.py - 数据库迁移脚本

### 2. 备份（重要！）
- [ ] 生产数据库已备份
  ```bash
  # 在1Panel中备份或执行
  mysqldump -h 112.124.42.38 -u ai_nav -p ai_nav > backup_v2.2_$(date +%Y%m%d).sql
  ```
- [ ] 代码已备份（Git会自动保存）

### 3. 环境检查
- [ ] 服务器可以访问 api.bocha.cn
- [ ] Python 3.8+ 已安装
- [ ] 虚拟环境已创建
- [ ] Git已配置

---

## 部署步骤

### 步骤1：上传文件
上传以下2个文件到 `/opt/1panel/apps/zjpb/`：
- [ ] v2.2.0.patch
- [ ] git_patch_deploy_v2.2.sh

**使用1Panel文件管理器**或**SCP命令**：
```bash
scp v2.2.0.patch root@your-server:/opt/1panel/apps/zjpb/
scp git_patch_deploy_v2.2.sh root@your-server:/opt/1panel/apps/zjpb/
```

### 步骤2：执行部署
```bash
cd /opt/1panel/apps/zjpb
chmod +x git_patch_deploy_v2.2.sh
./git_patch_deploy_v2.2.sh
```

### 步骤3：配置API Key
编辑.env文件，添加博查API配置：
```bash
nano /opt/1panel/apps/zjpb/.env
```

添加：
```bash
BOCHA_API_KEY=sk-76d0236a50d445ae92e75b634ed5313c
BOCHA_BASE_URL=https://api.bocha.cn
```

### 步骤4：重启应用
```bash
cd /opt/1panel/apps/zjpb
./manage.sh restart
```

---

## 部署验证

### 前台验证
- [ ] 访问首页正常
- [ ] 访问网站详情页正常
- [ ] "相关新闻"模块显示（首次访问会触发获取）
- [ ] 新闻可以点击查看原文
- [ ] "相似推荐"在右侧边栏显示

### 后台验证
- [ ] 登录后台成功 `/admin/login`
- [ ] 进入"新闻管理" `/admin/newsadmin/`
- [ ] 可以看到新闻列表（如果已有新闻）
- [ ] 新闻列表显示source_name和source_icon

### 数据库验证
```sql
-- 检查news表新字段
DESCRIBE news;
-- 应该看到：
-- source_name VARCHAR(100)
-- source_icon VARCHAR(500)
```

### 功能测试
- [ ] 访问一个网站详情页，检查是否自动获取新闻
- [ ] 刷新页面，新闻应该不会重复获取（使用缓存）
- [ ] 第二天首次访问，应该会更新新闻

---

## 部署后检查

### 日志检查
```bash
cd /opt/1panel/apps/zjpb
./manage.sh logs
```

检查是否有错误信息：
- [ ] 没有Python异常
- [ ] 没有数据库错误
- [ ] 没有API调用错误

### Git状态
```bash
git log --oneline -3
```

应该看到v2.2.0的提交：
- [ ] release: v2.2.0 相关的提交记录

### 应用状态
```bash
./manage.sh status
```

- [ ] zjpb 正在运行
- [ ] 进程PID正常

---

## 问题排查

### 1. 新闻不显示
**可能原因**：
- BOCHA_API_KEY未配置或配置错误
- API余额不足
- 网站没有相关新闻

**排查步骤**：
```bash
# 测试API配置
cd /opt/1panel/apps/zjpb
source venv/bin/activate
python test_news_feature.py

# 检查环境变量
cat .env | grep BOCHA

# 查看日志
./manage.sh logs | grep -i "news\|bocha"
```

### 2. 数据库迁移失败
**症状**：字段不存在错误

**解决方案**：
```bash
cd /opt/1panel/apps/zjpb
source venv/bin/activate
python migrate_news_fields.py
```

### 3. 补丁应用失败
**症状**：git apply报错

**解决方案**：
```bash
# 查看冲突
git status

# 备份修改
git stash

# 重新应用
git apply v2.2.0.patch
```

---

## 回滚方案（如需要）

### 快速回滚
```bash
cd /opt/1panel/apps/zjpb
./manage.sh stop

# 回滚到v2.1.0
git reset --hard HEAD~2

# 重启
./manage.sh start
```

### 恢复数据库（可选）
```bash
mysql -h 112.124.42.38 -u ai_nav -p ai_nav < backup_v2.2_YYYYMMDD.sql
```

---

## 完成标记

部署完成后，确认以下所有项：
- [ ] 补丁应用成功
- [ ] 数据库迁移成功
- [ ] 应用启动正常
- [ ] 前台功能正常
- [ ] 后台功能正常
- [ ] 新闻功能测试通过
- [ ] 日志无错误
- [ ] Git提交记录正确

---

## 一键部署命令（完整版）

```bash
# ============================================
# v2.2.0 完整部署命令
# ============================================

# 1. 进入项目目录
cd /opt/1panel/apps/zjpb

# 2. 检查上传的文件
ls -lh v2.2.0.patch git_patch_deploy_v2.2.sh

# 3. 执行部署
chmod +x git_patch_deploy_v2.2.sh
./git_patch_deploy_v2.2.sh

# 4. 配置API Key（如果.env中还没有）
nano .env
# 添加以下两行：
# BOCHA_API_KEY=sk-76d0236a50d445ae92e75b634ed5313c
# BOCHA_BASE_URL=https://api.bocha.cn

# 5. 重启应用
./manage.sh restart

# 6. 验证部署
./manage.sh status
git log --oneline -3

# 7. 查看日志（可选）
./manage.sh logs

echo "部署完成！请访问网站测试功能"
```

---

## 预期结果

执行部署脚本后，应该看到类似输出：

```
================================
ZJPB v2.2 Git Patch 部署
================================

当前目录: /opt/1panel/apps/zjpb

1. 停止应用...
2. 检查Git状态...
3. 备份当前修改（如有）...
4. 应用v2.2.0补丁...
   >>> 补丁应用成功
5. 提交更改到Git...
6. 激活虚拟环境...
7. 检查依赖...
8. 运行数据库迁移...
正在创建 source_name 和 source_icon 字段...
>>> 数据库迁移成功
9. 重启应用...
10. 检查应用状态...
zjpb 正在运行 (PID: xxxx)

================================
>>> 部署完成！
================================

Git提交历史：
xxxxxxx release: v2.2.0 - 博查新闻搜索功能
```

---

## 时间估算

- 上传文件：1-2分钟
- 执行部署：3-5分钟
- 配置验证：2-3分钟
- **总计**：约10分钟

---

**检查清单版本**: v1.0
**创建日期**: 2025-12-30
**适用版本**: ZJPB v2.2.0
