top of page

Une solution concrète pour un pain point métier, avec la Power Platform

  • Nada Brisville
  • 25 nov. 2024
  • 5 min de lecture

Dernière mise à jour : 29 nov. 2024


Tina IA controle qualité

Je vous présente Tina (mon avatar 🙃), qui se met dans la peau d'une Inspectrice Qualité pour contrôler la marchandise reçue en usine agroalimentaire. Tina doit suivre un processus strict à chaque réception de lots de marchandise de la part de ses fournisseurs. Le contrôle se fait sur plusieurs produits du lot, de manière aléatoire. Et si elle rélève plus de 3 anomalies dans un même lot, elle doit alerter le fournisseur du lot pour annuler la commande et lancer une procédure d'investigation interne. Voici un schéma de la procédure.

Schéma procédure qualité

C'est un processus long et contraignant, qui peut vite contenir des erreurs humaines, dûes à la répétition des tâches manuelles et le retard de la synchronisation avec ses collègues.


Démo Time !


Grâce à la Power Platform, ce processus peut être réduit à quelques minutes, avec un taux d'erreurs nettement inférieur. Voici la démo d'une solution concrète, en vidéo. Ensuite, j'expliquerais étape par étape la mise en place de cette solution.



 

Guide Step by Step !


Nous allons demander à Copilot de nous aider à drafter une première version de notre modèle de données et application, en utilisant un prompt simple. N'oubliez pas de vérifier que vous travaillez dans le bon environnement.



Copilot nous propose ce modèle de données. Pour chaque table, cliquer sur les 3 points, afficher les données et les modifier pour coller à notre scénario. 



Ici, j'ai tout simplement changé quelques données pour adhérer à mon dataset, puis j'ai ajouté une colonne "Code barre", avec quelques data dedans (vous pouvez demander à Copilot de vous générer des données aussi). J'ai aussi ajouté une note de qualité dans ma table Contrôle Qualité.



J'ai ensuite demandé à Copilot de créer une table "Contrôleur" et de la lier à la table "Contrôle Qualité" pour identifier l'agent du contrôle en cours. Il est possible que Copilot ne comprenne pas du premier coup, n'hésitez pas à itérer dessus, annuler et redemander, ou même discuter avec lui en anglais 😊



Ok ! Ca a l'air pas mal, on enregistre et on ouvre l'application !

Ca peut prendre quelques minutes, le temps du Set up.


Entre temps, on va passer sur AI Builder, module d'IA de la Power Platform qui va nous permettre de créer et entrainer un modèle de reconnaissance de ... Pistaches 🙃!


Si vous n'avez jamais utilisé AI Builder, vous pouvez obtenir 30j d'essai gratuit.


On va dans la catégorie Images et on cherche "Détecter des objets personnalisés dans les images" ou Image Detector en anglais. Attention : ce modèle n'est pas disponible pour les environnements hébergés en France.



Ici, on annonce les objets qu'il va falloir lui apprendre à détecter. J'ai choisi de mon côté 3 types : Pistache OK, Pistache vide, Pistache sans coquille. 



Il faut maintenant importer les images avec les objets à entrainer. Le plus vous en avez, le mieux c'est ! Idéalement, il faut avoir des photos des objets sous différentes formes, luminosité, emplacement... Misez sur la diversification au max.

Il faut au moins une cinquantaine d'images au total et une quinzaine d'images par objet.



Le travail de Tag va pouvoir commencer. Pour chaque image, il faut délimiter l'objet (souvent, c'est pré-délimité, il faudra juste cliquer dessus) et l'associer au Tag correspondant. Un travail un peu redondant mais essentiel 💪



Quand c'est fini, on lance l'entrainement du modèle, en 1 clic !


Ca peut prendre quelques minutes, no worries. 


Une fois fini, ça devrait vous sortir un Score de performance. Ici, je suis à 79, ce qui est pas mal, mais améliorable ! (Attention toutefois, un score supérieur à 98 est généralement signe que le dataset n'est pas assez diversifié et donc c'est contre productif).


Vous pouvez le tester rapidement en lui fournissant une photo qui n'a pas servit à l'entrainement. Ensuite, vous pouvez le publier pour pouvoir l'utiliser dans Power Apps.



Une fois notre modèle publié, on repasse sur notre Application. Copilot m'a généré une application avec un template pré-défini, auquel je ne vais pas toucher. Je vais juste ajouter des images pour rendre l'interface plus friendly et je vais plutôt me concentrer sur des ajouts fonctionnels. 



Nous allons initialiser 2 variables qui nous serviront plus tard. Pour ça, on va dans l'arborescence et on clique sur App, ensuite on ajoute cette formule dans le onStart (attention, si votre navigateur est en anglais, il faut remplacer les ; par des , et les ;; par des ;).

Set(ScannedCode; "");; Set(TotalPistaches;1)

On va dans l'écran Contrôle Qualité et on ajoute la fonctionnalité d'IA "Détecteur d'objets".



Une fois le contrôle ajouté, on va dans la propriété onChange et on ajoute ce bout d'expression. Cette expression va tout simplement permettre de récupérer les informations retournées par le détecteur d'image, compter les anomalies et nous sortir un score, qu'on pourra ajouter dans le champs Note.


Set(PistachesOK;LookUp(ObjectDetector1.GroupedResults; TagName= "Pistache vide"; ObjectCount));;
Set(PistachesVides; LookUp(ObjectDetector1.GroupedResults; TagName = "Pistache vide"; ObjectCount));;
Set(PistachesSansCoquilles; LookUp(ObjectDetector1.GroupedResults; TagName = "Pistache sans coquille"; ObjectCount));;
Set(TotalPistaches; Sum(ObjectDetector1.GroupedResults; ObjectCount));;
Set(ScoreQualite; PistachesOK/TotalPistaches);;

A partir de là, pour notre propre confort, j'ai :

  • arrondi le nombre retourné par le Score

  • ajouté la date par defaut au lieu de la rentrer manuellement 

Default Date : Today()
  • ajoué le nom du contrôleur par defaut, l'utilisateur de l'app

User().FullName

On peut aussi mettre à jour le résultat du contrôle de manière automatique en mettant un contrôle simple. Voici la formule à ajouter sur le label du résultat :

Set(ScannedCode; First(BarcodeReader1.Barcodes).Value)

J'ai ensuite juste ajouté un contrôle de type code barre dans l'écran du Lot pour plus de facilité lors du contrôle. Et j'ai mis à jour la variable CodeBarre avec cette formule.

Set(ScannedCode; First(BarcodeReader1.Barcodes).Value)

Et enfin, ajouté la variable ScannedCode à la proriété Text du label de Code Barre.


C'en est fini pour l'App, mais vous pouvez la customiser à votre goût. Puis, save and Publish (éventuellement partager l'application si vous voulez l'utiliser à plusieurs).


Passons à la partie Automatisation, avec Power Automate.

Une fois n'est pas coutume, j'utilise Copilot pour m'aider sur le premier jet, ce qui me fait gagner beaucoup de temps.


Nous avons besoin de mettre en place le processus suivant :

Quand un nouveau contrôle de qualité arrivé, le flow va vérifier s'il y a déjà des lignes de ce même lot qui ont une valeur de qualité inférieur à 0.9, et s'il en trouve 3, alors il envoi au contrôleur une approbation pour envoyer automatiquement un email au fournisseur le notifiant de l'anomalie.


Voici le prompt utilisé : 



Ce n'est pas parfait, mais c'est un bon début, j'accepte la proposition de copilot, qui me bascule sur le studio. 


Ici, je rajoute la 2ème étape pour avoir la liste des contrôles rejetés de ce même lot.


Pour celà, on va filtrer la requêtre avec cette expression (à adapter aux noms logiques de vos tables et à la valeur numérique du résultat "Rejeté", ici 746780001. Vous pouvez trouver ces infos-là dans Dataverse, directement en regardant les propriétés de vos colonnes.



Il faut maintenant compter le nombre de lignes retournées et vérifier si c'est bien égal à 3. Pour ça, on peut ajouter cette expression là dans la condition : 

length(outputs('Lister_les_lignes_de_ce_lot_qui_sont_rejetées')?['body/value'])

A partir de là, c'est très simple, on ne fait que se connecter aux reste des connecteurs utilisés et remplir les informations qui nous intéressent :


Remplissez les champs avec le plus de valeurs dynamiques possibles pour qu'on ait des informations de contexte dans l'approbation et que le fournisseur puissent avoir toutes les informations également pour traiter de son côté.


Il ne vous reste plus qu'à sauvegarder et tester votre application comme dans la démo !


J'espère que ce format Step-by-Step vous a plu 😉


A bientôt pour un autre article de la série : Une solution concrète pour un pain point métier, avec la Power Platform.

 
 
 

Commentaires


bottom of page