第一次提交
This commit is contained in:
201
backend/insert_template_data_simple.py
Normal file
201
backend/insert_template_data_simple.py
Normal file
@@ -0,0 +1,201 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
简单的模板数据插入脚本
|
||||
直接使用数据库连接,不依赖app模块
|
||||
"""
|
||||
import pymysql
|
||||
import json
|
||||
import uuid
|
||||
from datetime import datetime, timedelta
|
||||
import random
|
||||
|
||||
# 数据库配置(从config.py中获取)
|
||||
DB_CONFIG = {
|
||||
'host': 'gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com',
|
||||
'port': 24936,
|
||||
'user': 'root',
|
||||
'password': '!Rjb12191',
|
||||
'database': 'agent_db',
|
||||
'charset': 'utf8mb4'
|
||||
}
|
||||
|
||||
# 模板数据
|
||||
TEMPLATES = [
|
||||
{
|
||||
"name": "智能客服工作流",
|
||||
"description": "一个完整的智能客服工作流,支持自动回复、问题分类和转人工功能。",
|
||||
"category": "llm",
|
||||
"tags": ["客服", "AI", "自动化"],
|
||||
"is_featured": True
|
||||
},
|
||||
{
|
||||
"name": "数据清洗工作流",
|
||||
"description": "自动清洗和转换数据,支持多种数据源格式。",
|
||||
"category": "data_processing",
|
||||
"tags": ["数据处理", "ETL", "数据清洗"],
|
||||
"is_featured": False
|
||||
},
|
||||
{
|
||||
"name": "定时数据同步",
|
||||
"description": "定时从数据库同步数据到另一个系统,支持增量同步。",
|
||||
"category": "automation",
|
||||
"tags": ["定时任务", "数据同步", "自动化"],
|
||||
"is_featured": True
|
||||
},
|
||||
{
|
||||
"name": "API数据聚合",
|
||||
"description": "从多个API获取数据并聚合处理,支持错误重试。",
|
||||
"category": "integration",
|
||||
"tags": ["API", "数据聚合", "集成"],
|
||||
"is_featured": False
|
||||
},
|
||||
{
|
||||
"name": "邮件通知工作流",
|
||||
"description": "根据条件发送邮件通知,支持HTML格式和附件。",
|
||||
"category": "automation",
|
||||
"tags": ["邮件", "通知", "自动化"],
|
||||
"is_featured": True
|
||||
},
|
||||
{
|
||||
"name": "内容生成工作流",
|
||||
"description": "使用AI生成文章、摘要等内容,支持多种格式输出。",
|
||||
"category": "llm",
|
||||
"tags": ["AI", "内容生成", "LLM"],
|
||||
"is_featured": False
|
||||
},
|
||||
{
|
||||
"name": "文件处理工作流",
|
||||
"description": "批量处理文件,支持上传、下载、格式转换等功能。",
|
||||
"category": "data_processing",
|
||||
"tags": ["文件处理", "批量操作"],
|
||||
"is_featured": False
|
||||
},
|
||||
{
|
||||
"name": "Webhook触发器",
|
||||
"description": "接收外部Webhook请求并触发工作流,支持多种认证方式。",
|
||||
"category": "integration",
|
||||
"tags": ["Webhook", "触发器", "集成"],
|
||||
"is_featured": True
|
||||
}
|
||||
]
|
||||
|
||||
# 简单的节点和边配置
|
||||
SIMPLE_NODES = [
|
||||
{"id": "start", "type": "start", "position": {"x": 100, "y": 100}, "data": {"label": "开始"}},
|
||||
{"id": "input", "type": "input", "position": {"x": 300, "y": 100}, "data": {"label": "输入"}},
|
||||
{"id": "process", "type": "transform", "position": {"x": 500, "y": 100}, "data": {"label": "处理"}},
|
||||
{"id": "output", "type": "output", "position": {"x": 700, "y": 100}, "data": {"label": "输出"}},
|
||||
{"id": "end", "type": "end", "position": {"x": 900, "y": 100}, "data": {"label": "结束"}}
|
||||
]
|
||||
|
||||
SIMPLE_EDGES = [
|
||||
{"id": "e1", "source": "start", "target": "input"},
|
||||
{"id": "e2", "source": "input", "target": "process"},
|
||||
{"id": "e3", "source": "process", "target": "output"},
|
||||
{"id": "e4", "source": "output", "target": "end"}
|
||||
]
|
||||
|
||||
def insert_templates():
|
||||
"""插入模板数据"""
|
||||
try:
|
||||
# 连接数据库
|
||||
connection = pymysql.connect(**DB_CONFIG)
|
||||
|
||||
try:
|
||||
with connection.cursor() as cursor:
|
||||
# 获取第一个用户ID
|
||||
cursor.execute("SELECT id FROM users LIMIT 1")
|
||||
user_result = cursor.fetchone()
|
||||
|
||||
if not user_result:
|
||||
print("❌ 没有找到用户,请先创建用户")
|
||||
return
|
||||
|
||||
user_id = user_result[0]
|
||||
print(f"✅ 使用用户ID: {user_id}")
|
||||
print()
|
||||
|
||||
# 检查模板是否已存在
|
||||
cursor.execute("SELECT COUNT(*) FROM workflow_templates WHERE user_id = %s", (user_id,))
|
||||
existing_count = cursor.fetchone()[0]
|
||||
|
||||
if existing_count > 0:
|
||||
print(f"ℹ️ 已存在 {existing_count} 个模板,跳过插入")
|
||||
return
|
||||
|
||||
# 插入模板
|
||||
added_count = 0
|
||||
for template_info in TEMPLATES:
|
||||
template_id = str(uuid.uuid4())
|
||||
nodes_json = json.dumps(SIMPLE_NODES, ensure_ascii=False)
|
||||
edges_json = json.dumps(SIMPLE_EDGES, ensure_ascii=False)
|
||||
tags_json = json.dumps(template_info["tags"], ensure_ascii=False)
|
||||
|
||||
view_count = random.randint(0, 1000)
|
||||
use_count = random.randint(0, 100)
|
||||
rating_count = random.randint(0, 50)
|
||||
rating_avg = round(random.uniform(3.5, 5.0), 1)
|
||||
days_ago = random.randint(0, 30)
|
||||
created_at = datetime.now() - timedelta(days=days_ago)
|
||||
updated_at = datetime.now() - timedelta(days=random.randint(0, 7))
|
||||
|
||||
sql = """
|
||||
INSERT INTO workflow_templates (
|
||||
id, name, description, category, tags, nodes, edges,
|
||||
is_public, is_featured, view_count, use_count, rating_count, rating_avg,
|
||||
user_id, created_at, updated_at
|
||||
) VALUES (
|
||||
%s, %s, %s, %s, %s, %s, %s,
|
||||
%s, %s, %s, %s, %s, %s,
|
||||
%s, %s, %s
|
||||
)
|
||||
"""
|
||||
|
||||
cursor.execute(sql, (
|
||||
template_id,
|
||||
template_info["name"],
|
||||
template_info["description"],
|
||||
template_info["category"],
|
||||
tags_json,
|
||||
nodes_json,
|
||||
edges_json,
|
||||
True,
|
||||
template_info["is_featured"],
|
||||
view_count,
|
||||
use_count,
|
||||
rating_count,
|
||||
rating_avg,
|
||||
user_id,
|
||||
created_at,
|
||||
updated_at
|
||||
))
|
||||
added_count += 1
|
||||
print(f"✅ 添加模板: {template_info['name']}")
|
||||
|
||||
connection.commit()
|
||||
|
||||
print()
|
||||
print("=" * 60)
|
||||
print(f"✅ 数据添加完成!")
|
||||
print(f" 新增: {added_count} 个模板")
|
||||
print("=" * 60)
|
||||
|
||||
# 查询总数
|
||||
cursor.execute("SELECT COUNT(*) FROM workflow_templates WHERE user_id = %s", (user_id,))
|
||||
total_count = cursor.fetchone()[0]
|
||||
print(f" 当前模板总数: {total_count} 个")
|
||||
|
||||
finally:
|
||||
connection.close()
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ 执行失败: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("=" * 60)
|
||||
print("模板市场假数据生成工具")
|
||||
print("=" * 60)
|
||||
print()
|
||||
insert_templates()
|
||||
Reference in New Issue
Block a user