Files
geo/api/scripts/cron/CRON.md
pierre 2f5946a184 feat: Version 3.5.2 - Configuration Stripe et gestion des immeubles
- Configuration complète Stripe pour les 3 environnements (DEV/REC/PROD)
  * DEV: Clés TEST Pierre (mode test)
  * REC: Clés TEST Client (mode test)
  * PROD: Clés LIVE Client (mode live)
- Ajout de la gestion des bases de données immeubles/bâtiments
  * Configuration buildings_database pour DEV/REC/PROD
  * Service BuildingService pour enrichissement des adresses
- Optimisations pages et améliorations ergonomie
- Mises à jour des dépendances Composer
- Nettoyage des fichiers obsolètes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 18:26:27 +01:00

7.5 KiB

Documentation des tâches CRON - API Geosector

Ce dossier contient les scripts automatisés de maintenance et de traitement pour l'API Geosector.

Scripts disponibles

1. process_email_queue.php

Fonction : Traite la queue d'emails en attente (reçus fiscaux, notifications)

Caractéristiques :

  • Traite 50 emails maximum par exécution
  • 3 tentatives maximum par email
  • Lock file pour éviter l'exécution simultanée
  • Nettoyage automatique des emails envoyés de plus de 30 jours

Fréquence recommandée : Toutes les 5 minutes

Ligne crontab :

*/5 * * * * /usr/bin/php /var/www/geosector/api/scripts/cron/process_email_queue.php >> /var/www/geosector/api/logs/email_queue.log 2>&1

2. cleanup_security_data.php

Fonction : Purge les données de sécurité obsolètes selon la politique de rétention

Données nettoyées :

  • Métriques de performance : 30 jours
  • Tentatives de login échouées : 7 jours
  • Alertes résolues : 90 jours
  • IPs expirées : Déblocage immédiat

Fréquence recommandée : Quotidien à 2h du matin

Ligne crontab :

0 2 * * * /usr/bin/php /var/www/geosector/api/scripts/cron/cleanup_security_data.php >> /var/www/geosector/api/logs/cleanup_security.log 2>&1

3. cleanup_logs.php

Fonction : Supprime les fichiers de logs de plus de 10 jours

Caractéristiques :

  • Cible tous les fichiers *.log dans /api/logs/
  • Exclut le dossier /logs/events/ (rétention 15 mois)
  • Rétention : 10 jours
  • Logs détaillés des fichiers supprimés et taille libérée
  • Lock file pour éviter l'exécution simultanée

Fréquence recommandée : Quotidien à 3h du matin

Ligne crontab :

0 3 * * * /usr/bin/php /var/www/geosector/api/scripts/cron/cleanup_logs.php >> /var/www/geosector/api/logs/cleanup_logs.log 2>&1

4. rotate_event_logs.php

Fonction : Rotation des logs d'événements JSONL (système EventLogService)

Politique de rétention (15 mois) :

  • 0-15 mois : fichiers .jsonl conservés (non compressés pour accès API)
  • 15 mois : suppression automatique

Caractéristiques :

  • Suppression des fichiers > 15 mois
  • Pas de compression (fichiers accessibles par l'API)
  • Logs détaillés des suppressions
  • Lock file pour éviter l'exécution simultanée

Fréquence recommandée : Mensuel le 1er à 3h du matin

Ligne crontab :

0 3 1 * * /usr/bin/php /var/www/geosector/api/scripts/cron/rotate_event_logs.php >> /var/www/geosector/api/logs/rotation_events.log 2>&1

5. update_stripe_devices.php

Fonction : Met à jour la liste des appareils Android certifiés pour Tap to Pay

Caractéristiques :

  • Liste de 95+ devices intégrée
  • Ajoute les nouveaux appareils certifiés
  • Met à jour les versions Android minimales
  • Désactive les appareils obsolètes
  • Notification email si changements importants
  • Possibilité de personnaliser via /data/stripe_certified_devices.json

Fréquence recommandée : Hebdomadaire le dimanche à 3h

Ligne crontab :

0 3 * * 0 /usr/bin/php /var/www/geosector/api/scripts/cron/update_stripe_devices.php >> /var/www/geosector/api/logs/stripe_devices.log 2>&1

6. sync_databases.php

Fonction : Synchronise les bases de données entre environnements

Note : Ce script est spécifique à un cas d'usage particulier. Vérifier son utilité avant activation.

Fréquence recommandée : À définir selon les besoins

Ligne crontab :

# À configurer selon les besoins
# 0 4 * * * /usr/bin/php /var/www/geosector/api/scripts/cron/sync_databases.php >> /var/www/geosector/api/logs/sync_databases.log 2>&1

Installation sur les containers Incus

1. Déployer les scripts sur les environnements

# DEV (dva-geo sur IN3)
./deploy-api.sh

# RECETTE (rca-geo sur IN3)
./deploy-api.sh rca

# PRODUCTION (pra-geo sur IN4)
./deploy-api.sh pra

2. Configurer le crontab sur chaque container

# Se connecter au container
incus exec dva-geo -- sh    # ou rca-geo, pra-geo

# Éditer le crontab
crontab -e

# Ajouter les lignes ci-dessous (adapter les chemins si nécessaire)

3. Configuration complète recommandée

# Traitement de la queue d'emails (toutes les 5 minutes)
*/5 * * * * /usr/bin/php /var/www/geosector/api/scripts/cron/process_email_queue.php >> /var/www/geosector/api/logs/email_queue.log 2>&1

# Nettoyage des données de sécurité (quotidien à 2h)
0 2 * * * /usr/bin/php /var/www/geosector/api/scripts/cron/cleanup_security_data.php >> /var/www/geosector/api/logs/cleanup_security.log 2>&1

# Nettoyage des anciens logs (quotidien à 3h)
0 3 * * * /usr/bin/php /var/www/geosector/api/scripts/cron/cleanup_logs.php >> /var/www/geosector/api/logs/cleanup_logs.log 2>&1

# Rotation des logs événements (mensuel le 1er à 3h)
0 3 1 * * /usr/bin/php /var/www/geosector/api/scripts/cron/rotate_event_logs.php >> /var/www/geosector/api/logs/rotation_events.log 2>&1

# Mise à jour des devices Stripe (hebdomadaire dimanche à 3h)
0 3 * * 0 /usr/bin/php /var/www/geosector/api/scripts/cron/update_stripe_devices.php >> /var/www/geosector/api/logs/stripe_devices.log 2>&1

4. Vérifier que les CRONs sont actifs

# Lister les CRONs configurés
crontab -l

# Vérifier les logs pour s'assurer qu'ils s'exécutent
tail -f /var/www/geosector/api/logs/email_queue.log
tail -f /var/www/geosector/api/logs/cleanup_logs.log

Surveillance et monitoring

Emplacement des logs

Tous les logs CRON sont stockés dans /var/www/geosector/api/logs/ :

  • email_queue.log : Traitement de la queue d'emails
  • cleanup_security.log : Nettoyage des données de sécurité
  • cleanup_logs.log : Nettoyage des anciens fichiers logs
  • rotation_events.log : Rotation des logs événements JSONL
  • stripe_devices.log : Mise à jour des devices Tap to Pay

Vérification de l'exécution

# Voir les dernières exécutions du processeur d'emails
tail -n 50 /var/www/geosector/api/logs/email_queue.log

# Voir les derniers nettoyages de logs
tail -n 50 /var/www/geosector/api/logs/cleanup_logs.log

# Voir les dernières rotations des logs événements
tail -n 50 /var/www/geosector/api/logs/rotation_events.log

# Voir les dernières mises à jour Stripe
tail -n 50 /var/www/geosector/api/logs/stripe_devices.log

Notes importantes

  1. Détection d'environnement : Tous les scripts détectent automatiquement l'environnement via gethostname() :

    • pra-geo → Production (app3.geosector.fr)
    • rca-geo → Recette (rapp.geosector.fr)
    • dva-geo → Développement (dapp.geosector.fr)
  2. Lock files : Les scripts critiques utilisent des fichiers de lock dans /tmp/ pour éviter l'exécution simultanée

  3. Permissions : Les scripts doivent être exécutables (chmod +x script.php)

  4. Logs : Tous les scripts loggent via LogService pour traçabilité complète


Dépannage

Le CRON ne s'exécute pas

# Vérifier que le service cron est actif
rc-service crond status    # Alpine Linux

# Relancer le service si nécessaire
rc-service crond restart

Erreur de permissions

# Vérifier les permissions du script
ls -l /var/www/geosector/api/scripts/cron/

# Rendre exécutable si nécessaire
chmod +x /var/www/geosector/api/scripts/cron/*.php

# Vérifier les permissions du dossier logs
ls -ld /var/www/geosector/api/logs/

Lock file bloqué

# Si un script semble bloqué, supprimer le lock file
rm /tmp/process_email_queue.lock
rm /tmp/cleanup_logs.lock