Files
aiagent/数据库迁移说明-模板市场.md
2026-01-19 00:09:36 +08:00

171 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 数据库迁移说明 - 模板市场功能
## 📋 概述
模板市场功能需要创建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日