Projet

Général

Profil

Development #33492

atos_genesys: ignorer les dossiers vides, filtrer sur la date de naissance

Ajouté par Benjamin Dauvergne il y a presque 5 ans. Mis à jour il y a presque 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
28 mai 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Le web-service ignore en fait la date de naissance, et nous renvoie parfois des dossiers vides.

Pour le premier souci on va filtrer de notre coté.
Pour le deuxième on va simplement ignorer ces réponses, mais les logger au cas où.

À faire au dessus de #33491.


Fichiers

0001-atos_genesys-filter-call_cherche_beneficiaire-result.patch (3,19 ko) 0001-atos_genesys-filter-call_cherche_beneficiaire-result.patch Benjamin Dauvergne, 28 mai 2019 14:39
0001-atos_genesys-filter-call_cherche_beneficiaire-result.patch (4,07 ko) 0001-atos_genesys-filter-call_cherche_beneficiaire-result.patch Benjamin Dauvergne, 28 mai 2019 15:36
0001-atos_genesys-filter-call_cherche_beneficiaire-result.patch (4,04 ko) 0001-atos_genesys-filter-call_cherche_beneficiaire-result.patch Benjamin Dauvergne, 28 mai 2019 15:52
0001-atos_genesys-filter-call_cherche_beneficiaire-result.patch (4,2 ko) 0001-atos_genesys-filter-call_cherche_beneficiaire-result.patch Benjamin Dauvergne, 28 mai 2019 16:26
0001-atos_genesys-filter-call_cherche_beneficiaire-result.patch (4,57 ko) 0001-atos_genesys-filter-call_cherche_beneficiaire-result.patch Benjamin Dauvergne, 28 mai 2019 16:28
0001-atos_genesys-filter-call_cherche_beneficiaire-result.patch (5,72 ko) 0001-atos_genesys-filter-call_cherche_beneficiaire-result.patch Benjamin Dauvergne, 28 mai 2019 16:53
0001-atos_genesys-make-search-endpoint-a-datasource-of-co.patch (10,3 ko) 0001-atos_genesys-make-search-endpoint-a-datasource-of-co.patch Benjamin Dauvergne, 28 mai 2019 21:42
0001-atos_genesys-make-search-endpoint-a-datasource-of-co.patch (10,4 ko) 0001-atos_genesys-make-search-endpoint-a-datasource-of-co.patch Benjamin Dauvergne, 28 mai 2019 21:47
0001-atos_genesys-make-search-endpoint-a-datasource-of-co.patch (12,6 ko) 0001-atos_genesys-make-search-endpoint-a-datasource-of-co.patch Benjamin Dauvergne, 29 mai 2019 13:04

Révisions associées

Révision 46235973 (diff)
Ajouté par Benjamin Dauvergne il y a presque 5 ans

utils: add to_ascii helper (#33492)

Révision b4aad9cd (diff)
Ajouté par Benjamin Dauvergne il y a presque 5 ans

atos_genesys: make search endpoint a datasource of contact informations (#33492)

The datasource is only provisionned if the search find one and only one
dossier, otherwise it's empty. We also return if for the given NameID
the person is already paired.

Historique

#2

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

  • Statut changé de Nouveau à Solution proposée
#3

Mis à jour par Emmanuel Cazenave il y a presque 5 ans

du coup quelques compléments de test dans test_ws_search ou dans un nouveau test ?

#5

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

Encore un ajustement pour supprimer l'utilisation du téléphone fixe.

#6

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

Encore un coup pour Mike, je filtre le numéro de téléphone.

#8

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

Changement de fusil d'épaule, je construis une datasource à partir des informations de contact.

#9

Mis à jour par Thomas Noël il y a presque 5 ans

  • Statut changé de Solution proposée à Solution validée

Au lieu de logguer, pourquoi ne pas renvoyer les bénéficiaires foireux, quand il y en a, la réponse, à côté de data, genre {'data': beneficiaires, 'bad_data': bad_beneficiaires}. Ca permettrait à l'utilisateur des webservices, qui n'aura pas forcément accès aux logs, de comprendre ce qui se passe.

J'aurais aussi eu tendance à ne pas faire de warning si ce sont des erreurs "habituelles" (genre déjà vues rien que dans les tests des premiers jours...) ; juste des info voire du debug si vraiment c'est tout-le-temps-bogué.

Bon après je sais pas quand tout ça est utilisé, donc, plouf, si ça ne nous lance pas des alertes sans arrêt, go.

#10

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

Dernière itération, j'espère.

Le endpoint search est maintenant une datasource tout ce qu'il y a de plus propre.

  • Si la recherche trouve un dossier contenant des informations de contact, il les retourne sous la forme classique
    {
        'err':0,
        'data': [
            {
                'id':.., 
                'text': ...,
                'phone': ...,
                'email': ...,
                'id_per': ...,
                'nom': ...,
                'prenom': ...,
                'nom_naissance': ...,
            }
        ]
    }
    
  • Si la recherche ne trouve aucun dossier :
    {'err': 1, 'err_desc': 'not-found'}
  • Si la recherche trouve plus d'un dossier:
    {'err': 1, 'err_desc': 'too-many'}
  • Si le dossier ne contient aucune information de contact:
    {'err': 1, 'err_desc': 'no-contacts'}
#11

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

Ne jamais dire jamais, dernier coup pour ne garder que les numéros de mobiles.

#12

Mis à jour par Thomas Noël il y a presque 5 ans

  • Statut changé de Solution proposée à Solution validée

Si la recherche ne trouve aucun dossier, err:1

Pour moi ça devrait pas être source d'erreur, juste data:[] ... non ? De même pour pour "too-many". En fait le nom du endpoint est trompeur, c'est pas un "search" mais un "get" ?

Je suis toujours pas fan des self.logger.warning('no ID_PER'), c'est pas la faute de passerelle si genesys a des info corrompues, le niveau "warning" me semble trop élevé, logger.info devrait être ok.

Le assert identification['ID_PER'] == id_per pourrait être remplacé par la même logique que la vérification de la date de naissance, histoire qu'on n'ait jamais de traces.

Bon bref je ne sais pas à quoi ce endpoint sert, donc je acke car le code est ok et certainement basé sur l'expérience de l'application en face, hop.

#13

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

Thomas Noël a écrit :

Si la recherche ne trouve aucun dossier, err:1

Pour moi ça devrait pas être source d'erreur, juste data:[] ... non ? De même pour pour "too-many". En fait le nom du endpoint est trompeur, c'est pas un "search" mais un "get" ?

Je veux bien mais ça m'obligera juste à mettre l'information du err_desc ailleurs, car on veut pouvoir dire "pas trouver/trouvé mais plusieurs réponses/trouvé mais vous n'avez aucun mobile ou email renseigné".
Et c'est moins propre à coder que raise APIError() et pour moi c'est une erreur (erreur ne voulant pas dire rien marche, mais "ce n'est pas le cas nominal/passant qui nous intéresse").

Je suis toujours pas fan des self.logger.warning('no ID_PER'), c'est pas la faute de passerelle si genesys a des info corrompues, le niveau "warning" me semble trop élevé, logger.info devrait être ok.

Les warnings ça ne trace pas et on a rien pour logger ça coté w.c.s. mais faut bien le noter quelque part; le mélanger avec info ça ne permet pas de suivre facilement les erreurs je trouve, pour pointer sa merde à la ville "là vous voyez, y a des warnings".

Le assert identification['ID_PER'] == id_per pourrait être remplacé par la même logique que la vérification de la date de naissance, histoire qu'on n'ait jamais de traces.

Ok warning.

Bon bref je ne sais pas à quoi ce endpoint sert, donc je acke car le code est ok et certainement basé sur l'expérience de l'application en face, hop.

Ça sert à appairer des gens en se basant sur un code envoyé par SMS ou mail, on ne veut pas que les gens choisissent parmi les résultats on veut qu'ils nous donne assez d'informations pour n'en trouver qu'un.

#14

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

Dernier coup, à la demande de Mike je vérifie si un appairage existe déjà pour un NameID qui m'est transmis, et j'ai transformé le assert en warning.

#15

Mis à jour par Thomas Noël il y a presque 5 ans

  • Statut changé de Solution proposée à Solution validée

Ack, mais peut-être, ajouter la description de NameID dans le endpoint ? (pour le coup j'en comprends pas trop l'utilité, mais hop, go)

#16

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

Thomas Noël a écrit :

Ack, mais peut-être, ajouter la description de NameID dans le endpoint ? (pour le coup j'en comprends pas trop l'utilité, mais hop, go)

Un dossier genesys peut être appairé avec plusieurs comptes publik, pour répondre à la question est-ce que ce compte que je viens de trouver est appairé avec le compte de la personne qui est en train de tenter un appairage, j'ai besoin du NameID, d'une simple recherche on est passé à un WS qui gère un peu tout le processus d'appairage sans code.

#17

Mis à jour par Thomas Noël il y a presque 5 ans

Benjamin Dauvergne a écrit :

Thomas Noël a écrit :

Ack, mais peut-être, ajouter la description de NameID dans le endpoint ? (pour le coup j'en comprends pas trop l'utilité, mais hop, go)

Un dossier genesys peut être appairé avec plusieurs comptes publik, pour répondre à la question est-ce que ce compte que je viens de trouver est appairé avec le compte de la personne qui est en train de tenter un appairage, j'ai besoin du NameID, d'une simple recherche on est passé à un WS qui gère un peu tout le processus d'appairage sans code.

Y'a des gens c'est des fous :) Juste pour être sûr que tu as vu : j'ai bien validé ton patch.

#18

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

Thomas Noël a écrit :

Benjamin Dauvergne a écrit :

Thomas Noël a écrit :

Ack, mais peut-être, ajouter la description de NameID dans le endpoint ? (pour le coup j'en comprends pas trop l'utilité, mais hop, go)

Un dossier genesys peut être appairé avec plusieurs comptes publik, pour répondre à la question est-ce que ce compte que je viens de trouver est appairé avec le compte de la personne qui est en train de tenter un appairage, j'ai besoin du NameID, d'une simple recherche on est passé à un WS qui gère un peu tout le processus d'appairage sans code.

Y'a des gens c'est des fous :) Juste pour être sûr que tu as vu : j'ai bien validé ton patch.

Ouais mais ça évolue encore, faut que je valide la commune et le pays de naissance maintenant...

#19

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit b4aad9cd5f2e3d1a40d3c6bb1b6bad2a3eb39014
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Tue May 28 14:38:54 2019 +0200

    atos_genesys: make search endpoint a datasource of contact informations (#33492)

    The datasource is only provisionned if the search find one and only one
    dossier, otherwise it's empty. We also return if for the given NameID
    the person is already paired.

commit 46235973f07c08b1b84526eed3104d6084de34b5
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Wed May 29 17:19:03 2019 +0200

    utils: add to_ascii helper (#33492)
#20

Mis à jour par Frédéric Péters il y a presque 5 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF