Files
aiagent/backend/insert_template_data_simple.py
2026-01-19 00:09:36 +08:00

202 lines
7.4 KiB
Python
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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.
#!/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()