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:
427
docs/archive/WORK_PROGRESS_20250130.md
Normal file
427
docs/archive/WORK_PROGRESS_20250130.md
Normal file
@@ -0,0 +1,427 @@
|
||||
# ZJPB v2.1.0 开发进度记录
|
||||
|
||||
**日期**: 2025-01-30
|
||||
**版本**: v2.1.0
|
||||
**状态**: 部署进行中(90%完成)
|
||||
|
||||
---
|
||||
|
||||
## 📋 本次开发内容总结
|
||||
|
||||
### 新增功能
|
||||
|
||||
1. **Prompt管理系统** ✅
|
||||
- 新增 `prompt_templates` 数据库表
|
||||
- 后台新增"Prompt管理"菜单
|
||||
- 可管理AI提示词模板(标签生成、功能生成、详细介绍生成)
|
||||
- 默认初始化3条模板数据
|
||||
|
||||
2. **页脚优化** ✅
|
||||
- 添加ICP备案号:浙ICP备2025154782号-1
|
||||
- 添加Microsoft Clarity统计代码(ID: uoa2j40sf0)
|
||||
- 更新版权年份为2025
|
||||
- 优化页脚链接文字(中文化)
|
||||
|
||||
3. **图标优化** ✅
|
||||
- 详情页:Material Icons → Emoji
|
||||
- 替换图标:`arrow_back`→`←`, `north_east`→`↗`, `visibility`→`👁`, `calendar_today`→`📅`
|
||||
- 首页:已使用emoji但有CSS残留(待上传修复文件)
|
||||
|
||||
4. **标签显示修复** ✅
|
||||
- 修复编辑页/创建页标签名称无法显示问题
|
||||
- 使用正则表达式提取 `<Tag XXX>` 格式中的标签名称
|
||||
- 修改文件:`templates/admin/site/create.html`, `templates/admin/site/edit.html`
|
||||
|
||||
---
|
||||
|
||||
## ✅ 已完成的工作
|
||||
|
||||
### 代码开发
|
||||
- [x] 创建 `PromptTemplate` 模型(`models.py`)
|
||||
- [x] 创建数据库迁移脚本(`migrate_prompts.py`)
|
||||
- [x] 添加 `PromptAdmin` 管理视图(`app.py`)
|
||||
- [x] 修复详情页图标(`templates/detail_new.html`)
|
||||
- [x] 修复标签显示问题(`templates/admin/site/create.html`, `edit.html`)
|
||||
- [x] 优化页脚(`templates/base_new.html`)
|
||||
- [x] 完善 `TagGenerator` 类,添加 `generate_description` 方法
|
||||
|
||||
### Git管理
|
||||
- [x] Git提交所有修改(Commit ID: `9f5d006`)
|
||||
- [x] Git提交信息:`release: v2.1.0 - Prompt管理系统、页脚优化、图标修复`
|
||||
- [x] 文件统计:23 files changed, 5868 insertions(+), 96 deletions(-)
|
||||
|
||||
### 服务器部署
|
||||
- [x] 配置Git用户信息
|
||||
- [x] 恢复Git stash
|
||||
- [x] 提交代码到服务器Git仓库
|
||||
- [x] 安装新依赖:`markdown`, `pypinyin`, `gunicorn`
|
||||
- [x] 运行数据库迁移(成功创建 `prompt_templates` 表及3条数据)
|
||||
- [x] 修复 `manage.sh` 路径配置(`/www/wwwroot/zjpb` → `/opt/1panel/apps/zjpb`)
|
||||
- [x] 修复gunicorn启动命令(`app:app` → `wsgi:app`)
|
||||
- [x] 应用成功启动(PID: 20+)
|
||||
|
||||
---
|
||||
|
||||
## ✅ 已验证功能
|
||||
|
||||
1. **页脚ICP备案号** ✅ - 正常显示
|
||||
2. **Microsoft Clarity统计** ✅ - 已加载
|
||||
3. **详情页图标** ✅ - 全部为emoji
|
||||
4. **搜索功能** ✅ - 正常工作
|
||||
5. **数据库迁移** ✅ - 表和数据创建成功
|
||||
6. **应用运行状态** ✅ - 服务正常
|
||||
|
||||
---
|
||||
|
||||
## 🔄 待完成任务
|
||||
|
||||
### 1. 上传缺失的文件(重要!)
|
||||
|
||||
需要上传以下2个文件到服务器:
|
||||
|
||||
**文件1**: `templates/index_new.html`
|
||||
- **本地路径**: `D:\315mac\Code\zjpb\templates\index_new.html`
|
||||
- **服务器路径**: `/opt/1panel/apps/zjpb/templates/index_new.html`
|
||||
- **原因**: 删除Material Icons残留CSS(第259-261行已删除)
|
||||
- **作用**: 修复首页图标显示问题
|
||||
|
||||
**文件2**: `utils/tag_generator.py`
|
||||
- **本地路径**: `D:\315mac\Code\zjpb\utils\tag_generator.py`
|
||||
- **服务器路径**: `/opt/1panel/apps/zjpb/utils/tag_generator.py`
|
||||
- **原因**: 包含完整的 `generate_description` 方法(第150-219行)
|
||||
- **作用**: 修复AI生成详细介绍报错('TagGenerator' object has no attribute 'generate_description')
|
||||
|
||||
**上传后执行**:
|
||||
```bash
|
||||
cd /opt/1panel/apps/zjpb
|
||||
./manage.sh restart
|
||||
```
|
||||
|
||||
### 2. 待验证功能
|
||||
|
||||
**后台Prompt管理**:
|
||||
- [ ] 检查后台左侧菜单是否有"Prompt管理"
|
||||
- [ ] 点击进入,查看是否有3条记录:
|
||||
- 标签生成 (id: 1)
|
||||
- 主要功能生成 (id: 2)
|
||||
- 详细介绍生成 (id: 3)
|
||||
|
||||
**标签显示验证**:
|
||||
- [ ] 后台 → 网站管理 → 编辑任意网站
|
||||
- [ ] 检查标签区域是否显示蓝色标签带文字
|
||||
- [ ] 不应该是空白蓝框
|
||||
|
||||
**AI功能测试**:
|
||||
- [ ] 测试"AI生成标签"按钮
|
||||
- [ ] 测试"AI生成详细介绍"按钮(需要先上传tag_generator.py)
|
||||
- [ ] 测试"AI生成主要功能"按钮
|
||||
|
||||
**首页图标验证**:
|
||||
- [ ] 清除浏览器缓存(Ctrl+Shift+Delete)
|
||||
- [ ] 强制刷新首页(Ctrl+F5)
|
||||
- [ ] 检查首页卡片图标是否为emoji(需要先上传index_new.html)
|
||||
|
||||
---
|
||||
|
||||
## 📊 数据库变更
|
||||
|
||||
### 新增表: `prompt_templates`
|
||||
|
||||
```sql
|
||||
CREATE TABLE prompt_templates (
|
||||
id INTEGER NOT NULL AUTO_INCREMENT,
|
||||
`key` VARCHAR(50) NOT NULL COMMENT '唯一标识(tags/features/description)',
|
||||
name VARCHAR(100) NOT NULL COMMENT '模板名称',
|
||||
system_prompt TEXT NOT NULL COMMENT '系统提示词',
|
||||
user_prompt_template TEXT NOT NULL COMMENT '用户提示词模板(支持变量)',
|
||||
description VARCHAR(200) COMMENT '模板说明',
|
||||
is_active BOOL COMMENT '是否启用',
|
||||
created_at DATETIME COMMENT '创建时间',
|
||||
updated_at DATETIME COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE (`key`)
|
||||
)
|
||||
```
|
||||
|
||||
### 已插入的默认数据(3条)
|
||||
|
||||
| ID | Key | Name | Description |
|
||||
|----|-----|------|-------------|
|
||||
| 1 | tags | 标签生成 | 根据网站名称和描述生成3-5个分类标签 |
|
||||
| 2 | features | 主要功能生成 | 根据网站名称和描述生成5-8个主要功能点 |
|
||||
| 3 | description | 详细介绍生成 | 根据网站名称和简短描述生成200-400字的详细介绍 |
|
||||
|
||||
---
|
||||
|
||||
## 🔧 服务器配置信息
|
||||
|
||||
### 基本信息
|
||||
- **服务器路径**: `/opt/1panel/apps/zjpb`(不是 `/www/wwwroot/zjpb`)
|
||||
- **Python虚拟环境**: `/opt/1panel/apps/zjpb/venv`
|
||||
- **Git版本**: 2.43.0
|
||||
- **Git用户**: `ZJPB Admin <admin@zjpb.net>`
|
||||
|
||||
### 已安装的依赖
|
||||
- Flask==3.0.0
|
||||
- Flask-SQLAlchemy==3.1.1
|
||||
- Flask-Admin==1.6.1
|
||||
- Flask-Login==0.6.3
|
||||
- pymysql==1.1.0
|
||||
- python-dotenv==1.0.0
|
||||
- Werkzeug==3.0.1
|
||||
- cryptography==41.0.7
|
||||
- WTForms==2.3.3
|
||||
- requests==2.31.0
|
||||
- beautifulsoup4==4.12.2
|
||||
- Pillow>=10.2.0
|
||||
- openai>=1.0.0
|
||||
- **markdown==3.10** (新增)
|
||||
- **pypinyin==0.51.0** (已有)
|
||||
- **gunicorn==21.2.0** (已有)
|
||||
|
||||
### 应用管理脚本
|
||||
- **启动**: `./manage.sh start`
|
||||
- **停止**: `./manage.sh stop`
|
||||
- **重启**: `./manage.sh restart`
|
||||
- **状态**: `./manage.sh status`
|
||||
- **日志**: `./manage.sh logs`
|
||||
|
||||
### 配置文件修复记录
|
||||
1. `manage.sh` - 路径已修复为 `/opt/1panel/apps/zjpb`
|
||||
2. `gunicorn_config.py` - 路径已修复
|
||||
3. `deploy.sh` - 路径已修复
|
||||
4. `manage.sh` - 启动命令已修复为 `wsgi:app`
|
||||
|
||||
---
|
||||
|
||||
## 📝 Git提交记录
|
||||
|
||||
### 最新提交(服务器)
|
||||
```
|
||||
Commit: 9f5d006
|
||||
Author: ZJPB Admin <admin@zjpb.net>
|
||||
Date: 2025-12-30 01:21:xx
|
||||
|
||||
release: v2.1.0 - Prompt管理系统、页脚优化、图标修复
|
||||
|
||||
23 files changed, 5868 insertions(+), 96 deletions(-)
|
||||
|
||||
新增文件:
|
||||
- DEPLOYMENT.md
|
||||
- DEPLOY_CHECKLIST.md
|
||||
- INCREMENTAL_DEPLOY.md
|
||||
- QUICK_DEPLOY.md
|
||||
- deploy.sh
|
||||
- export_data.py
|
||||
- git_patch_deploy.sh
|
||||
- gunicorn_config.py
|
||||
- manage.sh
|
||||
- migrate_db.py
|
||||
- migrate_prompts.py
|
||||
- nul
|
||||
- one_click_deploy.sh
|
||||
- templates/admin/change_password.html
|
||||
- test_deepseek.py
|
||||
- v2.1.0.patch
|
||||
- wsgi.py
|
||||
```
|
||||
|
||||
### 本地提交(待推送)
|
||||
```
|
||||
Commit: 30b1ef7
|
||||
Tag: v2.1.0
|
||||
|
||||
release: v2.1.0 - Prompt管理系统、页脚优化、图标修复
|
||||
|
||||
新增功能:
|
||||
- Prompt管理:后台新增Prompt模板管理功能
|
||||
- 数据库迁移:新增prompt_templates表及默认数据
|
||||
- 页脚优化:添加ICP备案号和Microsoft Clarity统计
|
||||
- 图标修复:详情页Material Icons替换为Emoji
|
||||
- 标签显示:修复编辑页标签名称无法显示的问题
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🐛 已知问题
|
||||
|
||||
### 1. 首页图标CSS残留
|
||||
- **状态**: 待修复(需上传文件)
|
||||
- **文件**: `templates/index_new.html`
|
||||
- **问题**: 第259-261行有Material Icons CSS残留
|
||||
- **解决方案**: 已删除,需上传到服务器
|
||||
|
||||
### 2. AI生成详细介绍报错
|
||||
- **状态**: 待修复(需上传文件)
|
||||
- **文件**: `utils/tag_generator.py`
|
||||
- **错误**: `'TagGenerator' object has no attribute 'generate_description'`
|
||||
- **原因**: 服务器版本缺少该方法
|
||||
- **解决方案**: 上传包含完整方法的文件
|
||||
|
||||
### 3. Git Stash残留
|
||||
- **状态**: 已处理
|
||||
- **位置**: 服务器还有1个stash备份 `stash@{1}`
|
||||
- **建议**: 可以保留作为备份,或清理:`git stash clear`
|
||||
|
||||
---
|
||||
|
||||
## 📂 关键文件清单
|
||||
|
||||
### 已修改的文件(本地最新)
|
||||
1. `app.py` - 新增PromptAdmin视图
|
||||
2. `models.py` - 新增PromptTemplate模型
|
||||
3. `migrate_prompts.py` - 数据库迁移脚本
|
||||
4. `templates/base_new.html` - 页脚优化
|
||||
5. `templates/detail_new.html` - 图标修复
|
||||
6. `templates/index_new.html` - 删除CSS残留
|
||||
7. `templates/admin/site/create.html` - 标签显示修复
|
||||
8. `templates/admin/site/edit.html` - 标签显示修复
|
||||
9. `utils/tag_generator.py` - 完整的AI生成方法
|
||||
10. `requirements.txt` - 依赖清单(未变更,markdown未加入)
|
||||
|
||||
### 新增的文件
|
||||
1. `migrate_prompts.py` - Prompt表迁移脚本
|
||||
2. `INCREMENTAL_DEPLOY.md` - 增量部署指南
|
||||
3. `GIT_PATCH_DEPLOY.md` - Git Patch部署指南
|
||||
4. `MANUAL_DEPLOY.md` - 手动部署指南
|
||||
5. `CHECK_GIT.md` - Git检查指南
|
||||
6. `one_click_deploy.sh` - 一键部署脚本
|
||||
7. `git_patch_deploy.sh` - Git patch部署脚本
|
||||
8. `quick_deploy_server.sh` - 服务器快速部署脚本
|
||||
|
||||
---
|
||||
|
||||
## 🚀 下次继续工作的步骤
|
||||
|
||||
### 立即执行(5分钟)
|
||||
|
||||
1. **上传缺失文件**(使用1Panel文件管理器):
|
||||
```
|
||||
本地 → 服务器
|
||||
D:\315mac\Code\zjpb\templates\index_new.html
|
||||
→ /opt/1panel/apps/zjpb/templates/index_new.html
|
||||
|
||||
D:\315mac\Code\zjpb\utils\tag_generator.py
|
||||
→ /opt/1panel/apps/zjpb/utils/tag_generator.py
|
||||
```
|
||||
|
||||
2. **重启应用**(SSH或1Panel终端):
|
||||
```bash
|
||||
cd /opt/1panel/apps/zjpb
|
||||
./manage.sh restart
|
||||
./manage.sh status
|
||||
```
|
||||
|
||||
3. **清除浏览器缓存** (Ctrl+Shift+Delete 或 Ctrl+F5)
|
||||
|
||||
### 验证功能(5分钟)
|
||||
|
||||
1. **验证Prompt管理**:
|
||||
- 登录 `/admin/login`
|
||||
- 检查"Prompt管理"菜单
|
||||
- 查看3条记录
|
||||
|
||||
2. **验证标签显示**:
|
||||
- 后台 → 网站管理 → 编辑
|
||||
- 检查标签是否显示名称
|
||||
|
||||
3. **验证AI功能**:
|
||||
- 测试3个AI生成按钮
|
||||
- 确保都能正常工作
|
||||
|
||||
4. **验证首页图标**:
|
||||
- 刷新首页
|
||||
- 检查所有图标是否为emoji
|
||||
|
||||
### 可选优化(未来)
|
||||
|
||||
- [ ] 将 `markdown` 添加到 `requirements.txt`
|
||||
- [ ] 清理服务器上的临时文件(`nul`, `test_deepseek.py`, `*.patch`)
|
||||
- [ ] 配置Git远程仓库(GitHub/Gitee)用于版本管理
|
||||
- [ ] 优化gunicorn配置(worker数量、超时时间等)
|
||||
- [ ] 设置应用自动启动(systemd service)
|
||||
|
||||
---
|
||||
|
||||
## 💡 技术要点记录
|
||||
|
||||
### Git Stash恢复
|
||||
```bash
|
||||
git stash list # 查看stash列表
|
||||
git stash pop # 恢复最新stash
|
||||
git stash apply # 恢复但不删除stash
|
||||
git stash clear # 清除所有stash
|
||||
```
|
||||
|
||||
### 正则表达式提取标签
|
||||
```javascript
|
||||
// 从 <Tag XXX> 格式提取标签名称
|
||||
const match = tagText.match(/<Tag\s+(.+?)>/);
|
||||
if (match) {
|
||||
tagText = match[1]; // 提取 "XXX"
|
||||
}
|
||||
```
|
||||
|
||||
### Flask-Admin模型repr格式
|
||||
```python
|
||||
# Tag模型的__repr__返回
|
||||
def __repr__(self):
|
||||
return f'<Tag {self.name}>'
|
||||
|
||||
# 在Flask-Admin select中显示为:<Tag 图像生成>
|
||||
# 需要JavaScript提取实际标签名
|
||||
```
|
||||
|
||||
### Gunicorn启动配置
|
||||
```python
|
||||
# wsgi.py - 正确的应用入口
|
||||
from app import create_app
|
||||
app = create_app(os.getenv('FLASK_ENV', 'production'))
|
||||
|
||||
# manage.sh - 正确的启动命令
|
||||
gunicorn -c gunicorn_config.py wsgi:app
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📞 联系信息
|
||||
|
||||
- **项目名称**: ZJPB - 焦提示词 | AI工具导航
|
||||
- **ICP备案号**: 浙ICP备2025154782号-1
|
||||
- **统计代码**: Microsoft Clarity (ID: uoa2j40sf0)
|
||||
- **数据库**: ai_nav @ 112.124.42.38 (MySQL)
|
||||
- **服务器路径**: /opt/1panel/apps/zjpb
|
||||
|
||||
---
|
||||
|
||||
## 📚 相关文档
|
||||
|
||||
- `INCREMENTAL_DEPLOY.md` - 增量部署完整指南
|
||||
- `GIT_PATCH_DEPLOY.md` - Git Patch部署方案
|
||||
- `MANUAL_DEPLOY.md` - 手动上传部署方案
|
||||
- `CHECK_GIT.md` - Git环境检查指南
|
||||
- `DEPLOYMENT.md` - 通用部署文档
|
||||
- `QUICK_DEPLOY.md` - 1Panel快速部署
|
||||
|
||||
---
|
||||
|
||||
## ✅ 部署完成度
|
||||
|
||||
**总体进度**: 90%
|
||||
|
||||
| 任务 | 状态 |
|
||||
|------|------|
|
||||
| 代码开发 | ✅ 100% |
|
||||
| Git提交 | ✅ 100% |
|
||||
| 服务器配置 | ✅ 100% |
|
||||
| 数据库迁移 | ✅ 100% |
|
||||
| 应用启动 | ✅ 100% |
|
||||
| 文件上传 | ⏳ 80% (缺2个文件) |
|
||||
| 功能验证 | ⏳ 60% (部分已验证) |
|
||||
|
||||
**预计剩余时间**: 10分钟(上传文件+验证)
|
||||
|
||||
---
|
||||
|
||||
**最后更新**: 2025-01-30 01:30
|
||||
**下次继续**: 上传2个文件 → 重启应用 → 验证功能 → 完成部署 🎉
|
||||
Reference in New Issue
Block a user