Dashboard Sync — État des crons
Crons exécutés chaque nuit à 3h00 Bangkok (20h UTC). Les données du dashboard sont pré-calculées — aucun appel GA4/GSC en direct pendant la navigation.
État actuel par source
🔍 GSC
Google Search Console — clics, positions, pages
il y a 13h
—
Données jusqu'au 2026-11-10
📊 GA4
Google Analytics 4 — sessions, conversions par pays/source
il y a 13h
—
🎯 Conversion
Données GA4 enrichies + tunnel + backoffice pour l'onglet Overview
il y a 13h
2.3s
929
Données jusqu'au 2026-11-12
2026-11-13 03:20 BKK
🚇 Tunnel
Snapshot complet du tunnel de devis (16 requêtes pré-calculées)
il y a 13h
1.8s
Données jusqu'au 2026-06-28
2026-11-13 03:25 BKK
⚡ PageSpeed
PSI scores + statut HTTP de toutes les pages GSC
il y a 12h
—
🕒 Planning des crons (à configurer dans Coolify)
| Source | Commande | Cron (UTC) | Heure Bangkok |
|---|---|---|---|
| GSC | npm run cron:gsc | 0 20 * * * | 03:00 BKK |
| GA4 | npm run cron:ga4 | 5 20 * * * | 03:05 BKK |
| Conversion | npm run cron:conversion | 20 20 * * * | 03:20 BKK |
| Tunnel | npm run cron:tunnel | 25 20 * * * | 03:25 BKK |
| PageSpeed | npm run cron:pagespeed | 0 21 * * * | 04:00 BKK |
Historique des 30 dernières exécutions
| Source | Statut | Démarré (Bangkok) | Durée | Lignes | Erreur |
|---|---|---|---|---|---|
| 🚇 Tunnel | ✗ erreur | 2026-11-13 03:25 BKK | 1.8s | — | null value in column "logicalStep" of relation "TunnelErrorRow" violates not-null constraint |
| 🎯 Conversion | ✓ succès | 2026-11-13 03:20 BKK | 2.3s | 929 | — |
| 🚇 Tunnel | ✗ erreur | 2026-11-12 03:25 BKK | 1.7s | — | null value in column "logicalStep" of relation "TunnelErrorRow" violates not-null constraint |
| 🎯 Conversion | ✓ succès | 2026-11-12 03:20 BKK | 2.3s | 925 | — |
| 🚇 Tunnel | ✗ erreur | 2026-11-11 03:25 BKK | 1.5s | — | null value in column "logicalStep" of relation "TunnelErrorRow" violates not-null constraint |
| 🎯 Conversion | ✓ succès | 2026-11-11 03:20 BKK | 2.0s | 923 | — |
| 🚇 Tunnel | ✗ erreur | 2026-11-10 03:25 BKK | 2.0s | — | null value in column "logicalStep" of relation "TunnelErrorRow" violates not-null constraint |
| 🎯 Conversion | ✓ succès | 2026-11-10 03:20 BKK | 3.0s | 923 | — |
| 🚇 Tunnel | ✗ erreur | 2026-11-09 03:25 BKK | 1.5s | — | null value in column "logicalStep" of relation "TunnelErrorRow" violates not-null constraint |
| 🎯 Conversion | ✓ succès | 2026-11-09 03:20 BKK | 2.1s | 921 | — |
| 🚇 Tunnel | ✗ erreur | 2026-11-08 03:25 BKK | 1.5s | — | null value in column "logicalStep" of relation "TunnelErrorRow" violates not-null constraint |
| 🎯 Conversion | ✓ succès | 2026-11-08 03:20 BKK | 1.9s | 916 | — |
| 🚇 Tunnel | ✗ erreur | 2026-11-07 03:25 BKK | 1.8s | — | null value in column "logicalStep" of relation "TunnelErrorRow" violates not-null constraint |
| 🎯 Conversion | ✓ succès | 2026-11-07 03:20 BKK | 5.7s | 911 | — |
| 🚇 Tunnel | ✗ erreur | 2026-11-06 03:25 BKK | 1.6s | — | null value in column "logicalStep" of relation "TunnelErrorRow" violates not-null constraint |
| 🎯 Conversion | ✓ succès | 2026-11-06 03:20 BKK | 2.4s | 909 | — |
| 🚇 Tunnel | ✗ erreur | 2026-11-05 03:25 BKK | 1.4s | — | null value in column "logicalStep" of relation "TunnelErrorRow" violates not-null constraint |
| 🎯 Conversion | ✓ succès | 2026-11-05 03:20 BKK | 2.6s | 907 | — |
| 🚇 Tunnel | ✗ erreur | 2026-11-04 03:25 BKK | 1.7s | — | null value in column "logicalStep" of relation "TunnelErrorRow" violates not-null constraint |
| 🎯 Conversion | ✓ succès | 2026-11-04 03:20 BKK | 2.2s | 899 | — |
| 🚇 Tunnel | ✗ erreur | 2026-11-03 03:25 BKK | 1.5s | — | null value in column "logicalStep" of relation "TunnelErrorRow" violates not-null constraint |
| 🎯 Conversion | ✓ succès | 2026-11-03 03:20 BKK | 3.6s | 893 | — |
| 🚇 Tunnel | ✗ erreur | 2026-11-02 03:25 BKK | 1.6s | — | null value in column "logicalStep" of relation "TunnelErrorRow" violates not-null constraint |
| 🎯 Conversion | ✓ succès | 2026-11-02 03:20 BKK | 3.1s | 891 | — |
| 🚇 Tunnel | ✗ erreur | 2026-11-01 03:25 BKK | 1.8s | — | null value in column "logicalStep" of relation "TunnelErrorRow" violates not-null constraint |
| 🎯 Conversion | ✓ succès | 2026-11-01 03:20 BKK | 1.3s | 889 | — |
| 🚇 Tunnel | ✗ erreur | 2026-10-31 03:25 BKK | 1.4s | — | null value in column "logicalStep" of relation "TunnelErrorRow" violates not-null constraint |
| 🎯 Conversion | ✓ succès | 2026-10-31 03:20 BKK | 2.1s | 889 | — |
| 🚇 Tunnel | ✗ erreur | 2026-10-30 03:25 BKK | 1.3s | — | null value in column "logicalStep" of relation "TunnelErrorRow" violates not-null constraint |
| 🎯 Conversion | ✓ succès | 2026-10-30 03:20 BKK | 2.2s | 887 | — |
🔧 Lancer manuellement
En production sur le serveur Coolify, ou en local avec npm run cron:<source>
Les scripts tournent côté serveur via POST /api/sync/run/[source]. La page se rafraîchit automatiquement après succès.