From 6f06cb975e6063934ab06501206690475dff0a1b Mon Sep 17 00:00:00 2001 From: Serreau Jovann Date: Wed, 28 Jan 2026 10:10:02 +0100 Subject: [PATCH] =?UTF-8?q?```=20=E2=9C=A8=20feat(cron/data):=20Ajoute=20u?= =?UTF-8?q?ne=20t=C3=A2che=20cron=20pour=20nettoyer=20les=20donn=C3=A9es?= =?UTF-8?q?=20de=20performance=20et=20de=20suivi.=20=F0=9F=93=9D=20feat(co?= =?UTF-8?q?mmand):=20Cr=C3=A9e=20une=20commande=20pour=20nettoyer=20les=20?= =?UTF-8?q?donn=C3=A9es=20de=20performance=20et=20de=20suivi=20obsol=C3=A8?= =?UTF-8?q?tes.=20```?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ansible/playbook.yml | 8 +++++ src/Command/CleanCommand.php | 62 ++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 src/Command/CleanCommand.php diff --git a/ansible/playbook.yml b/ansible/playbook.yml index 1b1a3b8..ace6da1 100644 --- a/ansible/playbook.yml +++ b/ansible/playbook.yml @@ -256,6 +256,14 @@ job: "php {{ path }}/bin/console app:backup" user: "root" state: present + - name: "Cron Task - Clean Data (Performance & Tracking)" + ansible.builtin.cron: + name: "Intranet Ludikevent - Clean Data" + minute: "0" + hour: "20" + job: "php {{ path }}/bin/console app:clean" + user: "root" + state: present - name: Set correct permissions for Symfony cache and logs directories ansible.builtin.file: path: "{{ item }}" diff --git a/src/Command/CleanCommand.php b/src/Command/CleanCommand.php new file mode 100644 index 0000000..ce0fc85 --- /dev/null +++ b/src/Command/CleanCommand.php @@ -0,0 +1,62 @@ +title('Lancement du nettoyage de la base de données'); + + // 1. Nettoyage SitePerformance (<= 3 jours) + $limitPerformance = new \DateTime('-3 days'); + $perfCount = $this->entityManager->createQueryBuilder() + ->delete(SitePerformance::class, 'p') + ->where('p.createdAt <= :limit') + ->setParameter('limit', $limitPerformance) + ->getQuery() + ->execute(); + + $io->note(sprintf('%d entrées de performance supprimées (plus de 3 jours).', $perfCount)); + + // 2. Nettoyage CustomerTracking (<= 30 jours) + $limitTracking = new \DateTime('-30 days'); + $trackCount = $this->entityManager->createQueryBuilder() + ->delete(CustomerTracking::class, 't') + ->where('t.createAT <= :limit') + ->setParameter('limit', $limitTracking) + ->getQuery() + ->execute(); + + $io->note(sprintf('%d entrées de tracking supprimées (plus de 30 jours).', $trackCount)); + + // Sauvegarde des changements + $this->entityManager->flush(); + + $io->success('Nettoyage terminé avec succès.'); + + return Command::SUCCESS; + } +}