All checks were successful
CI / secret-scan (push) Successful in 9s
CI / php-lint (push) Successful in 19s
CI / static-tests (push) Successful in 45s
CI / php-lint (pull_request) Successful in 25s
CI / static-tests (pull_request) Successful in 35s
CI / auto-merge (push) Has been skipped
CI / secret-scan (pull_request) Successful in 9s
CI / auto-merge (pull_request) Successful in 7s
Les vars de retention (AUDIT_LOG_RETENTION_DAYS, THROTTLE_PURGE_AFTER_HOURS) etaient documentees comme purges cron mais aucun script/job n'existait, et les vars n'etaient pas injectees au conteneur wakdo-cron (faux-semblant de conformite). - purge-audit-log.sh : DELETE audit_log au-dela de AUDIT_LOG_RETENTION_DAYS (defaut 365). Unique exception documentee a l'append-only (RG-T14) : purge de retention planifiee, pas une mutation applicative. - purge-throttle.sh : DELETE login_throttle + pin_throttle sans verrou actif et plus vieux que THROTTLE_PURGE_AFTER_HOURS (defaut 24), predicat mlt.md 13.5. - crontab : jobs actives (15 4 audit, 45 4 throttle), fenetre de maintenance. - docker-compose.yml : injection des 2 vars (avec defaut) au conteneur cron ; commentaire env aligne sur le user en moindre privilege. Hors scope : la purge de customer_order (ORDER_RETENTION_DAYS) reste differee tant que le domaine commande n'existe pas (RGPD = anonymisation a definir avec le domaine, pas un simple DELETE). Verifie : scripts lances dans l'image cron rebuildee contre la base dev (user scope) -> exit 0 ; test positif/negatif sur login_throttle : la ligne stale sans verrou est purgee, la ligne a verrou actif est conservee.
35 lines
1.6 KiB
Text
35 lines
1.6 KiB
Text
# Wakdo - crontab du conteneur wakdo-cron
|
|
#
|
|
# Fenetre de maintenance : 01h30 -> 09h30 (service client 10h00 -> 01h00).
|
|
# Toutes les heures sont en Europe/Paris (CRON_TIMEZONE dans .env).
|
|
# Format : m h dom mon dow command
|
|
#
|
|
# Les scripts ecrivent leurs logs dans /proc/1/fd/2 pour que docker logs
|
|
# remonte la sortie. Les erreurs doivent faire un exit != 0 pour que crond
|
|
# les signale.
|
|
|
|
# Minuit-45 : decalage du tout debut de fenetre, mais apres que le dernier
|
|
# ticket de soiree soit parti en cuisine. Ne fait rien pour l'instant.
|
|
# Garde en template pour une future invalidation de cache.
|
|
# 45 0 * * * /scripts/purge-cache.sh 2>&1
|
|
|
|
# 03h00 : dump BDD complet, compresse et rotate (garde 14 derniers).
|
|
0 3 * * * /scripts/backup-db.sh 2>&1
|
|
|
|
# 04h15 : purge de retention du journal d'audit (mlt.md 13.4, AUDIT_LOG_RETENTION_DAYS).
|
|
15 4 * * * /scripts/purge-audit-log.sh 2>&1
|
|
|
|
# 04h45 : purge des compteurs de throttle sans verrou actif (mlt.md 13.5, THROTTLE_PURGE_AFTER_HOURS).
|
|
45 4 * * * /scripts/purge-throttle.sh 2>&1
|
|
|
|
# Toutes les 15 min pendant la fenetre de maintenance : purge des sessions
|
|
# PHP expirees cote BDD (pas les sessions systeme qui sont en /tmp du conteneur
|
|
# wakdo-app, donc ephemeres par nature). A activer quand la table sessions
|
|
# existera (P2). En l'etat, template.
|
|
# */15 2-9 * * * /scripts/purge-expired-sessions.sh 2>&1
|
|
|
|
# 04h30 : agregations statistiques (top produits, CA par heure, etc.).
|
|
# Template, a activer quand les tables stats existeront (P3-P4).
|
|
# 30 4 * * * /scripts/aggregate-stats.sh 2>&1
|
|
|
|
# Ligne vide finale requise par certaines implementations cron.
|