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,195 @@
# ZJPB v2.1 手动上传部署指南
## 📋 需要上传的文件共10个
### 核心文件(必须上传)
1.`app.py` - 新增Prompt管理视图
2.`models.py` - 新增PromptTemplate模型
3.`migrate_prompts.py` - 数据库迁移脚本(新文件)
### 模板文件(必须上传)
4.`templates/base_new.html` - 页脚和统计代码
5.`templates/detail_new.html` - 图标修复
6.`templates/admin/site/create.html` - 标签显示修复
7.`templates/admin/site/edit.html` - 标签显示修复
### 辅助文件(可选)
8.`INCREMENTAL_DEPLOY.md` - 部署文档
9.`export_data.py` - 数据导出工具
10.`migrate_db.py` - 数据库工具
### 部署脚本(新增)
11.`quick_deploy_server.sh` - 服务器端快速部署脚本
---
## 🚀 部署步骤使用1Panel文件管理器
### 第一步:备份生产数据库
1. 登录1Panel管理面板
2. 进入 **数据库** → 找到 `ai_nav` 数据库
3. 点击 **备份** 按钮
4. 下载备份文件到本地保存
### 第二步:备份现有代码
1. 在1Panel中进入 **文件管理**
2. 进入 `/www/wwwroot/`
3. 右键点击 `zjpb` 文件夹
4. 选择 **压缩** → 命名为 `zjpb_backup_20250130.tar.gz`
5. 下载到本地保存
### 第三步:上传新文件
#### 方法1使用1Panel文件管理器推荐
1. 在1Panel文件管理器中进入 `/www/wwwroot/zjpb/`
2. **上传核心文件**(覆盖):
- 上传 `app.py``/www/wwwroot/zjpb/`
- 上传 `models.py``/www/wwwroot/zjpb/`
- 上传 `migrate_prompts.py``/www/wwwroot/zjpb/`(新文件)
- 上传 `quick_deploy_server.sh``/www/wwwroot/zjpb/`(新文件)
3. **上传模板文件**(覆盖):
- 进入 `/www/wwwroot/zjpb/templates/`
- 上传 `base_new.html``templates/`
- 上传 `detail_new.html``templates/`
- 进入 `templates/admin/site/`
- 上传 `create.html``templates/admin/site/`
- 上传 `edit.html``templates/admin/site/`
#### 方法2使用FTP工具FileZilla/WinSCP
```
服务器地址: your-server-ip
用户名: root
密码: your-password
端口: 22 (SFTP)
```
连接后进入 `/www/wwwroot/zjpb/`,直接拖拽文件上传覆盖。
### 第四步:设置脚本权限并执行部署
在1Panel终端或SSH中执行
```bash
# 进入项目目录
cd /www/wwwroot/zjpb
# 设置脚本执行权限
chmod +x quick_deploy_server.sh
# 执行部署脚本
./quick_deploy_server.sh
```
**脚本会自动完成以下操作:**
1. ✅ 停止应用
2. ✅ 备份当前代码
3. ✅ 安装依赖(如有更新)
4. ✅ 运行数据库迁移
5. ✅ 重启应用
6. ✅ 检查状态
### 第五步:验证部署
**前台验证:**
1. 访问首页,检查页脚是否显示:
- `© 2025 ZJPB - 焦提示词 | AI工具导航`
- `浙ICP备2025154782号-1`
2. 访问任意网站详情页,检查:
- 图标是否正常显示不是Material Icons文本
- 返回首页按钮显示 `←` 而不是 `arrow_back`
**后台验证:**
1. 登录后台 `/admin/login`
2. 检查左侧菜单是否有 **Prompt管理**
3. 点击进入应该看到3条默认数据
- 标签生成
- 主要功能生成
- 详细介绍生成
4. 进入 **网站管理** → 编辑任意网站
5. 检查标签区域是否正常显示标签名称(不是空白蓝框)
**AI功能验证**
1. 创建新网站或编辑现有网站
2. 测试 "AI生成标签" 按钮
3. 测试 "AI生成详细介绍" 按钮
4. 测试 "AI生成主要功能" 按钮
---
## 🐛 常见问题
### Q1: 上传后文件权限错误
```bash
# 设置正确的权限
cd /www/wwwroot/zjpb
chmod 644 *.py
chmod 755 *.sh
```
### Q2: 脚本执行失败
```bash
# 手动执行步骤
cd /www/wwwroot/zjpb
./manage.sh stop
source venv/bin/activate
python migrate_prompts.py
./manage.sh start
```
### Q3: 数据库迁移报错 "表已存在"
这是正常的,说明之前已经运行过,可以忽略。
### Q4: 应用无法启动
```bash
# 查看错误日志
./manage.sh logs
# 或
tail -f logs/error.log
```
---
## 🔄 快速回滚(如出现问题)
```bash
cd /www/wwwroot/zjpb
./manage.sh stop
# 恢复备份
cd /www/wwwroot
rm -rf zjpb
tar -xzf zjpb_backup_20250130.tar.gz
# 重启
cd zjpb
./manage.sh start
```
---
## 📊 部署检查清单
- [ ] 生产数据库已备份
- [ ] 现有代码已备份
- [ ] 所有文件上传完成
- [ ] 部署脚本执行成功
- [ ] 前台页脚显示正常
- [ ] 详情页图标显示正常
- [ ] 后台Prompt管理菜单存在
- [ ] 标签显示正常
- [ ] AI功能测试通过
---
## 💡 提示
如果你经常需要部署更新建议配置Git远程仓库GitHub/Gitee下次就可以直接 `git pull` 更新,更加方便快捷。