Projet

Général

Profil

Development #57669

toulouse_smart : permettre à wcs de connaître l'id côté smart lorsque la requête de création se fait de façon asynchrone.

Ajouté par Nicolas Roche il y a plus de 2 ans. Mis à jour il y a plus de 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
07 octobre 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Si smart n'est pas disponible, la requête de création d'intervention sur sera rejouée plus tard via les jobs du connecteur.
Dans ce cas wcs n'a pas de moyen de récupérer les informations sur l'intervention.


Fichiers

Révisions associées

Révision d82af1c2 (diff)
Ajouté par Nicolas Roche il y a plus de 2 ans

toulouse_smart: correct help text on uuid parameter (#57669)

Révision 340cf3d8 (diff)
Ajouté par Nicolas Roche il y a plus de 2 ans

test: remove duplicated code (#57669)

Révision 15577549 (diff)
Ajouté par Nicolas Roche il y a plus de 2 ans

toulouse_smart: trigger wcs when intervention is created async (#57669)

Historique

#1

Mis à jour par Nicolas Roche il y a plus de 2 ans

Il y aurait 2 façons de renvoyer à wcs le json généré par smart à la création de l'intervention :
  • ajouter un WS get_create_response sur lequel wcs peut faire du pulling et qui renverrai ce json.
  • ajouter systématiquement le json dans le contenu envoyé à wcs lors du déclenchement d'un trigger (via le endpoint update_intervention)
#3

Mis à jour par Nicolas Roche il y a plus de 2 ans

  • Assigné à mis à Nicolas Roche
#5

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

Je pensais que tu ajouterais une notification directe quand le job create_intervention_job réussit, ça serait le plus simple, en cas de création asynchrone là il faudra attendre une notification de SMART pour que w.c.s. connaisse le numéro de DI, ça pourrait juste être :

    def create_intervention_job(self, *args, **kwargs):
        wcs_request = self.wcs_requests.get(pk=kwargs['pk'])
        if not wcs_request.push():
            raise SkipJob()
+        payload = {
+            'creation_response': {
+                'wcs_form_api_url': wcs_request.wcs_form_api_url,
+                'wcs_form_number': wcs_request.wcs_form_number,
+                'uuid': wcs_request.uuid,
+                'payload': wcs_request.payload,
+                'result': wcs_request.result,
+                'status': wcs_request.status,
+            }
+        }
+        smart_request = wcs_request.smart_requests.create(payload=payload)
+        self.add_job(
+            'update_intervention_job',
+            id=smart_request.id,
+            natural_id='smart-request-%s' % smart_request.id,
+        )   
#6

Mis à jour par Nicolas Roche il y a plus de 2 ans

  • Statut changé de Solution proposée à En cours

Ok, j'entends ce que tu proposes :

On déclenche le trigger 'hooks/update_intervention/' qui va donner lieu à une unique action globale dans le workflow.
Ce sera à la charge du statut dans lequel sautera cette action globale de distinguer soit
  • que cet appel fait suite à une création asynchrone
    (en détectant la présence de creation_response dans le payload reçu par wcs)
  • qu'il s'agit d'une demande de mise à jour de smart
    (avec data de présent dans le payload reçu par wcs)
#7

Mis à jour par Nicolas Roche il y a plus de 2 ans

Fait : on retrouve bien l'id smart dans les données envoyées au trigger wcs "update_intervention" faisant suite à une création asynchrone.
form_workflow_data_update_intervention_creation_response_result_id (dans l'inspecteur)

#8

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

Nicolas Roche a écrit :

Ok, j'entends ce que tu proposes :
...

On peut utiliser les trigger comme déclencheur d'un saut classique, pas besoin d'action globale, mais oui c'est l'idée.

#9

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

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

dupplicated -> duplicated

#10

Mis à jour par Nicolas Roche il y a plus de 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 155775498cb6281a720a7fa95733ce9cdb3d6883
Author: Nicolas ROCHE <nroche@entrouvert.com>
Date:   Mon Oct 11 15:45:39 2021 +0200

    toulouse_smart: trigger wcs when intervention is created async (#57669)

commit 340cf3d8b00cce44a2d29d89b8eb04b8b9258d87
Author: Nicolas ROCHE <nroche@entrouvert.com>
Date:   Mon Oct 11 15:45:03 2021 +0200

    test: remove duplicated code (#57669)

commit d82af1c290444c4caeb9a975810e830074b405eb
Author: Nicolas ROCHE <nroche@entrouvert.com>
Date:   Thu Oct 7 16:48:37 2021 +0200

    toulouse_smart: correct help text on uuid parameter (#57669)
#11

Mis à jour par Frédéric Péters il y a plus de 2 ans

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

Formats disponibles : Atom PDF