Étude de cas

AlerteConso

Une interface publique de recherche dans les notices françaises RappelConso. Elle importe les données officielles dans PostgreSQL et conserve un lien direct vers chaque notice source.

Logo mascotte AlerteConso
Stack principale
Go · PostgreSQL · HTML · CSS

Problème

Des données officielles difficiles à interroger

Le jeu de données officiel contient les identifiants et dates nécessaires pour vérifier un rappel, mais sa structure n’est pas adaptée à une recherche rapide ni à des filtres combinés.

Mon travail

Ingestion, requêtes et livraison

J’ai implémenté la récupération et la validation des données, la persistance PostgreSQL, les upserts répétables, les requêtes de recherche et de filtrage, les routes d’API en lecture seule, les pages rendues côté serveur, la configuration de déploiement et les tests.

Implémentation

Imports répétables et requêtes locales

L’importeur télécharge le jeu de données officiel, normalise ses champs variables et valide les dates de publication. Les notices sont mises à jour selon leur identifiant officiel. L’API et l’interface interrogent la copie locale et renvoient toujours vers la notice source.

  1. 01Récupérer le jeu de données public RappelConso
  2. 02Décoder les champs variables et valider les dates
  3. 03Insérer ou mettre à jour dans PostgreSQL
  4. 04Servir les résultats avec les notices officielles

Modèle de lecture local

Conserver une copie interrogeable

PostgreSQL permet de combiner rapidement recherche, filtres exacts et pagination sans dépendre du service amont à chaque page. La contrepartie est claire : AlerteConso devient responsable de la répétabilité des imports et de la communication sur la fraîcheur des sources.

Imports idempotents

Mettre à jour selon l’identifiant officiel

Les imports utilisent ON CONFLICT (id) DO UPDATE. Relancer un import actualise une notice existante au lieu de la dupliquer. Les URL officielles et dates de publication restent des champs de premier ordre.

Gestion des erreurs

Données sources invalides ou indisponibles

Une notice dont la date de publication est invalide est ignorée et comptée comme erreur, tandis que les notices valides continuent. Si la requête amont échoue, l’import s’arrête avant toute écriture. Le service n’affiche pas encore la dernière date de synchronisation : un résultat vide ne prouve jamais qu’un produit est sûr.

Vérification

Parsing et comportement des requêtes

  • Tests Go du décodage des formes de source et de la normalisation des dates
  • Tests des requêtes combinant recherche, filtres et pagination
  • Tests des handlers pour les liens d’API, la validation et les limites de réponse
  • Endpoints de santé et de disponibilité de la base pour le déploiement