Aller au contenu principal

Algorithme du moteur de questionnaire

Contexte​

La table autour de laquelle tourne tout le moteur de questionnaire est la question.

Les questions sont rassemblées de manière homogène dans des questionnaires.

Un contrat rassemble un ensemble de questionnaires pour évoquer tous les sujets utiles pour formaliser l'accord entre l'Entrepreneur Principal et le Sous-Traitant au sujet de travaux sous-traités exécutés dans le cadre d'un Marché Principal.

Logique de l'algorithme​

  1. Le point de départ d'un questionnaire est une transition. Cette transition est particulière puisqu'elle n'a pas de parent. Cette transition est identifiée dans le questionnaire en tant que rootTransition.
  2. La première transition est explorée: celle-ci dispose d'une childQuestion qui sera la première question posée à l'ouverture du questionnaire, si les conditions sont rassemblées. Les conditions de cette première question ne peuvent poser que sur des réponses apportées dans un questionnaire différent. La satisfaction de ces conditions détermine si oui ou non le questionnaire et ouvert aux réponses.
  3. Chaque question dispose d'une réponse possible qui définit les contraintes liées à la réponse.
  4. Les réponses sont enregistrées en base de données dans une table dédiée et référencent la réponse possible associée.
  5. Les transitions définissent l'ordre des questions et font éventuellement référence à des conditions.
  6. Ces conditions sont des règles qui, si elles sont satisfaites, permettent l'affichage de la question référencée dans la transition en tant qu'enfant. Les conditions sont cumulatives et peuvent appeler d'autres conditions. Toute la chaîne de conditions doit être satisfaite pour afficher la question enfant – logique de AND. Si plusieurs chemins sont possibles en fonction des conditions, une logique de OR est appliquée en définissant plusieurs transitions avec des règles différentes. Tous les chemins sont explorés; le résultat doit être parfaitement prédictible/reproductible, peu importe l'ordre dans la base de données.
  7. Ainsi de suite, jusqu'Ă  ce qu'il n'y ait plus de transitions Ă  explorer.

Partage de la logique entre le backend et le frontend​

Le frontend est responsable sur la gestion d'une seule question à la fois et en intégralité. Lors de son appel à l'API, il doit récupérer toutes les données nécessaires pour assurer le traitement de la question jusqu'à sa soumission pour enregistrement en base de données. Il remet au backend la réponse complète.

Le backend a la responsabilité complète de la gestion du questionnaire. C'est le backend qui suit la logique d'arbre et sait où se trouve le frontend lorsqu'il requiert une question ou soumet une réponse. Le backend a toujours le dernier mot, c'est lui qui est responsable de la sécurité et de l'intégrité des données.

Le frontend est là pour l'affichage et améliorer l'UX.

Changement important en fin de POC

La logique de répartition entre le frontend et le backend a changé en toute fin de phase de POC, ce qui change de manière conséquente le fonctionnement de l'algorithme. La reponsabilité du frontend ne porte plus sur le questionnaire en entier, mais l'unité descend au niveau de la question.

Représentation du moteur de questionnaire en base de données​

Représentation du moteur de questionnaire en base de données

Vérification des cas d'usages​

  1. Créer un questionnaire
  2. Répondre à un questionnaire
  3. Afficher le contrat