4.5 KiB
4.5 KiB
数据库迁移说明 - 模板市场功能
📋 概述
模板市场功能需要创建3个新的数据库表:
workflow_templates- 工作流模板表template_ratings- 模板评分表template_favorites- 模板收藏表
🔧 迁移方式
方式一:执行SQL脚本(推荐)
SQL脚本位置: backend/create_template_market_tables.sql
执行命令:
# 使用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),重启服务后会自动创建表。
重启命令:
# Docker方式
docker-compose restart backend
# 或直接重启uvicorn进程
方式三:通过Python脚本创建
from app.core.database import engine, Base
from app.models.workflow_template import WorkflowTemplate, TemplateRating, TemplateFavorite
# 创建表
Base.metadata.create_all(bind=engine)
✅ 验证表是否创建成功
方法一:通过MySQL客户端查询
SHOW TABLES LIKE 'workflow_template%';
SHOW TABLES LIKE 'template_%';
应该看到:
workflow_templatestemplate_ratingstemplate_favorites
方法二:通过API测试
# 登录获取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
- 测试前端模板市场页面
🎯 迁移完成后
迁移完成后,您可以:
-
使用模板市场功能:
- 分享工作流模板
- 搜索和浏览模板
- 收藏和评分模板
- 使用模板创建工作流
-
使用批量操作功能(不依赖新表):
- 批量执行工作流
- 批量导出工作流
- 批量删除工作流
SQL脚本位置: backend/create_template_market_tables.sql
最后更新: 2024年1月17日