```
✨ feat(SitePerformance): Ajoute la collecte des métriques web vitales. 🐛 fix(caddy): Corrige la redirection du script Trustpilot. 📦 chore: Ajoute web-vitals comme dépendance et adapte package.json. ```
This commit is contained in:
@@ -7,6 +7,7 @@ use App\Entity\AccountResetPasswordRequest;
|
||||
use App\Entity\Customer;
|
||||
use App\Entity\CustomerTracking;
|
||||
use App\Entity\Product;
|
||||
use App\Entity\SitePerformance;
|
||||
use App\Form\RequestPasswordConfirmType;
|
||||
use App\Form\RequestPasswordRequestType;
|
||||
use App\Logger\AppLogger;
|
||||
@@ -62,6 +63,35 @@ class ReserverController extends AbstractController
|
||||
'products' => $products
|
||||
]);
|
||||
}
|
||||
#[Route('/reservation/web-vitals', name: 'reservation_web-vitals', methods: ['POST'])]
|
||||
public function webVitals(Request $request, EntityManagerInterface $em): Response
|
||||
{
|
||||
$data = json_decode($request->getContent(), true);
|
||||
|
||||
if (!$data || !isset($data['name'], $data['value'])) {
|
||||
return new Response('Invalid data', Response::HTTP_BAD_REQUEST);
|
||||
}
|
||||
|
||||
// On vérifie si cet ID de métrique existe déjà pour éviter les doublons
|
||||
// (web-vitals peut renvoyer plusieurs fois la même métrique si elle s'affine)
|
||||
$existing = $em->getRepository(SitePerformance::class)->findOneBy(['metricId' => $data['id']]);
|
||||
|
||||
$perf = $existing ?? new SitePerformance();
|
||||
|
||||
$perf->setName($data['name']);
|
||||
$perf->setValue((float)$data['value']);
|
||||
$perf->setPath($data['path'] ?? '/');
|
||||
$perf->setMetricId($data['id'] ?? null);
|
||||
$perf->setUpdatedAt(new \DateTime());
|
||||
|
||||
if (!$existing) {
|
||||
$em->persist($perf);
|
||||
}
|
||||
|
||||
$em->flush();
|
||||
|
||||
return new Response('', Response::HTTP_NO_CONTENT);
|
||||
}
|
||||
|
||||
#[Route('/reservation/umami', name: 'reservation_umami', methods: ['POST'])]
|
||||
public function umami(
|
||||
|
||||
Reference in New Issue
Block a user