mission-apprentissage / referentiel

GNU Affero General Public License v3.0
3 stars 1 forks source link

Ajout de la possibilité de rechercher par SIREN sur le moteur de recherche du site #202

Open FlavieSauvebois opened 4 weeks ago

FlavieSauvebois commented 4 weeks ago

Il serait intéressant de pouvoir rechercher les OF appartenant au même groupe sur le Référentiel en intégrant la possibilité de rechercher par SIREN. Aujourd'hui la recherche peut se faire seulement sur le SIRET.

Ex : 824092688 00178 SIREN SIRET

FlavieSauvebois commented 4 weeks ago

Vu avec David après le Stand-up - voir si on fait 2 recherches (une par SIREN et une par SIREN) ou si une seule suffit est elle recherche à la fois sur le SIRET ou le SIREN - à voir ce qui est le plus simple à mettre en place

ldaverio commented 1 week ago

Y aurait-il un intérêt à proposer de l'autocomplétion, i.e. la recherche commence dès qu'on a tapé un nombre minimal de caractères ? Ce mode de recherche permettrait d'unifier "naturellement" les recherches par SIREN et SIRET.

ldaverio commented 1 week ago

Actuellement, le moteur de recherche utilise l'opérateur $text de MongoDB, qui permet de rechercher une valeur dans tous les champs des documents. Malheureusement, cette recherche ne permet de rechercher que des valeurs exactes :(

https://github.com/mission-apprentissage/referentiel/blob/be34381322b7f3a9c6da3c3dc3f1d0c23390e505/server/src/http/routes/organismesRoutes.js#L113

Il y a plusieurs possibilités pour contourner cette limitation, notamment :

La deuxième solution n'est pas élégante (duplication de données), mais corrigerait la recherche sans toucher au code source. Je conseillerais probablement la première, mais je vais laisser décanter un peu les choses, voir si j'ai une meilleure idée.

NB : la recherche $regex est potentiellement plus dangereuse que $search, elle nécessite probablement de nettoyer le terme de recherche pour supprimer tous les caractères spéciaux.

ldaverio commented 1 week ago

J'ai soumis (pull request #208) une solution qui me paraît être meilleure, i.e. compléter la recherche $text existante par une recherche $regex sur le champ "siret", les deux critères étant reliés par un "ou" logique.

FlavieSauvebois commented 1 week ago

Bonjour Laurent, Merci pour tes investigations et ta proposition. J'en parle avec Georges-André lors de notre prochain point en équipe (le 11/07).

ldaverio commented 1 week ago

En fait, si ça ne tenait qu'à moi, je ferais une recherche de type "autocomplete", i.e. qui affiche les résultats au fur et à mesure qu'on tape (par exemple, à partir de 3 caractères). Certes, ça augmenterait le nombre de requêtes sur le backend, mais je trouve que l'ergonomie serait plus réactive pour l'utilisateur.

gasilber commented 1 hour ago

Déployé en développement pour recette: https://dev-referentiel.apprentissage.onisep.fr