Qualité
Un score, pas une promesse
Chaque dataset est noté sur quatre dimensions mesurables. Les défauts connus sont publiés, pas masqués : c'est la condition d'une donnée digne de confiance.
Les quatre dimensions
Complétude
Part des enregistrements dont les champs clés sont renseignés.
Unicité
Absence de doublons et stabilité des identifiants (slugs immuables).
Fraîcheur
Écart entre l'instantané publié et la dernière collecte source.
Cohérence
Conformité aux référentiels (régions, races) et aux contraintes de type.
Contrôles publiés
La qualité sert aussi le maillage interne
Un lien réseau n'est utile que si la clé derrière ce lien reste stable. Les contrôles canidata protègent les pages consommatrices : fiches races, observatoire, recherche d’élevages et articles qui citent les indicateurs.
Stabilité des identifiants
slug non réattribué
Les références et jointures par slug restent valides après mise à jour.
Normalisation territoriale
13 régions canoniques
Les cartes et comparaisons régionales évitent les doublons de libellé.
Minimisation des données
aucune coordonnée contact
Les usages publics restent centrés sur l’activité, pas sur des données personnelles.
Fraîcheur observable
/api/v1/status
Les sites consommateurs peuvent afficher ou surveiller la date du dernier instantané.
Scores par dataset
Normaliser 13 régions
À la source, le champ region mélangeait casse, accents
et espaces parasites. Trois écritures d'« Occitanie » empêchaient toute agrégation fiable.
canidata applique une table canonique de 13 régions et expose un
region_slug stable.
Avant — donnée brute
[
{ "region": "Occitanie" },
{ "region": "occitanie" },
{ "region": "occitanie " },
{ "region": "Auvergne-Rhone-Alpes" },
{ "region": "auvergne-rhone-alpes" }
] Après — normalisé
[
{ "region": "Occitanie", "region_slug": "occitanie" },
{ "region": "Occitanie", "region_slug": "occitanie" },
{ "region": "Occitanie", "region_slug": "occitanie" },
{ "region": "Auvergne-Rhône-Alpes", "region_slug": "auvergne-rhone-alpes" },
{ "region": "Auvergne-Rhône-Alpes", "region_slug": "auvergne-rhone-alpes" }
] Cette transformation est appliquée de façon déterministe au moment du seed, versionnée (voir changelog v1.0.2) et reproductible.