Dépôt du site L'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.
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.
Pour protéger un siren et en limiter la diffusion suivez la procédure.
Voici la liste des dépôts de code du projet L'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 👉 |
Nous utilisons Commit-lint avec conventional-commits
Le projet nécessite node > 18 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
- Linter
npm run lint
- Tests unitaires
npm run test:unit
- Tests end2end
npm run test:end2end
- Tests API calls
npm run test:api-clients
Le déploiement se fait par Github action
A chaque "merge" sur master :
- Laissez le déploiement se faire automatiquement sur staging via l'action deploy-staging
- Vérifiez vos changements sur staging
- Vérifiez que les tests end2end passent sur recipe-staging
- Lancez manuellement le déploiement sur production : sur deploy-production et cliquez sur "Run workflow" -> "Run workflow"
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.
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
Le code source est publié par la Direction interministérielle du numérique sous licence MIT.
Nous utilisons Sentry pour remonter les erreurs du site. Voici les bonnes pratiques à suivre pour remonter une erreur :
- 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
- 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' });
- 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ètrecontext
.
try {
// ...
} catch (e) {
logErrorInSentry(
new Exception({
name: 'AgentConnectionFailedException',
message: 'Error during authentication',
cause: e,
context: {
siren,
siret,
details: agentId,
},
})
);
}
- Utiliser des classes d'erreur spécialisée.
Exception
: erreur métierInternalError
: bug interne du code qui n'est jamais supposé arriverFetchRessourceException
: erreur lors d'un appel à une API externe
Vous pouvez en créer d'autres en étendant la classe Exception
.