Génération locale et intégration automatisée en CI/CD de QR codes vectoriels pour le CV imprimable avec qrencode.

Contexte & Enjeux

Lors de la distribution d'un CV sous format imprimé ou PDF, il est indispensable de permettre aux recruteurs et interlocuteurs techniques d'accéder instantanément à la version en ligne interactive du site, tout en mesurant la provenance du trafic grâce à des marqueurs d'analyse de fréquentation (utm_source=qrcode).

Pour garantir un rendu graphique irréprochable et éviter toute dépendance vers des API externes web lors du build, le projet génère un fichier vectoriel SVG de manière totalement autonome en local et dans la chaîne de déploiement continu.

Actions Réalisées

1. Script d'automatisation Bash (scripts/generate-qrcode-cv.sh)

Un script shell complet et paramétrable a été développé au sein du répertoire scripts/. Il encapsule l'utilitaire qrencode pour produire des fichiers vectoriels SVG légers et précis.

Fonctionnalités principales :

  • Détection des prérequis : Vérification de la présence de qrencode. En mode interactif, le script propose son installation automatique (sudo apt-get install -y qrencode).
  • Mode Interactif avec personnalisation : L'utilisateur peut valider ou ajuster à la volée l'URL cible, le chemin de sortie, la marge et le niveau de correction d'erreur.
  • Mode Autonome / CI/CD (-y / --non-interactive) : Exécution sans invite de commande pour intégration transparente dans les pipelines d'intégration continue et scripts de déploiement.

Exemples d'utilisation :

# Exécution interactive standard
./scripts/generate-qrcode-cv.sh

# Exécution autonome CI/CD avec valeurs par défaut
./scripts/generate-qrcode-cv.sh --non-interactive

# Exécution autonome avec paramètres sur-mesure
./scripts/generate-qrcode-cv.sh -y \
  --url "https://cv.fredt.eu?utm_source=print_event" \
  --output "src/www/img/qrcode-cv.svg" \
  --type SVG \
  --margin 4 \
  --error-level H

2. Automatisation CI/CD & Déploiement

Le script s'intègre naturellement dans les étapes de build d'un pipeline (GitLab CI, GitHub Actions ou scripts d'environnement de staging) avant le déploiement des assets web :

# Exemple d'étape GitHub Actions / GitLab CI
generate-assets:
  stage: build
  script:
    - sudo apt-get update && sudo apt-get install -y qrencode
    - ./scripts/generate-qrcode-cv.sh --ci

3. Intégration sur les pages du CV (index.php & cv-edit.php)

Le fichier SVG généré (src/www/img/qrcode-cv.svg) est directement intégré dans le bloc d'en-tête du CV. Grâce à la classe utilitaire Bootstrap d-none d-print-block et aux règles CSS spécifiques d'impression (@media print), le QR Code reste invisible sur écran et s'affiche élégamment sur la version imprimée A4 ou l'export PDF.

4. Journalisation Système & Tracking Traffic (traffic.log)

Un mécanisme global a été intégré au bootstrap de l'application (src/bootstrap.php). Lorsqu'un visiteur accède au site via le QR code (ou toute URL contenant un paramètre utm_source), l'événement est capturé et journalisé en JSON Lines dans logs/traffic.log avec le canal traffic et l'événement UTM_SOURCE_DETECTED (incluant l'URI demandée, l'IP, le référant et le User-Agent).

Résultats & Bénéfices

  • Indépendance totale : Aucune requête vers des services tiers générateurs de QR codes (respect du RGPD et résilience).
  • Qualité Vectorielle (SVG) : Rendu parfait quelle que soit la résolution d'impression.
  • Tracking Précis : Mesure de l'impact des supports papier/PDF via le paramètre UTM dédié.
  • Industrialisation : Processus reproductible de bout en bout en local comme en CI/CD.