Files
aiagent/数据库迁移说明-模板市场.md

171 lines
4.5 KiB
Markdown
Raw Permalink Normal View History

2026-01-19 00:09:36 +08:00
# 数据库迁移说明 - 模板市场功能
## 📋 概述
模板市场功能需要创建3个新的数据库表
1. `workflow_templates` - 工作流模板表
2. `template_ratings` - 模板评分表
3. `template_favorites` - 模板收藏表
## 🔧 迁移方式
### 方式一执行SQL脚本推荐
**SQL脚本位置**: `backend/create_template_market_tables.sql`
**执行命令**:
```bash
# 使用MySQL客户端
mysql -h [数据库地址] -u [用户名] -p [数据库名] < backend/create_template_market_tables.sql
# 例如(根据您的配置):
mysql -h gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com -P 24936 -u root -p agent_db < backend/create_template_market_tables.sql
```
### 方式二:重启后端服务(自动创建)
如果后端服务配置了自动创建表(使用 `Base.metadata.create_all`),重启服务后会自动创建表。
**重启命令**:
```bash
# Docker方式
docker-compose restart backend
# 或直接重启uvicorn进程
```
### 方式三通过Python脚本创建
```python
from app.core.database import engine, Base
from app.models.workflow_template import WorkflowTemplate, TemplateRating, TemplateFavorite
# 创建表
Base.metadata.create_all(bind=engine)
```
## ✅ 验证表是否创建成功
### 方法一通过MySQL客户端查询
```sql
SHOW TABLES LIKE 'workflow_template%';
SHOW TABLES LIKE 'template_%';
```
应该看到:
- `workflow_templates`
- `template_ratings`
- `template_favorites`
### 方法二通过API测试
```bash
# 登录获取token
curl -X POST http://101.43.95.130:8037/api/v1/auth/login \
-d "username=test_user&password=test_password123"
# 测试模板市场API
curl -X GET http://101.43.95.130:8037/api/v1/template-market \
-H "Authorization: Bearer <token>"
```
如果返回200状态码和空数组 `[]`,说明表已创建成功。
## 📊 表结构说明
### workflow_templates工作流模板表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | CHAR(36) | 模板ID主键 |
| name | VARCHAR(100) | 模板名称 |
| description | TEXT | 模板描述 |
| category | VARCHAR(50) | 分类 |
| tags | JSON | 标签列表 |
| nodes | JSON | 节点配置 |
| edges | JSON | 边配置 |
| thumbnail | VARCHAR(500) | 缩略图URL |
| is_public | BOOLEAN | 是否公开 |
| is_featured | BOOLEAN | 是否精选 |
| view_count | INT | 查看次数 |
| use_count | INT | 使用次数 |
| rating_count | INT | 评分次数 |
| rating_avg | FLOAT | 平均评分 |
| user_id | CHAR(36) | 创建者ID外键 |
| created_at | DATETIME | 创建时间 |
| updated_at | DATETIME | 更新时间 |
### template_ratings模板评分表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | CHAR(36) | 评分ID主键 |
| template_id | CHAR(36) | 模板ID外键 |
| user_id | CHAR(36) | 用户ID外键 |
| rating | INT | 评分1-5 |
| comment | TEXT | 评论 |
| created_at | DATETIME | 创建时间 |
| updated_at | DATETIME | 更新时间 |
**唯一约束**: `(template_id, user_id)` - 每个用户对每个模板只能评分一次
### template_favorites模板收藏表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | CHAR(36) | 收藏ID主键 |
| template_id | CHAR(36) | 模板ID外键 |
| user_id | CHAR(36) | 用户ID外键 |
| created_at | DATETIME | 创建时间 |
**唯一约束**: `(template_id, user_id)` - 每个用户对每个模板只能收藏一次
## 🐛 常见问题
### 问题1: 表创建失败 - 外键约束错误
**原因**: `users` 表不存在或结构不匹配
**解决**: 确保 `users` 表已存在且 `id` 字段类型为 `CHAR(36)`
### 问题2: JSON字段不支持
**原因**: MySQL版本过低需要5.7+
**解决**: 升级MySQL版本或使用 `TEXT` 类型替代 `JSON`
### 问题3: 表已存在错误
**原因**: 表已经创建过
**解决**: 使用 `CREATE TABLE IF NOT EXISTS` 可以安全地重复执行
## 📝 迁移检查清单
- [ ] SQL脚本已创建
- [ ] 执行SQL脚本或重启后端服务
- [ ] 验证表是否创建成功
- [ ] 测试模板市场API
- [ ] 测试前端模板市场页面
## 🎯 迁移完成后
迁移完成后,您可以:
1. **使用模板市场功能**:
- 分享工作流模板
- 搜索和浏览模板
- 收藏和评分模板
- 使用模板创建工作流
2. **使用批量操作功能**(不依赖新表):
- 批量执行工作流
- 批量导出工作流
- 批量删除工作流
---
**SQL脚本位置**: `backend/create_template_market_tables.sql`
**最后更新**: 2024年1月17日