330 lines
7.0 KiB
Markdown
330 lines
7.0 KiB
Markdown
|
|
# ZJPB v3.0 版本更新日志
|
|||
|
|
|
|||
|
|
**发布日期:** 2025-02-06
|
|||
|
|
**版本代号:** User System
|
|||
|
|
**重要程度:** 🔴 重大更新
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 核心功能
|
|||
|
|
|
|||
|
|
### 1. 用户系统 (User System)
|
|||
|
|
|
|||
|
|
#### ✨ 用户注册与登录
|
|||
|
|
- 用户注册功能(用户名 + 密码)
|
|||
|
|
- 用户登录/登出
|
|||
|
|
- 多用户类型支持(Admin 和 User 分离)
|
|||
|
|
- 会话管理和状态持久化
|
|||
|
|
|
|||
|
|
#### ⭐ 工具收藏功能
|
|||
|
|
- 一键收藏/取消收藏工具
|
|||
|
|
- 收藏状态实时同步
|
|||
|
|
- 收藏按钮视觉反馈(未收藏/已收藏状态)
|
|||
|
|
- 未登录用户引导登录
|
|||
|
|
|
|||
|
|
#### 📁 收藏分组管理
|
|||
|
|
- 创建自定义文件夹
|
|||
|
|
- 文件夹增删改查
|
|||
|
|
- 收藏移动到不同文件夹
|
|||
|
|
- 文件夹图标自定义
|
|||
|
|
|
|||
|
|
#### 👤 用户中心
|
|||
|
|
- 个人资料展示
|
|||
|
|
- 收藏统计(收藏数、文件夹数)
|
|||
|
|
- 最近收藏列表
|
|||
|
|
- 收藏列表页面(网格展示 + 分页)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🗄️ 数据库变更
|
|||
|
|
|
|||
|
|
### 新增表
|
|||
|
|
|
|||
|
|
**users(用户表)**
|
|||
|
|
```sql
|
|||
|
|
- id: 主键
|
|||
|
|
- username: 用户名(唯一,索引)
|
|||
|
|
- password_hash: 密码哈希
|
|||
|
|
- email: 邮箱(可选,唯一,索引)
|
|||
|
|
- avatar: 头像URL
|
|||
|
|
- bio: 个人简介
|
|||
|
|
- is_active: 是否启用
|
|||
|
|
- is_public_profile: 是否公开资料
|
|||
|
|
- created_at: 创建时间
|
|||
|
|
- last_login: 最后登录时间
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**folders(收藏分组表)**
|
|||
|
|
```sql
|
|||
|
|
- id: 主键
|
|||
|
|
- user_id: 用户ID(外键,索引)
|
|||
|
|
- name: 文件夹名称
|
|||
|
|
- description: 描述
|
|||
|
|
- icon: 图标emoji
|
|||
|
|
- sort_order: 排序权重
|
|||
|
|
- is_public: 是否公开
|
|||
|
|
- public_slug: 公开链接标识(唯一,索引)
|
|||
|
|
- created_at: 创建时间
|
|||
|
|
- 唯一约束: (user_id, name)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**collections(收藏记录表)**
|
|||
|
|
```sql
|
|||
|
|
- id: 主键
|
|||
|
|
- user_id: 用户ID(外键,索引)
|
|||
|
|
- site_id: 网站ID(外键,索引)
|
|||
|
|
- folder_id: 文件夹ID(外键,索引,可选)
|
|||
|
|
- note: 备注
|
|||
|
|
- created_at: 创建时间
|
|||
|
|
- updated_at: 更新时间
|
|||
|
|
- 唯一约束: (user_id, site_id, folder_id)
|
|||
|
|
- 复合索引: (user_id, folder_id)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔌 API 端点
|
|||
|
|
|
|||
|
|
### 认证 API
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
POST /register - 用户注册
|
|||
|
|
POST /login - 用户登录
|
|||
|
|
GET /logout - 用户登出
|
|||
|
|
GET /api/auth/status - 获取登录状态
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 收藏 API(需登录)
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
POST /api/collections/toggle - 收藏/取消收藏
|
|||
|
|
GET /api/collections/status/:code - 查询收藏状态
|
|||
|
|
GET /api/collections/list - 获取收藏列表
|
|||
|
|
PUT /api/collections/:id/note - 更新收藏备注
|
|||
|
|
PUT /api/collections/:id/move - 移动收藏
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 文件夹 API(需登录)
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
GET /api/folders - 获取文件夹列表
|
|||
|
|
POST /api/folders - 创建文件夹
|
|||
|
|
PUT /api/folders/:id - 更新文件夹
|
|||
|
|
DELETE /api/folders/:id - 删除文件夹
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 用户中心
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
GET /user/profile - 用户中心主页
|
|||
|
|
GET /user/collections - 收藏列表页面
|
|||
|
|
PUT /api/user/profile - 更新用户资料
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎨 前端更新
|
|||
|
|
|
|||
|
|
### 新增页面
|
|||
|
|
|
|||
|
|
1. **用户注册页面** (`/register`)
|
|||
|
|
- Tailwind CSS 设计
|
|||
|
|
- 表单验证
|
|||
|
|
- 密码可见性切换
|
|||
|
|
|
|||
|
|
2. **用户登录页面** (`/login`)
|
|||
|
|
- 与管理员登录页面风格一致
|
|||
|
|
- 支持 next 参数跳转
|
|||
|
|
|
|||
|
|
3. **用户中心** (`/user/profile`)
|
|||
|
|
- 侧边栏导航
|
|||
|
|
- 统计卡片
|
|||
|
|
- 最近收藏展示
|
|||
|
|
|
|||
|
|
4. **收藏列表** (`/user/collections`)
|
|||
|
|
- 文件夹标签切换
|
|||
|
|
- 工具网格展示
|
|||
|
|
- 分页支持
|
|||
|
|
- 空状态提示
|
|||
|
|
|
|||
|
|
### 界面优化
|
|||
|
|
|
|||
|
|
- **导航栏**:登录后显示用户头像和下拉菜单
|
|||
|
|
- **工具详情页**:添加收藏按钮(带动画效果)
|
|||
|
|
- **响应式设计**:所有新页面支持移动端
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔒 安全增强
|
|||
|
|
|
|||
|
|
### 权限隔离
|
|||
|
|
|
|||
|
|
- ✅ Admin 和 User 完全分离
|
|||
|
|
- ✅ 普通用户无法访问管理后台
|
|||
|
|
- ✅ 管理员无法使用收藏功能
|
|||
|
|
- ✅ 所有管理员 API 添加权限检查
|
|||
|
|
|
|||
|
|
### 受保护的路由(共14个)
|
|||
|
|
|
|||
|
|
**Flask-Admin 后台:**
|
|||
|
|
- SecureModelView(网站、标签、新闻等管理)
|
|||
|
|
- SecureAdminIndexView(控制台首页)
|
|||
|
|
|
|||
|
|
**管理员页面:**
|
|||
|
|
- /admin/change-password
|
|||
|
|
- /admin/seo-tools
|
|||
|
|
- /admin/batch-import
|
|||
|
|
|
|||
|
|
**管理员 API:**
|
|||
|
|
- /api/fetch-website-info
|
|||
|
|
- /api/upload-logo
|
|||
|
|
- /api/generate-features
|
|||
|
|
- /api/generate-description
|
|||
|
|
- /api/generate-tags
|
|||
|
|
- /api/fetch-site-news
|
|||
|
|
- /api/fetch-all-news
|
|||
|
|
- /api/generate-static-sitemap
|
|||
|
|
- /api/notify-search-engines
|
|||
|
|
|
|||
|
|
### 密码安全
|
|||
|
|
|
|||
|
|
- Werkzeug 密码哈希
|
|||
|
|
- 最短密码长度:6位
|
|||
|
|
- 最短用户名长度:3位
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📁 文件变更
|
|||
|
|
|
|||
|
|
### 新增文件(7个)
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
templates/auth/register.html - 注册页面
|
|||
|
|
templates/auth/login.html - 登录页面
|
|||
|
|
templates/user/profile.html - 用户中心
|
|||
|
|
templates/user/collections.html - 收藏列表
|
|||
|
|
create_user_tables.py - 数据库迁移脚本
|
|||
|
|
USER_SYSTEM_README.md - 用户系统文档
|
|||
|
|
CHANGELOG_v3.0.md - 本更新日志
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 修改文件(4个)
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
models.py - 新增 User、Folder、Collection 模型
|
|||
|
|
app.py - 新增路由和 API,权限检查
|
|||
|
|
templates/base_new.html - 导航栏用户菜单
|
|||
|
|
templates/detail_new.html - 收藏按钮
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🚀 部署指南
|
|||
|
|
|
|||
|
|
### 1. 数据库迁移
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
python create_user_tables.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 启动应用
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
python app.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 测试流程
|
|||
|
|
|
|||
|
|
1. 访问 `/register` 注册新用户
|
|||
|
|
2. 登录后访问工具详情页
|
|||
|
|
3. 点击"收藏"按钮测试
|
|||
|
|
4. 访问 `/user/collections` 查看收藏
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ⚠️ 破坏性变更
|
|||
|
|
|
|||
|
|
### Admin 模型变更
|
|||
|
|
|
|||
|
|
- `Admin.get_id()` 现在返回 `"admin:{id}"` 格式
|
|||
|
|
- 旧的管理员账号需要重新登录一次
|
|||
|
|
|
|||
|
|
### 权限系统
|
|||
|
|
|
|||
|
|
- 所有管理员路由现在强制检查用户类型
|
|||
|
|
- 普通用户无法访问任何管理功能
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔄 兼容性
|
|||
|
|
|
|||
|
|
- ✅ 向后兼容 v2.x 的所有功能
|
|||
|
|
- ✅ 现有管理员账号无需迁移
|
|||
|
|
- ✅ 现有网站数据完全兼容
|
|||
|
|
- ⚠️ 管理员需要重新登录一次
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📊 性能优化
|
|||
|
|
|
|||
|
|
- 收藏列表查询使用 JOIN 避免 N+1 问题
|
|||
|
|
- 添加必要的数据库索引
|
|||
|
|
- 分页支持大量收藏数据
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 后续计划(v3.1+)
|
|||
|
|
|
|||
|
|
### 待实现功能
|
|||
|
|
|
|||
|
|
- [ ] 收藏备注编辑 UI
|
|||
|
|
- [ ] 文件夹拖拽排序
|
|||
|
|
- [ ] 批量收藏操作
|
|||
|
|
- [ ] 收藏导出(CSV/JSON)
|
|||
|
|
- [ ] 公开收藏列表(分享功能)
|
|||
|
|
- [ ] 收藏统计图表
|
|||
|
|
- [ ] 邮箱验证
|
|||
|
|
- [ ] 忘记密码
|
|||
|
|
- [ ] 头像上传
|
|||
|
|
- [ ] 第三方登录(微信、GitHub)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 👥 贡献者
|
|||
|
|
|
|||
|
|
- **开发:** Claude Sonnet 4.5
|
|||
|
|
- **需求:** 项目团队
|
|||
|
|
- **测试:** 待进行
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📝 注意事项
|
|||
|
|
|
|||
|
|
1. **首次部署必须运行数据库迁移脚本**
|
|||
|
|
2. **管理员和普通用户使用不同的登录入口**
|
|||
|
|
- 管理员:`/admin/login`
|
|||
|
|
- 普通用户:`/login`
|
|||
|
|
3. **删除用户会级联删除其所有收藏和文件夹**
|
|||
|
|
4. **建议在生产环境部署前进行完整测试**
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🐛 已知问题
|
|||
|
|
|
|||
|
|
- 无
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📞 技术支持
|
|||
|
|
|
|||
|
|
如有问题,请查看:
|
|||
|
|
- 用户系统文档:`USER_SYSTEM_README.md`
|
|||
|
|
- Flask-Login 文档:https://flask-login.readthedocs.io/
|
|||
|
|
- SQLAlchemy 文档:https://docs.sqlalchemy.org/
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**版本:** v3.0.0
|
|||
|
|
**发布状态:** ✅ 稳定版
|
|||
|
|
**推荐升级:** 是
|