Skip to content

annuaire-entreprises-data-gouv-fr/site

Repository files navigation

License Badge CI (lint, unit-tests, end2end, a11y) External API check Deploy cluster Partenaires Badge Sources de données Badge Statut des API Badge Changelog Badge Statistiques Badge

Dépôt du site Annuaire des Entreprises. Pour l’API Recherche d’Entreprises, consultez le dépôt de l’API.

Ce site met à disposition des citoyens et des agents les données ouvertes (open-data) des entreprises, associations et administrations dotées d'un n° SIREN/SIRET.

Ce site ré-utilise les données des différentes administrations partenaires.

Contenu

Comment contribuer ?

Vous êtes un contributeur exterieur ? Soumettez-nous une nouvelle issue ou une pull request.

Vous faîtes partie de l’équipe contenu ? Consultez le tutoriel.

Vie privée et siren protégés

Pour protéger un siren et en limiter la diffusion suivez la procédure.

Dépôts liés 🏗

Voici la liste des dépôts de code du projet Annuaire des Entreprises :

Description Accès
Le site Web par ici 👉
Les actions SEO par ici 👉
L’API du Moteur de recherche par ici 👉
Pipeline ETL par ici 👉
Le proxy API du site par ici 👉
Tests de pertinence de la recherche par ici 👉
Authentification des outils d’admin par ici 👉

Développement

Outils

Nous utilisons Commit-lint avec conventional-commits

Installation

Prérequis

Le projet nécessite node > 18 et redis installé pour être lancé en local.

# Installation
npm i

# Copier le fichier .env
cp .env.dev .env

# Lancer le site en dev
npm run dev

# Lancer le site en prod
npm run build && npm run start

Tests

  1. Linter
npm run lint
  1. Tests unitaires
npm run test:unit
  1. Tests end2end
npm run test:end2end
  1. Tests API calls
npm run test:api-clients

Deploiement

Le déploiement se fait par Github action

A chaque "merge" sur master :

NB: Si plusieurs déploiements sont déclenchés en même temps, seul le premier va jusqu'au bout. Les autres sont automatiquement interrompus.

Sitemap & scripts SEO

Le script SEO est déclenché deux fois par mois par une github action. Il génère :

  • un ensemble de sitemaps listant les ~8M d'unite legales (~200 fichiers)
  • un arbre de page de resultats statiques avec les ~8M d’UL (~200 000 fichiers)

Les fichiers sont compressés puis stockés dans un artifact et téléchargés lors du déploiement sur les différents environnements.

Le script est dans son propre dossier, avec son propre package.json et sa propre config typescript.

Pour lancer le script :

cd seo-script
npm run build:seo

Licence

Le code source est publié par la Direction interministérielle du numérique sous licence MIT.

Remontée d'erreur

Nous utilisons Sentry pour remonter les erreurs du site. Voici les bonnes pratiques à suivre pour remonter une erreur :

  1. Utiliser le bon niveau d'erreur
  • fatal : une erreur qui empêche tout ou une partie du site de fonctionner. Une page d'erreur est affichée à l'utilisateur.
  • logErrorInSentry : une fonctionnalité importante du site ne fonctionne pas.
  • logWarningInSentry : une fonctionnalité mineure du site ne fonctionne pas. Un comportement imprévu est arrivé. Non bloquant pour l'utilisateur.
  • logInfoInSentry : information sur le comportement du site
  1. Logguer des erreurs et non des string. Cela permet d'avoir les stacktrace complètes et uniformise l'affichage dans sentry. Pour cela, vous pouvez vous aider de la classe Exception
  logErrorInSentry(new Exception({ name: 'RedisClientFailException' });
  1. Remonter des erreurs métiers : l'erreur doit informer sur ce qui n'a pas fonctionné du point de vue de l'utilisateur. Vous pouvez utiliser le paramètre cause pour logguer l'erreur technique à l'origine de l'erreur métier. Vous pouvez également ajouter des informations contextuelles sur l'erreur via le paramètre context.
try {
  // ...
} catch (e) {
  logErrorInSentry(
    new Exception({
      name: 'AgentConnectionFailedException',
      message: 'Error during authentication',
      cause: e,
      context: {
        siren,
        siret,
        details: agentId,
      },
    })
  );
}
  1. Utiliser des classes d'erreur spécialisée.
  • Exception : erreur métier
  • InternalError : bug interne du code qui n'est jamais supposé arriver
  • FetchRessourceException : erreur lors d'un appel à une API externe

Vous pouvez en créer d'autres en étendant la classe Exception.

About

Vérifiez les informations légales publiques des entreprises, associations et services publics en France

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published