478 lines
15 KiB
JavaScript
478 lines
15 KiB
JavaScript
/**
|
|
* AI Integration Usage Examples
|
|
*
|
|
* This script demonstrates how to use the AI-powered task management endpoints
|
|
* in various scenarios.
|
|
*/
|
|
|
|
const API_BASE = 'http://localhost:3000/api/ai';
|
|
|
|
/**
|
|
* Example 1: Create a task from natural language
|
|
*/
|
|
async function createTaskExample() {
|
|
console.log('=== Creating Task from Natural Language ===');
|
|
|
|
try {
|
|
const response = await fetch(`${API_BASE}/create-task`, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify({
|
|
prompt: 'Implement user authentication with JWT tokens and password reset functionality',
|
|
projectId: 'ecommerce-platform',
|
|
context: {
|
|
projectDescription: 'Modern e-commerce platform built with React and Node.js',
|
|
currentTasks: [
|
|
'Database schema design',
|
|
'API endpoint structure',
|
|
'Frontend component library'
|
|
],
|
|
completedTasks: [
|
|
'Project initialization',
|
|
'Development environment setup',
|
|
'CI/CD pipeline'
|
|
],
|
|
userRole: 'full-stack developer'
|
|
}
|
|
})
|
|
});
|
|
|
|
const result = await response.json();
|
|
|
|
if (result.success) {
|
|
console.log('✅ Task created successfully:');
|
|
console.log(` Title: ${result.data.title}`);
|
|
console.log(` Priority: ${result.data.priority}`);
|
|
console.log(` Complexity: ${result.data.complexity}`);
|
|
console.log(` Estimated Hours: ${result.data.estimatedHours}`);
|
|
console.log(` Tags: ${result.data.tags?.join(', ')}`);
|
|
console.log(' Acceptance Criteria:');
|
|
result.data.acceptanceCriteria?.forEach((criteria, index) => {
|
|
console.log(` ${index + 1}. ${criteria}`);
|
|
});
|
|
|
|
return result.data;
|
|
} else {
|
|
console.error('❌ Failed to create task:', result.error);
|
|
}
|
|
} catch (error) {
|
|
console.error('❌ Request failed:', error.message);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Example 2: Break down a complex task into subtasks
|
|
*/
|
|
async function breakdownTaskExample() {
|
|
console.log('\n=== Breaking Down Complex Task ===');
|
|
|
|
try {
|
|
const taskId = 'auth-system-task-123';
|
|
const response = await fetch(`${API_BASE}/breakdown/${taskId}`, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify({
|
|
taskDescription: 'Implement complete user authentication system with JWT tokens, password reset, email verification, and role-based access control',
|
|
context: 'Node.js Express API with PostgreSQL database, React frontend, using industry security best practices'
|
|
})
|
|
});
|
|
|
|
const result = await response.json();
|
|
|
|
if (result.success) {
|
|
console.log('✅ Task breakdown completed:');
|
|
console.log(` Main Task: ${result.data.title}`);
|
|
console.log(` Complexity: ${result.data.complexity}`);
|
|
console.log(` Total Estimated Hours: ${result.data.estimatedTotalHours}`);
|
|
console.log(' Subtasks:');
|
|
|
|
result.data.subtasks.forEach((subtask, index) => {
|
|
console.log(` ${index + 1}. ${subtask.title} (${subtask.estimatedHours}h)`);
|
|
console.log(` ${subtask.description}`);
|
|
});
|
|
|
|
if (result.data.suggestedApproach) {
|
|
console.log(` Suggested Approach: ${result.data.suggestedApproach}`);
|
|
}
|
|
|
|
return result.data;
|
|
} else {
|
|
console.error('❌ Failed to break down task:', result.error);
|
|
}
|
|
} catch (error) {
|
|
console.error('❌ Request failed:', error.message);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Example 3: Get AI-powered task suggestions
|
|
*/
|
|
async function getTaskSuggestionsExample() {
|
|
console.log('\n=== Getting Task Suggestions ===');
|
|
|
|
try {
|
|
const projectId = 'ecommerce-platform';
|
|
const params = new URLSearchParams({
|
|
projectDescription: 'Modern e-commerce platform with real-time features',
|
|
completedTasks: 'User authentication,Product catalog,Shopping cart',
|
|
currentTasks: 'Payment integration,Order management',
|
|
goals: 'Launch MVP,Scale to 10k users,Mobile app'
|
|
});
|
|
|
|
const response = await fetch(`${API_BASE}/suggestions/${projectId}?${params}`);
|
|
const result = await response.json();
|
|
|
|
if (result.success) {
|
|
console.log('✅ Task suggestions generated:');
|
|
console.log(` Project: ${projectId}`);
|
|
|
|
result.data.forEach((suggestion, index) => {
|
|
console.log(`\n ${index + 1}. ${suggestion.title} (Priority: ${suggestion.priority})`);
|
|
console.log(` ${suggestion.description}`);
|
|
console.log(` Rationale: ${suggestion.rationale}`);
|
|
console.log(` Confidence: ${(suggestion.confidence * 100).toFixed(1)}%`);
|
|
if (suggestion.estimatedHours) {
|
|
console.log(` Estimated Hours: ${suggestion.estimatedHours}`);
|
|
}
|
|
});
|
|
|
|
return result.data;
|
|
} else {
|
|
console.error('❌ Failed to get suggestions:', result.error);
|
|
}
|
|
} catch (error) {
|
|
console.error('❌ Request failed:', error.message);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Example 4: Update task context with feedback
|
|
*/
|
|
async function updateTaskContextExample() {
|
|
console.log('\n=== Updating Task Context with Feedback ===');
|
|
|
|
try {
|
|
const taskId = 'auth-system-task-123';
|
|
const response = await fetch(`${API_BASE}/update-context/${taskId}`, {
|
|
method: 'PUT',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify({
|
|
feedback: 'Task needs to include two-factor authentication (2FA) support and integration with OAuth providers like Google and GitHub. Security requirements are more stringent than initially specified.'
|
|
})
|
|
});
|
|
|
|
const result = await response.json();
|
|
|
|
if (result.success) {
|
|
console.log('✅ Task context updated successfully');
|
|
console.log(' Feedback has been recorded for future AI interactions');
|
|
} else {
|
|
console.error('❌ Failed to update context:', result.error);
|
|
}
|
|
} catch (error) {
|
|
console.error('❌ Request failed:', error.message);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Example 5: Monitor AI service health and usage
|
|
*/
|
|
async function monitoringExample() {
|
|
console.log('\n=== Monitoring AI Services ===');
|
|
|
|
try {
|
|
// Check service health
|
|
const healthResponse = await fetch(`${API_BASE}/health`);
|
|
const health = await healthResponse.json();
|
|
|
|
console.log('🔍 Service Health Status:');
|
|
console.log(` Overall Health: ${health.healthy ? '✅ Healthy' : '❌ Degraded'}`);
|
|
console.log(` OpenAI: ${health.services.openai ? '✅' : '❌'}`);
|
|
console.log(` LangChain: ${health.services.langchain ? '✅' : '❌'}`);
|
|
console.log(` Redis Cache: ${health.services.redis ? '✅' : '❌'}`);
|
|
console.log(` Rate Limiter: ${health.services.rateLimiter ? '✅' : '❌'}`);
|
|
|
|
// Get usage statistics
|
|
const usageResponse = await fetch(`${API_BASE}/usage`);
|
|
const usage = await usageResponse.json();
|
|
|
|
console.log('\n📊 Usage Statistics:');
|
|
console.log(` Total Requests: ${usage.data.openai.requestCount}`);
|
|
console.log(` Tokens Used: ${usage.data.openai.totalTokensUsed.toLocaleString()}`);
|
|
console.log(` Estimated Cost: $${usage.data.openai.estimatedCost.toFixed(4)}`);
|
|
console.log(` AI Contexts Saved: ${usage.data.totalContextsSaved}`);
|
|
|
|
if (usage.data.cacheHitRate !== undefined) {
|
|
console.log(` Cache Hit Rate: ${(usage.data.cacheHitRate * 100).toFixed(1)}%`);
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error('❌ Monitoring request failed:', error.message);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Example 6: Test AI service connections
|
|
*/
|
|
async function testConnectionsExample() {
|
|
console.log('\n=== Testing AI Service Connections ===');
|
|
|
|
try {
|
|
const response = await fetch(`${API_BASE}/test-connection`, {
|
|
method: 'POST'
|
|
});
|
|
|
|
const result = await response.json();
|
|
|
|
if (result.success) {
|
|
console.log('🧪 Connection Test Results:');
|
|
console.log(` OpenAI: ${result.connections.openai ? '✅ Connected' : '❌ Failed'}`);
|
|
console.log(` LangChain: ${result.connections.langchain ? '✅ Connected' : '❌ Failed'}`);
|
|
console.log(` Status: ${result.message}`);
|
|
} else {
|
|
console.error('❌ Connection test failed:', result.error);
|
|
}
|
|
} catch (error) {
|
|
console.error('❌ Request failed:', error.message);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Example 7: Warm cache for better performance
|
|
*/
|
|
async function warmCacheExample() {
|
|
console.log('\n=== Warming Cache for Better Performance ===');
|
|
|
|
try {
|
|
const response = await fetch(`${API_BASE}/warm-cache`, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify({
|
|
projectId: 'ecommerce-platform'
|
|
})
|
|
});
|
|
|
|
const result = await response.json();
|
|
|
|
if (result.success) {
|
|
console.log('🔥 Cache warming initiated');
|
|
console.log(` Project: ${result.projectId}`);
|
|
console.log(' Common queries will be pre-cached for faster responses');
|
|
} else {
|
|
console.error('❌ Failed to warm cache:', result.error);
|
|
}
|
|
} catch (error) {
|
|
console.error('❌ Request failed:', error.message);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Example 8: Complete workflow - Create, breakdown, and get suggestions
|
|
*/
|
|
async function completeWorkflowExample() {
|
|
console.log('\n=== Complete AI Workflow Example ===');
|
|
|
|
try {
|
|
// Step 1: Create a task from natural language
|
|
console.log('Step 1: Creating task from natural language...');
|
|
const task = await createTaskFromPrompt(
|
|
'Build a real-time notification system with email, SMS, and push notification support'
|
|
);
|
|
|
|
if (!task) return;
|
|
|
|
// Step 2: Break down the task
|
|
console.log('\nStep 2: Breaking down the task...');
|
|
const breakdown = await breakdownTask(task.id, task.description);
|
|
|
|
// Step 3: Get related suggestions
|
|
console.log('\nStep 3: Getting related task suggestions...');
|
|
await getRelatedSuggestions('notification-system-project');
|
|
|
|
// Step 4: Provide feedback
|
|
console.log('\nStep 4: Providing feedback...');
|
|
await provideFeedback(task.id, 'Include notification preferences and user opt-out functionality');
|
|
|
|
console.log('\n✅ Complete workflow finished successfully');
|
|
|
|
} catch (error) {
|
|
console.error('❌ Workflow failed:', error.message);
|
|
}
|
|
}
|
|
|
|
// Helper functions for complete workflow
|
|
async function createTaskFromPrompt(prompt) {
|
|
const response = await fetch(`${API_BASE}/create-task`, {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({
|
|
prompt,
|
|
projectId: 'notification-system-project',
|
|
context: {
|
|
projectDescription: 'Enterprise notification platform',
|
|
userRole: 'backend developer'
|
|
}
|
|
})
|
|
});
|
|
|
|
const result = await response.json();
|
|
return result.success ? { ...result.data, id: `task-${Date.now()}` } : null;
|
|
}
|
|
|
|
async function breakdownTask(taskId, description) {
|
|
const response = await fetch(`${API_BASE}/breakdown/${taskId}`, {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({
|
|
taskDescription: description,
|
|
context: 'Node.js microservices architecture with message queues'
|
|
})
|
|
});
|
|
|
|
const result = await response.json();
|
|
if (result.success) {
|
|
console.log(` Created ${result.data.subtasks?.length || 0} subtasks`);
|
|
}
|
|
return result.success ? result.data : null;
|
|
}
|
|
|
|
async function getRelatedSuggestions(projectId) {
|
|
const params = new URLSearchParams({
|
|
projectDescription: 'Enterprise notification platform',
|
|
completedTasks: 'Architecture design,Database setup',
|
|
currentTasks: 'Notification system',
|
|
goals: 'High availability,Scalability'
|
|
});
|
|
|
|
const response = await fetch(`${API_BASE}/suggestions/${projectId}?${params}`);
|
|
const result = await response.json();
|
|
|
|
if (result.success) {
|
|
console.log(` Generated ${result.data.length} task suggestions`);
|
|
}
|
|
|
|
return result.success ? result.data : null;
|
|
}
|
|
|
|
async function provideFeedback(taskId, feedback) {
|
|
const response = await fetch(`${API_BASE}/update-context/${taskId}`, {
|
|
method: 'PUT',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({ feedback })
|
|
});
|
|
|
|
const result = await response.json();
|
|
return result.success;
|
|
}
|
|
|
|
/**
|
|
* Example 9: Error handling patterns
|
|
*/
|
|
async function errorHandlingExample() {
|
|
console.log('\n=== Error Handling Examples ===');
|
|
|
|
// Example of validation error
|
|
try {
|
|
console.log('Testing validation error...');
|
|
const response = await fetch(`${API_BASE}/create-task`, {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({
|
|
prompt: '', // Invalid: empty prompt
|
|
})
|
|
});
|
|
|
|
const result = await response.json();
|
|
if (!result.success && result.error === 'Validation error') {
|
|
console.log('✅ Validation error handled correctly');
|
|
console.log(' Details:', result.details[0].message);
|
|
}
|
|
} catch (error) {
|
|
console.error('❌ Validation test failed:', error.message);
|
|
}
|
|
|
|
// Example of handling service unavailable
|
|
try {
|
|
console.log('\nTesting service health...');
|
|
const response = await fetch(`${API_BASE}/health`);
|
|
const result = await response.json();
|
|
|
|
if (response.status === 503) {
|
|
console.log('⚠️ AI services are degraded');
|
|
console.log(' Implementing fallback behavior...');
|
|
// Implement fallback logic here
|
|
} else {
|
|
console.log('✅ All AI services are operational');
|
|
}
|
|
} catch (error) {
|
|
console.log('❌ Service completely unavailable - using offline mode');
|
|
// Implement offline mode here
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Main execution function
|
|
*/
|
|
async function runExamples() {
|
|
console.log('🤖 AI Integration Usage Examples\n');
|
|
console.log('This script demonstrates various AI-powered task management features.\n');
|
|
|
|
try {
|
|
// Run all examples
|
|
await createTaskExample();
|
|
await breakdownTaskExample();
|
|
await getTaskSuggestionsExample();
|
|
await updateTaskContextExample();
|
|
await monitoringExample();
|
|
await testConnectionsExample();
|
|
await warmCacheExample();
|
|
await errorHandlingExample();
|
|
|
|
// Run complete workflow if all basic examples succeed
|
|
await completeWorkflowExample();
|
|
|
|
console.log('\n🎉 All examples completed successfully!');
|
|
console.log('\nNext steps:');
|
|
console.log('1. Integrate these patterns into your application');
|
|
console.log('2. Set up monitoring and alerting');
|
|
console.log('3. Configure rate limiting based on your usage patterns');
|
|
console.log('4. Implement user feedback collection for continuous improvement');
|
|
|
|
} catch (error) {
|
|
console.error('\n❌ Examples failed:', error.message);
|
|
console.log('\nTroubleshooting:');
|
|
console.log('1. Make sure the API server is running on localhost:3000');
|
|
console.log('2. Check that your OpenAI API key is configured');
|
|
console.log('3. Verify Redis is running for caching features');
|
|
console.log('4. Check the AI integration guide for setup instructions');
|
|
}
|
|
}
|
|
|
|
// Export for use in other modules
|
|
if (typeof module !== 'undefined' && module.exports) {
|
|
module.exports = {
|
|
createTaskExample,
|
|
breakdownTaskExample,
|
|
getTaskSuggestionsExample,
|
|
updateTaskContextExample,
|
|
monitoringExample,
|
|
testConnectionsExample,
|
|
warmCacheExample,
|
|
completeWorkflowExample,
|
|
errorHandlingExample,
|
|
runExamples
|
|
};
|
|
}
|
|
|
|
// Run examples if script is executed directly
|
|
if (typeof require !== 'undefined' && require.main === module) {
|
|
runExamples().catch(console.error);
|
|
} |