- Added ownerId field to Task model to associate tasks with users. - Updated TaskService methods to enforce user ownership in task operations. - Enhanced API routes to include user authentication and ownership checks. - Modified DailyService and analytics services to filter tasks by user. - Integrated user session handling in various components for personalized task management.
156 lines
4.6 KiB
TypeScript
156 lines
4.6 KiB
TypeScript
import { tasksService } from '../src/services/task-management/tasks';
|
|
import { TaskStatus, TaskPriority } from '../src/lib/types';
|
|
import { prisma } from '../src/services/core/database';
|
|
|
|
/**
|
|
* Script pour ajouter des données de test avec tags et variété
|
|
*/
|
|
async function seedTestData() {
|
|
console.log('🌱 Ajout de données de test...');
|
|
console.log('================================');
|
|
|
|
// Récupérer le premier user ou créer un user temporaire
|
|
let userId: string;
|
|
const firstUser = await prisma.user.findFirst({
|
|
orderBy: { createdAt: 'asc' },
|
|
});
|
|
|
|
if (firstUser) {
|
|
userId = firstUser.id;
|
|
console.log(`👤 Utilisation du user existant: ${firstUser.email}`);
|
|
} else {
|
|
// Créer un user temporaire pour les tests
|
|
const tempUser = await prisma.user.create({
|
|
data: {
|
|
email: 'test@example.com',
|
|
name: 'Test User',
|
|
password: '$2b$10$temp', // Mot de passe temporaire
|
|
},
|
|
});
|
|
userId = tempUser.id;
|
|
console.log(`👤 User temporaire créé: ${tempUser.email}`);
|
|
}
|
|
|
|
const testTasks = [
|
|
{
|
|
title: '🎨 Design System Implementation',
|
|
description:
|
|
'Create and implement a comprehensive design system with reusable components',
|
|
status: 'in_progress' as TaskStatus,
|
|
priority: 'high' as TaskPriority,
|
|
tags: ['design', 'ui', 'frontend'],
|
|
dueDate: new Date('2025-12-31'),
|
|
},
|
|
{
|
|
title: '🔧 API Performance Optimization',
|
|
description:
|
|
'Optimize API endpoints response time and implement pagination',
|
|
status: 'todo' as TaskStatus,
|
|
priority: 'medium' as TaskPriority,
|
|
tags: ['backend', 'performance', 'api'],
|
|
dueDate: new Date('2025-12-15'),
|
|
},
|
|
{
|
|
title: '✅ Test Coverage Improvement',
|
|
description: 'Increase test coverage for core components and services',
|
|
status: 'todo' as TaskStatus,
|
|
priority: 'medium' as TaskPriority,
|
|
tags: ['testing', 'quality'],
|
|
dueDate: new Date('2025-12-20'),
|
|
},
|
|
{
|
|
title: '📱 Mobile Responsive Design',
|
|
description: 'Ensure all pages are fully responsive on mobile devices',
|
|
status: 'todo' as TaskStatus,
|
|
priority: 'high' as TaskPriority,
|
|
tags: ['frontend', 'mobile', 'ui'],
|
|
dueDate: new Date('2025-12-10'),
|
|
},
|
|
{
|
|
title: '🔒 Security Audit',
|
|
description: 'Conduct a comprehensive security audit of the application',
|
|
status: 'backlog' as TaskStatus,
|
|
priority: 'urgent' as TaskPriority,
|
|
tags: ['security', 'audit'],
|
|
dueDate: new Date('2026-01-15'),
|
|
},
|
|
];
|
|
|
|
let createdCount = 0;
|
|
let errorCount = 0;
|
|
|
|
for (const taskData of testTasks) {
|
|
try {
|
|
const task = await tasksService.createTask({
|
|
...taskData,
|
|
ownerId: userId, // Ajouter l'ownerId
|
|
});
|
|
|
|
const statusEmoji = {
|
|
backlog: '📋',
|
|
todo: '⏳',
|
|
in_progress: '🔄',
|
|
freeze: '🧊',
|
|
done: '✅',
|
|
cancelled: '❌',
|
|
archived: '📦',
|
|
}[task.status];
|
|
|
|
const priorityEmoji = {
|
|
low: '🔵',
|
|
medium: '🟡',
|
|
high: '🔴',
|
|
urgent: '🚨',
|
|
}[task.priority];
|
|
|
|
console.log(` ${statusEmoji} ${priorityEmoji} ${task.title}`);
|
|
console.log(` Tags: ${task.tags?.join(', ') || 'aucun'}`);
|
|
if (task.dueDate) {
|
|
console.log(
|
|
` Échéance: ${task.dueDate.toLocaleDateString('fr-FR')}`
|
|
);
|
|
}
|
|
console.log('');
|
|
|
|
createdCount++;
|
|
} catch (error) {
|
|
console.error(
|
|
` ❌ Erreur pour "${taskData.title}":`,
|
|
error instanceof Error ? error.message : error
|
|
);
|
|
errorCount++;
|
|
}
|
|
}
|
|
|
|
console.log('📊 Résumé:');
|
|
console.log(` ✅ Tâches créées: ${createdCount}`);
|
|
console.log(` ❌ Erreurs: ${errorCount}`);
|
|
|
|
// Afficher les stats finales
|
|
const stats = await tasksService.getTaskStats(userId);
|
|
console.log('');
|
|
console.log('📈 Statistiques finales:');
|
|
console.log(` Total: ${stats.total} tâches`);
|
|
console.log(` À faire: ${stats.todo}`);
|
|
console.log(` En cours: ${stats.inProgress}`);
|
|
console.log(` Terminées: ${stats.completed}`);
|
|
console.log(` Annulées: ${stats.cancelled}`);
|
|
console.log(` Taux de completion: ${stats.completionRate}%`);
|
|
}
|
|
|
|
// Exécuter le script
|
|
if (require.main === module) {
|
|
seedTestData()
|
|
.then(() => {
|
|
console.log('');
|
|
console.log('✨ Données de test ajoutées avec succès !');
|
|
process.exit(0);
|
|
})
|
|
.catch((error) => {
|
|
console.error('💥 Erreur fatale:', error);
|
|
process.exit(1);
|
|
});
|
|
}
|
|
|
|
export { seedTestData };
|