202 lines
7.4 KiB
Python
202 lines
7.4 KiB
Python
#!/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()
|