clean commit

This commit is contained in:
2025-08-19 09:50:15 +02:00
parent 3c5cca407d
commit 69a947fa0b
249 changed files with 65688 additions and 0 deletions

View File

@@ -0,0 +1,186 @@
#!/usr/bin/env python3
"""
Test the enhanced workflow system with brand-ai patterns
"""
import asyncio
import aiohttp
import json
import time
async def test_enhanced_workflow_system():
async with aiohttp.ClientSession() as session:
try:
print("🔧 Testing Enhanced Workflow System")
print("=" * 50)
# Register and login test user
timestamp = int(time.time())
user_data = {
"email": f"workflowtest{timestamp}@example.com",
"password": "TestPassword123!",
"username": f"workflowtest{timestamp}"
}
async with session.post("http://localhost:58000/api/v1/auth/register", json=user_data) as response:
if response.status != 201:
error_data = await response.json()
print(f"❌ Registration failed: {error_data}")
return
print("✅ User registered")
# Login
login_data = {"email": user_data["email"], "password": user_data["password"]}
async with session.post("http://localhost:58000/api/v1/auth/login", json=login_data) as response:
if response.status != 200:
error_data = await response.json()
print(f"❌ Login failed: {error_data}")
return
login_result = await response.json()
token = login_result['access_token']
headers = {'Authorization': f'Bearer {token}'}
print("✅ Login successful")
# Test 1: Check workflow module status
print("\n📊 Test 1: Module Status")
async with session.get("http://localhost:58000/api/v1/modules/", headers=headers) as response:
if response.status == 200:
modules_data = await response.json()
workflow_module = None
for module in modules_data.get('modules', []):
if module.get('name') == 'workflow':
workflow_module = module
break
if workflow_module:
print(f"✅ Workflow module found: {workflow_module.get('status', 'unknown')}")
print(f" Initialized: {workflow_module.get('initialized', False)}")
print(f" Version: {workflow_module.get('version', 'unknown')}")
else:
print("❌ Workflow module not found")
return
else:
print(f"❌ Failed to get module status: {response.status}")
return
# Test 2: Create a simple brand naming workflow
print("\n🏭 Test 2: Brand Naming Workflow")
brand_workflow = {
"name": "Brand Name Generation",
"description": "Generate brand names using AI generation step",
"version": "1.0.0",
"steps": [
{
"id": "ai_gen_step",
"name": "Generate Brand Names",
"type": "ai_generation",
"config": {
"operation": "brand_names",
"category": "semantic",
"model": "openrouter/anthropic/claude-3.5-sonnet",
"temperature": 0.8,
"max_tokens": 500,
"output_key": "brand_names",
"prompt_template": "Generate 3 creative brand names for a {industry} company targeting {target_audience}. Company description: {description}. Return as a JSON list with name and description fields."
},
"enabled": True
},
{
"id": "filter_step",
"name": "Filter Quality Names",
"type": "filter",
"config": {
"input_key": "brand_names",
"output_key": "filtered_names",
"filter_expression": "len(item.get('name', '')) > 3",
"keep_original": False
},
"enabled": True
}
],
"variables": {
"industry": "technology",
"target_audience": "developers",
"description": "A platform for AI development tools"
}
}
# Test workflow execution - FastAPI expects both parameters
payload = {
"workflow_def": brand_workflow,
"input_data": {
"industry": "technology",
"target_audience": "developers",
"description": "A platform for AI development tools"
}
}
async with session.post(
"http://localhost:58000/api/modules/v1/workflow/execute",
json=payload,
headers=headers,
timeout=aiohttp.ClientTimeout(total=30)
) as response:
print(f"Workflow execution status: {response.status}")
if response.status == 200:
result = await response.json()
execution_id = result.get("execution_id")
print(f"✅ Workflow started: {execution_id}")
print(f" Status: {result.get('status', 'unknown')}")
# Check for results
if result.get("results"):
print(f" Results available: {len(result.get('results', {}))}")
# Display brand names if available
brand_names = result.get("results", {}).get("brand_names", [])
if brand_names:
print(f" Generated brand names: {len(brand_names)}")
for i, name_info in enumerate(brand_names[:3]): # Show first 3
name = name_info.get('name', 'Unknown')
desc = name_info.get('description', 'No description')
print(f" {i+1}. {name}: {desc[:50]}...")
# Display filtered results
filtered_names = result.get("results", {}).get("filtered_names", [])
if filtered_names:
print(f" Filtered to {len(filtered_names)} quality names")
else:
print(" No results yet (workflow may still be running)")
elif response.status == 503:
print("⚠️ Workflow module not initialized (expected on first run)")
else:
error_data = await response.json()
print(f"❌ Workflow execution failed: {error_data}")
# Test 3: Check workflow templates
print("\n📈 Test 3: Workflow Templates")
try:
async with session.get("http://localhost:58000/api/modules/v1/workflow/templates", headers=headers) as response:
if response.status == 200:
templates = await response.json()
print(f"✅ Workflow templates available: {len(templates.get('templates', []))}")
for template in templates.get('templates', [])[:2]: # Show first 2
print(f" - {template.get('name')}: {template.get('description')}")
else:
print(f" Templates not available: {response.status}")
except Exception as e:
print(f" Templates endpoint error: {e}")
print(f"\n🎯 Enhanced Workflow System Test Complete!")
print("The workflow system now supports:")
print(" ✅ Brand-AI inspired step types (AI Generation, Filter, Map, Reduce, etc.)")
print(" ✅ AI-powered content generation")
print(" ✅ Data transformation and filtering")
print(" ✅ Complex workflow orchestration")
print(" ✅ Variable templating and context management")
except Exception as e:
print(f"❌ Test error: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
asyncio.run(test_enhanced_workflow_system())