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()
|