Galileo#

https://code.mazars.global/2022/galileo_forms/-/issues/314

  • ADD bloc: “Lancer l’analyse” qui groupe les blocs suivants: Traitement des données + Préparation des données + Génération du fichier PBI

  • ADD bloc: “Générer les tableaux de promotion” qui groupe les blocs suivants: Traitement des données + Préparation des données + Génération du tableau de promotion

graph TD BD[(Base de données)] BD --> EBD[Exporter les données de la base des données] subgraph GB1[<b> export_intermediate_data </b>: Exporter les données] EBD --> A[Ajouter les colonnes manquantes] subgraph B1[<b> process_data </b>: Traitement des données] A[<b> add_missing_columns </b>: Ajouter les colonnes manquantes]--> B[<b> add_manual_columns </b>: Ajouter les colonnes manuelles] B-->BB[<b> add_manual_modifications </b>: Prendre en compte les valeurs dans les champs manuels] BB--> C[<b> compute_post_diploma_duration </b>: Calculer la durée post-diplome] C--> D[<b> process_pro_situation </b>: Créer la colonne situation professionnelle globale] D--> E[<b> get_function_categorization </b>: Remplir les colonnes cibles] E--> EE[<b> add_manual_modifications </b>: Prendre en compte les valeurs dans les champs manuels pour les colonnes cibles] EE--> F[<b> process_salary_range </b>: Traiter la colonne fourchette des salaires 1] F--> G[<b> get_salary_alerts, get_cible_litt_alerts, get_status_alerts </b>: Calculer les colonnes d'alertes] G-->H[<b> generate_key_columns </b>: Créer la colonne Unique_Key] end subgraph B2[<b> export_processed_data </b>: Exporter les données] I[ <b> flag_duplicated_lines </b>: Identifier les valeurs en doubles dans chaque champs] I--> J[Récupérer les valeurs avant les changements manuels dans les colonnes sources] J--> K[<b> rename_columns_list </b>: Renommer les colonnes en utilisant le fichier de spec] K--> L[<b> select_columns_list </b>: Sélectionner la liste des colonnes à enregistrer] end end subgraph B3[<b> prepare_data </b>: Préparation des données] M[Supprimer les colonnes old]--> N[Ignorer les lignes identifiées par le flag TO_REMOVE] N--> O[<b> deduplicate_table </b>: dédoublonner les lignes en utilisant la colonne UNIQUE_KEY et la durée poste-diplome comme clé] end subgraph B4[<b> generate_pre_fiche6 </b>: Gnération du fichier PBI] P[<b> detect_current_responses </b>: Détecter les réponses à 6 mois et les réponses en situation actuelle] P--> Q[<b> process_salary </b>: Compléter la colonne salaire brute en utilisant la médiane de la fourchette] Q--> QQ[<b> process_salary_range </b>: Traiter la colonne fourchette des salaires 2] QQ--> QQQ[<b> process_salary </b>: Compléter la colonne salaire brute 2 en utilisant la médiane de la fourchette 2] QQQ--> R[<b> get_global_salary </b>: Calculer la colonne de salaire global] R-->S[<b> apply_pre_fiche6_rules </b>: Appliquer les règles de calculs pour les colonnes synthétiques] S-->SS[<b> process_fiche6_output </b>: Convertir les colonnes salaires, primes et cibles en format numériques] SS-->T[<b> process_promotion </b>: Calculer la colonne Date Promotion à partir de la promotion de la date de jury] T-->VV[<b> prepare_to_inject </b>: Dupliquer les données des colonnes synthétiques dans toutes les réponses correspondantes] T-->V[<b> rename_to_export_columns </b>: Renommer les colonnes en utilisant le fichier de spec] V-->w[ <b> select_columns_list </b>: Sélectionner la liste des colonnes à enregistrer] end subgraph B5[<b> generate_fiche7 </b>: Génération du tableau de promotion] X[<b> detect_current_responses </b>: Détecter les réponses à 6 mois et les réponses en situation actuelle] X--> XX[Compléter le salaire brut annuel par la fourchette non traitée si non renseigné] XX--> XXX[Compléter le salaire brut annuel 2 par la fourchette 2 non traitée si non renseigné] XXX-->XXXX[Concaténer les valeurs fonction et fonction2 dans la colonne fonction] XXXX-->XXXXX[Concaténer les valeurs salaire brut annuel et salaire brut annuel 2 dans la colonne salaire brut annuel] XXXXX--> Y[ <b> create_professional_situation_niv1 </b>: Calculer la colonne situation professionnelle niv1] Y--> Z[<b> pivot_fiche7 </b>: Appliquer la fonction pivot pour créer les colonnes 6 mois et les colonnes situation actuelle] Z-->AA[<b> apply_fiche7_rules </b>: Appliquer les règles de calculs pour la fiche7] AA-->AB[<b> rename_columns_fiche7 </b>: Renommer les colonnes pour respecter la template de la fiche7] AB-->AC[<b> export_fiche7 </b>: Sauvgarder les données : un fichier pour chaque titre] end subgraph B6[Fichiers de sortie] AD[/Fiche 7 France Compétences/] AE[/Fiche 6 France Compétences/] end H -->I L-->LL[/Exporter le fichier/] LL-->LLL[Optionnel Remplissage des colonnes - manuel] LLL-->BD O -->X AC -->AD O -->P w -->ww[/Exporter le fichier à injecter dans le PBi/] ww -->www[Traiter les données en utilisant Power Querry] www-->wwwww[Rédiger le rapport] wwwww-->AE VV-->BD

issue

On veut créer deux nouveaux subgraphs “Lancer l’analyse” et “Générer les tableaux”.
  • Le subgraph “Lancer l’analyse” grouperait les subgraphs “Traitement des données, préparation des données et génération du PBI”.

  • Et “Générer les tableaux” grouperait les subgraphs “Traitement des données, préparation des données et génération du tableau de promotion”.

On se retrouverait donc avec le subgraph “Traitement des données” dans 3 subgraphs différents.
Même chose pour le subgraph “Préparation des données” qui se retrouverait dans deux subgraphs distincts.
Malheureusement, en mermaid lorsqu’on emboite les subgraphs tel que voulu ci-dessus on n’obtient pas le rendu escompté.
Exemple pour illustrer le problème :
../../../../_images/asma_exmpl.png
Le mermaid ne retourne pas d’erreur, mais le subgraph “préparation de données” n’apparait que dans le premier subgraph.
Si l’on inverse l’ordre voici le rendu :
../../../../_images/asma_exmpl2.png
Une première option serait de dupliquer les subgraph “préparation de données” et “traitement de données”, tout en gardant le sens des différentes flèches.
On se retrouverait alors avec 3 subgraphs identiques “Traitement de données “ dans 3 subgraphs différents.
Autrement, pour garder la structure de base du mermaid.
On pourrait aussi créer d’autres mermaids annexes pour illustrer les subgraphs “Lancer l’analyse” et “Générer les tableaux de promotion”.
Sinon avec :
  • B1 = Traitement des données

  • B3 = Préparation des données

  • B4 = Génération du PBI

  • B5 = Génération du tableau de promotion

En rajoutant ces quelques lignes de codes :

subgraph B7[Lancer l'analyse]
    B1
    B3
    B4
end

subgraph B8[Generer les tableaux de promotion]
    B1
    B3
    B5
end

On obtient le mermaid ci-dessous :

graph TD BD[(Base de données)] BD --> EBD[Exporter les données de la base des données] subgraph GB[<b> export_intermediate_data </b>: Exporter les données] EBD --> A[Ajouter les colonnes manquantes] subgraph B1[<b> process_data </b>: Traitement des données] A[<b> add_missing_columns </b>: Ajouter les colonnes manquantes]--> B[<b> add_manual_columns </b>: Ajouter les colonnes manuelles] B-->BB[<b> add_manual_modifications </b>: Prendre en compte les valeurs dans les champs manuels] BB--> C[<b> compute_post_diploma_duration </b>: Calculer la durée post-diplome] C--> D[<b> process_pro_situation </b>: Créer la colonne situation professionnelle globale] D--> E[<b> get_function_categorization </b>: Remplir les colonnes cibles] E--> EE[<b> add_manual_modifications </b>: Prendre en compte les valeurs dans les champs manuels pour les colonnes cibles] EE--> F[<b> process_salary_range </b>: Traiter la colonne fourchette des salaires 1] F--> G[<b> get_salary_alerts, get_cible_litt_alerts, get_status_alerts </b>: Calculer les colonnes d'alertes] G-->H[<b> generate_key_columns </b>: Créer la colonne Unique_Key] end subgraph B2[<b> export_processed_data </b>: Exporter les données] I[ <b> flag_duplicated_lines </b>: Identifier les valeurs en doubles dans chaque champs] I--> J[Récupérer les valeurs avant les changements manuels dans les colonnes sources] J--> K[<b> rename_columns_list </b>: Renommer les colonnes en utilisant le fichier de spec] K--> L[<b> select_columns_list </b>: Sélectionner la liste des colonnes à enregistrer] end end subgraph B3[<b> prepare_data </b>: Préparation des données] M[Supprimer les colonnes old]--> N[Ignorer les lignes identifiées par le flag TO_REMOVE] N--> O[<b> deduplicate_table </b>: dédoublonner les lignes en utilisant la colonne UNIQUE_KEY et la durée poste-diplome comme clé] end subgraph B4[<b> generate_pre_fiche6 </b>: Gnération du fichier PBI] P[<b> detect_current_responses </b>: Détecter les réponses à 6 mois et les réponses en situation actuelle] P--> Q[<b> process_salary </b>: Compléter la colonne salaire brute en utilisant la médiane de la fourchette] Q--> QQ[<b> process_salary_range </b>: Traiter la colonne fourchette des salaires 2] QQ--> QQQ[<b> process_salary </b>: Compléter la colonne salaire brute 2 en utilisant la médiane de la fourchette 2] QQQ--> R[<b> get_global_salary </b>: Calculer la colonne de salaire global] R-->S[<b> apply_pre_fiche6_rules </b>: Appliquer les règles de calculs pour les colonnes synthétiques] S-->SS[<b> process_fiche6_output </b>: Convertir les colonnes salaires, primes et cibles en format numériques] SS-->T[<b> process_promotion </b>: Calculer la colonne Date Promotion à partir de la promotion de la date de jury] T-->VV[<b> prepare_to_inject </b>: Dupliquer les données des colonnes synthétiques dans toutes les réponses correspondantes] T-->V[<b> rename_to_export_columns </b>: Renommer les colonnes en utilisant le fichier de spec] V-->w[ <b> select_columns_list </b>: Sélectionner la liste des colonnes à enregistrer] end subgraph B5[<b> generate_fiche7 </b>: Génération du tableau de promotion] X[<b> detect_current_responses </b>: Détecter les réponses à 6 mois et les réponses en situation actuelle] X--> XX[Compléter le salaire brut annuel par la fourchette non traitée si non renseigné] XX--> XXX[Compléter le salaire brut annuel 2 par la fourchette 2 non traitée si non renseigné] XXX-->XXXX[Concaténer les valeurs fonction et fonction2 dans la colonne fonction] XXXX-->XXXXX[Concaténer les valeurs salaire brut annuel et salaire brut annuel 2 dans la colonne salaire brut annuel] XXXXX--> Y[ <b> create_professional_situation_niv1 </b>: Calculer la colonne situation professionnelle niv1] Y--> Z[<b> pivot_fiche7 </b>: Appliquer la fonction pivot pour créer les colonnes 6 mois et les colonnes situation actuelle] Z-->AA[<b> apply_fiche7_rules </b>: Appliquer les règles de calculs pour la fiche7] AA-->AB[<b> rename_columns_fiche7 </b>: Renommer les colonnes pour respecter la template de la fiche7] AB-->AC[<b> export_fiche7 </b>: Sauvgarder les données : un fichier pour chaque titre] end subgraph B6[Fichiers de sortie] AD[/Fiche 7 France Compétences/] AE[/Fiche 6 France Compétences/] end H -->I L-->LL[/Exporter le fichier/] LL-->LLL[Optionnel Remplissage des colonnes - manuel] LLL-->BD O -->X AC -->AD O -->P w -->ww[/Exporter le fichier à injecter dans le PBi/] ww -->www[Traiter les données en utilisant Power Querry] www-->wwwww[Rédiger le rapport] wwwww-->AE VV-->BD subgraph B7[Lancer l'analyse] B1 B3 B4 end subgraph B8[Generer les tableaux de promotion] B1 B3 B5 end
On décidera finalement de diviser le diagram en 4 parties :