feat : populate all projects with tasks, groups and time entries in fixtures

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-14 09:14:15 +01:00
parent 802659434f
commit b48ca10304

View File

@@ -177,7 +177,7 @@ class AppFixtures extends Fixture
$tagCalendar->setColor('#222783');
$manager->persist($tagCalendar);
// Task Groups
// Task Groups — SIRH
$groupFrontend = new TaskGroup();
$groupFrontend->setTitle('Frontend');
$groupFrontend->setColor('#4A90D9');
@@ -190,7 +190,48 @@ class AppFixtures extends Fixture
$groupBackend->setProject($projectSirh);
$manager->persist($groupBackend);
// Tasks
// Task Groups — CRM
$groupCrmUi = new TaskGroup();
$groupCrmUi->setTitle('Interface');
$groupCrmUi->setColor('#E91E63');
$groupCrmUi->setProject($projectCrm);
$manager->persist($groupCrmUi);
$groupCrmApi = new TaskGroup();
$groupCrmApi->setTitle('API');
$groupCrmApi->setColor('#9C27B0');
$groupCrmApi->setProject($projectCrm);
$manager->persist($groupCrmApi);
// Task Groups — ERP
$groupErpStock = new TaskGroup();
$groupErpStock->setTitle('Stocks');
$groupErpStock->setColor('#4A90D9');
$groupErpStock->setProject($projectErp);
$manager->persist($groupErpStock);
$groupErpFacturation = new TaskGroup();
$groupErpFacturation->setTitle('Facturation');
$groupErpFacturation->setColor('#FF8F00');
$groupErpFacturation->setProject($projectErp);
$manager->persist($groupErpFacturation);
// Task Groups — Site vitrine
$groupSiteDesign = new TaskGroup();
$groupSiteDesign->setTitle('Design');
$groupSiteDesign->setColor('#26A69A');
$groupSiteDesign->setProject($projectInterne);
$manager->persist($groupSiteDesign);
$groupSiteContenu = new TaskGroup();
$groupSiteContenu->setTitle('Contenu');
$groupSiteContenu->setColor('#795548');
$groupSiteContenu->setProject($projectInterne);
$manager->persist($groupSiteContenu);
// =============================================
// Tasks — SIRH
// =============================================
$task1 = new Task();
$task1->setNumber(1);
$task1->setTitle('Création d\'une page de login');
@@ -260,8 +301,199 @@ class AppFixtures extends Fixture
$task6->addTag($tagAuth);
$manager->persist($task6);
// --- Time Entries (SIRH project, admin user) ---
// =============================================
// Tasks — CRM
// =============================================
$taskCrm1 = new Task();
$taskCrm1->setNumber(1);
$taskCrm1->setTitle('Liste des contacts');
$taskCrm1->setStatus($statusDone);
$taskCrm1->setEffort($effortL);
$taskCrm1->setPriority($priorityHigh);
$taskCrm1->setAssignee($admin);
$taskCrm1->setGroup($groupCrmUi);
$taskCrm1->setProject($projectCrm);
$manager->persist($taskCrm1);
$taskCrm2 = new Task();
$taskCrm2->setNumber(2);
$taskCrm2->setTitle('Fiche contact détaillée');
$taskCrm2->setStatus($statusInProgress);
$taskCrm2->setEffort($effortM);
$taskCrm2->setPriority($priorityMedium);
$taskCrm2->setAssignee($admin);
$taskCrm2->setGroup($groupCrmUi);
$taskCrm2->setProject($projectCrm);
$manager->persist($taskCrm2);
$taskCrm3 = new Task();
$taskCrm3->setNumber(3);
$taskCrm3->setTitle('Import CSV contacts');
$taskCrm3->setStatus($statusTodo);
$taskCrm3->setEffort($effortXL);
$taskCrm3->setPriority($priorityLow);
$taskCrm3->setAssignee($admin);
$taskCrm3->setGroup($groupCrmApi);
$taskCrm3->setProject($projectCrm);
$manager->persist($taskCrm3);
$taskCrm4 = new Task();
$taskCrm4->setNumber(4);
$taskCrm4->setTitle('Pipeline de vente');
$taskCrm4->setStatus($statusInProgress);
$taskCrm4->setEffort($effortXXL);
$taskCrm4->setPriority($priorityHigh);
$taskCrm4->setAssignee($admin);
$taskCrm4->setGroup($groupCrmUi);
$taskCrm4->setProject($projectCrm);
$taskCrm4->addTag($tagCalendar);
$manager->persist($taskCrm4);
$taskCrm5 = new Task();
$taskCrm5->setNumber(5);
$taskCrm5->setTitle('API recherche contacts');
$taskCrm5->setStatus($statusReview);
$taskCrm5->setEffort($effortM);
$taskCrm5->setPriority($priorityMedium);
$taskCrm5->setAssignee($admin);
$taskCrm5->setGroup($groupCrmApi);
$taskCrm5->setProject($projectCrm);
$manager->persist($taskCrm5);
// =============================================
// Tasks — ERP
// =============================================
$taskErp1 = new Task();
$taskErp1->setNumber(1);
$taskErp1->setTitle('Tableau de bord stocks');
$taskErp1->setStatus($statusDone);
$taskErp1->setEffort($effortL);
$taskErp1->setPriority($priorityHigh);
$taskErp1->setAssignee($admin);
$taskErp1->setGroup($groupErpStock);
$taskErp1->setProject($projectErp);
$manager->persist($taskErp1);
$taskErp2 = new Task();
$taskErp2->setNumber(2);
$taskErp2->setTitle('Alertes stock bas');
$taskErp2->setStatus($statusInProgress);
$taskErp2->setEffort($effortM);
$taskErp2->setPriority($priorityHigh);
$taskErp2->setAssignee($admin);
$taskErp2->setGroup($groupErpStock);
$taskErp2->setProject($projectErp);
$manager->persist($taskErp2);
$taskErp3 = new Task();
$taskErp3->setNumber(3);
$taskErp3->setTitle('Génération factures PDF');
$taskErp3->setStatus($statusTodo);
$taskErp3->setEffort($effortXXL);
$taskErp3->setPriority($priorityMedium);
$taskErp3->setAssignee($admin);
$taskErp3->setGroup($groupErpFacturation);
$taskErp3->setProject($projectErp);
$manager->persist($taskErp3);
$taskErp4 = new Task();
$taskErp4->setNumber(4);
$taskErp4->setTitle('Historique mouvements stock');
$taskErp4->setStatus($statusReview);
$taskErp4->setEffort($effortL);
$taskErp4->setPriority($priorityLow);
$taskErp4->setAssignee($admin);
$taskErp4->setGroup($groupErpStock);
$taskErp4->setProject($projectErp);
$manager->persist($taskErp4);
$taskErp5 = new Task();
$taskErp5->setNumber(5);
$taskErp5->setTitle('Export comptable');
$taskErp5->setStatus($statusBlocked);
$taskErp5->setEffort($effortXL);
$taskErp5->setPriority($priorityHigh);
$taskErp5->setAssignee($admin);
$taskErp5->setGroup($groupErpFacturation);
$taskErp5->setProject($projectErp);
$manager->persist($taskErp5);
$taskErp6 = new Task();
$taskErp6->setNumber(6);
$taskErp6->setTitle('Inventaire annuel');
$taskErp6->setStatus($statusTodo);
$taskErp6->setEffort($effortS);
$taskErp6->setPriority($priorityLow);
$taskErp6->setAssignee($admin);
$taskErp6->setGroup($groupErpStock);
$taskErp6->setProject($projectErp);
$taskErp6->addTag($tagCalendar);
$manager->persist($taskErp6);
// =============================================
// Tasks — Site vitrine
// =============================================
$taskSite1 = new Task();
$taskSite1->setNumber(1);
$taskSite1->setTitle('Maquette page d\'accueil');
$taskSite1->setStatus($statusDone);
$taskSite1->setEffort($effortM);
$taskSite1->setPriority($priorityHigh);
$taskSite1->setAssignee($admin);
$taskSite1->setGroup($groupSiteDesign);
$taskSite1->setProject($projectInterne);
$manager->persist($taskSite1);
$taskSite2 = new Task();
$taskSite2->setNumber(2);
$taskSite2->setTitle('Intégration responsive');
$taskSite2->setStatus($statusInProgress);
$taskSite2->setEffort($effortL);
$taskSite2->setPriority($priorityMedium);
$taskSite2->setAssignee($admin);
$taskSite2->setGroup($groupSiteDesign);
$taskSite2->setProject($projectInterne);
$manager->persist($taskSite2);
$taskSite3 = new Task();
$taskSite3->setNumber(3);
$taskSite3->setTitle('Rédaction page "À propos"');
$taskSite3->setStatus($statusTodo);
$taskSite3->setEffort($effortS);
$taskSite3->setPriority($priorityLow);
$taskSite3->setAssignee($admin);
$taskSite3->setGroup($groupSiteContenu);
$taskSite3->setProject($projectInterne);
$manager->persist($taskSite3);
$taskSite4 = new Task();
$taskSite4->setNumber(4);
$taskSite4->setTitle('Formulaire de contact');
$taskSite4->setStatus($statusReview);
$taskSite4->setEffort($effortM);
$taskSite4->setPriority($priorityMedium);
$taskSite4->setAssignee($admin);
$taskSite4->setGroup($groupSiteDesign);
$taskSite4->setProject($projectInterne);
$taskSite4->addTag($tagAuth);
$manager->persist($taskSite4);
$taskSite5 = new Task();
$taskSite5->setNumber(5);
$taskSite5->setTitle('SEO et métadonnées');
$taskSite5->setStatus($statusTodo);
$taskSite5->setEffort($effortS);
$taskSite5->setPriority($priorityHigh);
$taskSite5->setAssignee($admin);
$taskSite5->setGroup($groupSiteContenu);
$taskSite5->setProject($projectInterne);
$manager->persist($taskSite5);
// =============================================
// Time Entries — tous les projets
// =============================================
$timeEntryData = [
// SIRH — lundi à vendredi
['title' => 'Réunion', 'project' => $projectSirh, 'tag' => $tagAuth, 'start' => '09:00', 'stop' => '09:45', 'day' => 1],
['title' => 'Page accueil', 'project' => $projectSirh, 'tag' => $tagPassword, 'start' => '10:00', 'stop' => '12:00', 'day' => 0],
['title' => 'Design admin', 'project' => $projectSirh, 'tag' => $tagAuth, 'start' => '09:30', 'stop' => '11:00', 'day' => 2],
@@ -272,6 +504,27 @@ class AppFixtures extends Fixture
['title' => 'Script backup BDD', 'project' => $projectSirh, 'tag' => $tagAuth, 'start' => '13:30', 'stop' => '15:00', 'day' => 3],
['title' => 'Maquette', 'project' => $projectSirh, 'tag' => null, 'start' => '09:00', 'stop' => '11:00', 'day' => 4],
['title' => 'PC compta', 'project' => $projectSirh, 'tag' => null, 'start' => '13:30', 'stop' => '15:30', 'day' => 4],
// CRM — lundi à vendredi
['title' => 'Liste contacts UI', 'project' => $projectCrm, 'tag' => null, 'start' => '08:30', 'stop' => '10:00', 'day' => 0],
['title' => 'Fiche contact', 'project' => $projectCrm, 'tag' => null, 'start' => '15:30', 'stop' => '17:00', 'day' => 0],
['title' => 'Pipeline vente', 'project' => $projectCrm, 'tag' => $tagCalendar, 'start' => '08:30', 'stop' => '09:30', 'day' => 1],
['title' => 'Import CSV', 'project' => $projectCrm, 'tag' => null, 'start' => '15:30', 'stop' => '17:30', 'day' => 2],
['title' => 'API recherche', 'project' => $projectCrm, 'tag' => null, 'start' => '08:30', 'stop' => '10:00', 'day' => 3],
['title' => 'Tests unitaires CRM', 'project' => $projectCrm, 'tag' => null, 'start' => '15:30', 'stop' => '17:00', 'day' => 3],
['title' => 'Revue pipeline', 'project' => $projectCrm, 'tag' => $tagCalendar, 'start' => '08:00', 'stop' => '09:00', 'day' => 4],
// ERP — lundi à vendredi
['title' => 'Dashboard stocks', 'project' => $projectErp, 'tag' => null, 'start' => '16:00', 'stop' => '17:30', 'day' => 1],
['title' => 'Alertes stock bas', 'project' => $projectErp, 'tag' => null, 'start' => '11:30', 'stop' => '12:30', 'day' => 2],
['title' => 'Factures PDF', 'project' => $projectErp, 'tag' => null, 'start' => '15:30', 'stop' => '17:30', 'day' => 4],
['title' => 'Mouvement stock', 'project' => $projectErp, 'tag' => null, 'start' => '09:00', 'stop' => '10:30', 'day' => 0],
['title' => 'Export comptable', 'project' => $projectErp, 'tag' => $tagCalendar, 'start' => '13:00', 'stop' => '14:30', 'day' => 2],
['title' => 'Inventaire', 'project' => $projectErp, 'tag' => null, 'start' => '13:30', 'stop' => '15:00', 'day' => 4],
// Site vitrine — lundi à jeudi
['title' => 'Maquette accueil', 'project' => $projectInterne, 'tag' => null, 'start' => '16:00', 'stop' => '17:30', 'day' => 0],
['title' => 'Responsive mobile', 'project' => $projectInterne, 'tag' => null, 'start' => '16:00', 'stop' => '17:30', 'day' => 2],
['title' => 'Rédaction contenu', 'project' => $projectInterne, 'tag' => null, 'start' => '15:30', 'stop' => '17:00', 'day' => 1],
['title' => 'Formulaire contact', 'project' => $projectInterne, 'tag' => $tagAuth, 'start' => '16:00', 'stop' => '17:30', 'day' => 3],
['title' => 'SEO meta tags', 'project' => $projectInterne, 'tag' => null, 'start' => '11:00', 'stop' => '12:00', 'day' => 4],
];
$monday = new DateTimeImmutable('monday this week', new DateTimeZone('UTC'));