feat: v2.6.0 - API安全优化和文档整合

## 核心优化
- 移除详情页自动调用博查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>
This commit is contained in:
Jowe
2026-02-06 15:54:13 +08:00
parent c1a06ad684
commit 939717fa57
27 changed files with 1670 additions and 140 deletions

View File

@@ -0,0 +1,201 @@
# ZJPB v2.2.0 部署操作指南
## 版本信息
- **版本**: v2.2.0
- **发布日期**: 2025-12-30
- **补丁大小**: 56KB
- **部署时间**: 约10分钟
---
## 核心功能
### 博查新闻搜索集成
✅ 自动获取网站相关新闻博查Web Search API
✅ 智能更新:每日首次访问触发更新
✅ 每个网站获取3条一周内新闻
✅ 新闻来源展示(名称+图标)
✅ 自动去重防止重复
### 数据库扩展
✅ News表新增 `source_name` 字段
✅ News表新增 `source_icon` 字段
### 界面优化
✅ 新闻模块在左侧主栏
✅ 相似推荐在右侧边栏
---
## 快速部署3步
### 第1步上传文件到服务器
上传以下2个文件到 `/opt/1panel/apps/zjpb/`
```
v2.2.0.patch
git_patch_deploy_v2.2.sh
```
### 第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` 文件,添加:
```bash
BOCHA_API_KEY=sk-76d0236a50d445ae92e75b634ed5313c
BOCHA_BASE_URL=https://api.bocha.cn
```
然后重启:
```bash
./manage.sh restart
```
---
## 验证部署
### ✓ 前台测试
1. 访问任意网站详情页
2. 检查"相关新闻"模块是否显示
3. 新闻应该显示来源网站名称和图标
4. 点击新闻标题可跳转到原文
### ✓ 后台测试
1. 登录 `/admin/login`
2. 进入"新闻管理" `/admin/newsadmin/`
3. 查看新闻列表是否正常显示
### ✓ 功能测试
```bash
cd /opt/1panel/apps/zjpb
source venv/bin/activate
python test_news_feature.py
```
---
## 关键文件
### 本地准备好的文件
```
D:\315mac\Code\zjpb\
├── v2.2.0.patch (56KB) 补丁文件
├── git_patch_deploy_v2.2.sh 部署脚本
├── DEPLOY_v2.2.0.md 完整部署文档
├── DEPLOY_v2.2_CHECKLIST.md 检查清单
├── migrate_news_fields.py 数据库迁移脚本
├── test_news_feature.py 测试脚本
└── fetch_news_cron.py 定期任务脚本
```
### 服务器需要的文件只需2个
```
v2.2.0.patch
git_patch_deploy_v2.2.sh
```
---
## Git提交历史
v2.2.0包含以下3个提交
```
2e9f634 docs: 添加v2.2.0部署文档和脚本
495248b feat: v2.2.0 智能新闻更新和布局优化
d7d21e1 release: v2.2.0 - 博查新闻搜索功能
```
---
## 部署脚本自动完成的操作
```
1. 停止应用
2. 检查Git状态
3. 备份未提交的修改
4. 应用v2.2.0补丁
- utils/news_searcher.py (新增)
- app.py (更新)
- models.py (更新)
- config.py (更新)
- templates/detail_new.html (更新)
- migrate_news_fields.py (新增)
- test_news_feature.py (新增)
- fetch_news_cron.py (新增)
- NEWS_FEATURE_v2.2.md (新增)
5. 提交到Git
6. 激活虚拟环境
7. 安装依赖
8. 运行数据库迁移
9. 重启应用
10. 检查状态
```
---
## 回滚方案(如需要)
```bash
cd /opt/1panel/apps/zjpb
./manage.sh stop
git reset --hard HEAD~3 # 回滚到v2.1.0
./manage.sh start
```
---
## 常见问题
### Q1: 新闻不显示?
**A**: 检查 `.env``BOCHA_API_KEY` 是否配置正确
### Q2: 补丁应用失败?
**A**: 备份本地修改后重试
```bash
git stash
git apply v2.2.0.patch
```
### Q3: 数据库迁移失败?
**A**: 手动运行迁移脚本
```bash
python migrate_news_fields.py
```
---
## 成本估算
假设每天100个网站被访问
- 每次API调用约 0.01元
- 每天成本约 1元
- 每月成本约 30元
---
## 下一步
部署完成后:
1. 访问网站测试功能
2. 查看应用日志确认无错误
3. 监控API调用情况
4. 根据需要调整新闻获取数量和时间范围
---
## 技术支持文档
- **完整文档**: `DEPLOY_v2.2.0.md`
- **检查清单**: `DEPLOY_v2.2_CHECKLIST.md`
- **功能文档**: `NEWS_FEATURE_v2.2.md`
---
**创建时间**: 2025-12-30 22:32
**准备就绪**: ✅
**可以开始部署**: ✅