## 核心优化 - 移除详情页自动调用博查API的逻辑,改为按需加载 - 添加基于IP的频率限制(每小时3次) - 实现验证码防护机制(超过阈值后要求验证) - 新增频率限制工具类 utils/rate_limiter.py ## 成本控制 - API调用减少约90%+(只在用户点击时调用) - 防止恶意滥用和攻击 - 可配置的频率限制和验证码策略 ## 文档整合 - 创建 docs/ 目录结构 - 归档历史版本文档到 docs/archive/ - 移动部署文档到 docs/deployment/ - 添加文档索引 docs/README.md ## 技术变更 - 新增依赖: Flask-Limiter==3.5.0 - 修改: app.py (移除自动调用,新增API端点) - 修改: templates/detail_new.html (按需加载UI) - 新增: utils/rate_limiter.py (频率限制和验证码) - 新增: docs/archive/DEVELOP_v2.6.0_API_SECURITY.md ## 部署说明 1. pip install Flask-Limiter==3.5.0 2. 重启应用 3. 无需数据库迁移 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
5.5 KiB
5.5 KiB
v2.2.0 部署检查清单
部署前准备
1. 本地文件准备
- v2.2.0.patch (56KB) - 已生成
- git_patch_deploy_v2.2.sh - 已创建
- DEPLOY_v2.2.0.md - 完整部署文档
- migrate_news_fields.py - 数据库迁移脚本
2. 备份(重要!)
- 生产数据库已备份
# 在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命令:
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:执行部署
cd /opt/1panel/apps/zjpb
chmod +x git_patch_deploy_v2.2.sh
./git_patch_deploy_v2.2.sh
步骤3:配置API Key
编辑.env文件,添加博查API配置:
nano /opt/1panel/apps/zjpb/.env
添加:
BOCHA_API_KEY=sk-76d0236a50d445ae92e75b634ed5313c
BOCHA_BASE_URL=https://api.bocha.cn
步骤4:重启应用
cd /opt/1panel/apps/zjpb
./manage.sh restart
部署验证
前台验证
- 访问首页正常
- 访问网站详情页正常
- "相关新闻"模块显示(首次访问会触发获取)
- 新闻可以点击查看原文
- "相似推荐"在右侧边栏显示
后台验证
- 登录后台成功
/admin/login - 进入"新闻管理"
/admin/newsadmin/ - 可以看到新闻列表(如果已有新闻)
- 新闻列表显示source_name和source_icon
数据库验证
-- 检查news表新字段
DESCRIBE news;
-- 应该看到:
-- source_name VARCHAR(100)
-- source_icon VARCHAR(500)
功能测试
- 访问一个网站详情页,检查是否自动获取新闻
- 刷新页面,新闻应该不会重复获取(使用缓存)
- 第二天首次访问,应该会更新新闻
部署后检查
日志检查
cd /opt/1panel/apps/zjpb
./manage.sh logs
检查是否有错误信息:
- 没有Python异常
- 没有数据库错误
- 没有API调用错误
Git状态
git log --oneline -3
应该看到v2.2.0的提交:
- release: v2.2.0 相关的提交记录
应用状态
./manage.sh status
- zjpb 正在运行
- 进程PID正常
问题排查
1. 新闻不显示
可能原因:
- BOCHA_API_KEY未配置或配置错误
- API余额不足
- 网站没有相关新闻
排查步骤:
# 测试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. 数据库迁移失败
症状:字段不存在错误
解决方案:
cd /opt/1panel/apps/zjpb
source venv/bin/activate
python migrate_news_fields.py
3. 补丁应用失败
症状:git apply报错
解决方案:
# 查看冲突
git status
# 备份修改
git stash
# 重新应用
git apply v2.2.0.patch
回滚方案(如需要)
快速回滚
cd /opt/1panel/apps/zjpb
./manage.sh stop
# 回滚到v2.1.0
git reset --hard HEAD~2
# 重启
./manage.sh start
恢复数据库(可选)
mysql -h 112.124.42.38 -u ai_nav -p ai_nav < backup_v2.2_YYYYMMDD.sql
完成标记
部署完成后,确认以下所有项:
- 补丁应用成功
- 数据库迁移成功
- 应用启动正常
- 前台功能正常
- 后台功能正常
- 新闻功能测试通过
- 日志无错误
- Git提交记录正确
一键部署命令(完整版)
# ============================================
# 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