Construire un workflow RPA avec Yindao pour générer automatiquement des rapports de ventes quotidiens Xiaohongshu

La production manuelle de rapports de ventes quotidiens pour Xiaohongshu implique souvent des étapes répétitives : collecter des données auprès de multiples plateformes, les consolider dans des feuilles de calcul, vérifier les erreurs de formule et distribuer les fichiers. L'utilisation d'un processus RPA (Robotic Process Automation) avec Yindao permet d'automatiser cette chaîne d'opérations, de la collecte des données à l'envoi du rapport final. L'objectif est de réduire le temps de génération d'un rapport de plusieurs heures à quelques minutes, tout en éliminant les erreurs de saisie manuelle. Voici comment implémenter un tel workflow.

Présentation du flux d'automatisation

Le processus se décompose en quatre étapes principales :

  1. Collecte de données multi-plateformes : extraire les informations depuis le tableau de bord marchand.
  2. Nettoyage et calcul des métriques : standardiser les formats, calculer les variations et les indicateurs dérivés.
  3. Génération du rapport structuré : créer un fichier Excel avec plusieurs feuilles (synthèse, analyse produits, tendances).
  4. Distribution automatisée : envoyer le rapport par email, messagerie interne et sauvegarde en base de données.

Étape 1 : Collecte automatisée des données

Le robot se connecte à la plateforme marchande et navigue vers les sections dédiées aux données de vente et de trafic.

# Pseudo-code pour la collecte des données
Navigateur.Ouvrir("https://merchant.xiaohongshu.com")
Navigateur.Saisir("#champ-utilisateur", Config.Lire("identifiant"))
Navigateur.Saisir("#champ-motdepasse", Config.Lire("motdepasse"))
Navigateur.Cliquer("#bouton-connexion")

Navigateur.Cliquer("#lien-donnees")
Navigateur.Cliquer("#lien-resume-ventes")

chiffreAffaires = Navigateur.LireTexte("#element-ca")
nombreCommandes = Navigateur.LireTexte("#element-commandes")
panierMoyen = Navigateur.LireTexte("#element-panier")
tauxConversion = Navigateur.LireTexte("#element-conversion")

Navigateur.Cliquer("#lien-classement-produits")
tableauTop10 = Tableau.Extraire(Navigateur.ObtenirElement("#tableau-produits"))

Navigateur.Cliquer("#lien-trafic")
visiteursUniques = Navigateur.LireTexte("#element-uv")
pagesVues = Navigateur.LireTexte("#element-pv")
tauxRebond = Navigateur.LireTexte("#element-rebond")

donneesBrutes = {
    "date": DateTime.Aujourdhui("yyyy-MM-dd"),
    "ca": chiffreAffaires,
    "nbCommandes": nombreCommandes,
    "panierMoyen": panierMoyen,
    "tauxConversion": tauxConversion,
    "uv": visiteursUniques,
    "pv": pagesVues,
    "tauxRebond": tauxRebond
}
Excel.Enregistrer(donneesBrutes, "donnees_ventes_brutes.xlsx")
Excel.Enregistrer(tableauTop10, "top10_produits.xlsx")

La clé est d'ajouter une attente intelligente après chaque navigation pour s'assurer que les données sont complètement chargées avant de les lire.

Étape 2 : Nettoyage et calcul des indicateurs

Les données brutes sont nettoyées pour standardiser les types numériques, puis les calculs de variation par rapport au jour précédent sont effectués.

# Pseudo-code pour le nettoyage et le calcul
donneesBrutes = Excel.Lire("donnees_ventes_brutes.xlsx")
donneesHier = BaseDonnees.Executer("SELECT * FROM rapports_ventes WHERE date = ?", DateTime.Hier())

Fonction NettoyerDonnees(donnees)
    donnees.ca = Nombre.Parser(donnees.ca.Remplacer("¥", "").Remplacer(",", ""))
    donnees.nbCommandes = Nombre.Parser(donnees.nbCommandes)
    donnees.panierMoyen = Nombre.Parser(donnees.panierMoyen.Remplacer("¥", ""))
    donnees.tauxConversion = Nombre.Parser(donnees.tauxConversion.Remplacer("%", "")) / 100
    donnees.uv = Nombre.Parser(donnees.uv)
    donnees.pv = Nombre.Parser(donnees.pv)
    donnees.tauxRebond = Nombre.Parser(donnees.tauxRebond.Remplacer("%", "")) / 100

    donnees.ratioConversionPages = donnees.pv / donnees.uv
    donnees.prixUnitaireMoyen = donnees.ca / donnees.nbCommandes
    Retourner donnees
Fin Fonction

donneesAujourdhui = NettoyerDonnees(donneesBrutes)

Fonction CalculerVariations(aujourdhui, hier)
    variations = {}
    Si hier EstPas Null Alors
        variations.ca = (aujourdhui.ca - hier.ca) / hier.ca
        variations.commandes = (aujourdhui.nbCommandes - hier.nbCommandes) / hier.nbCommandes
        variations.conversion = (aujourdhui.tauxConversion - hier.tauxConversion) / hier.tauxConversion
        variations.uv = (aujourdhui.uv - hier.uv) / hier.uv
    Sinon
        variations.ca, variations.commandes, variations.conversion, variations.uv = 0, 0, 0, 0
    Fin Si
    Retourner variations
Fin Fonction

variations = CalculerVariations(donneesAujourdhui, donneesHier)

donneesCompletes = FusionnerDictionnaires(donneesAujourdhui, variations)
Excel.Enregistrer(donneesCompletes, "donnees_nettoyees.xlsx")

Étape 3 : Génération du rapport Excel

Un classeur structuré est créé avec plusieurs feuilles :

# Pseudo-code pour générer le rapport
Fonction GenererRapport(donnees, top10)
    Classeur = Excel.CreerClasseur("rapport_ventes_quotidien.xlsx")

    Excel.RenommerFeuille("Feuil1", "Synthese")
    Excel.EcrireCellule("A1", "Rapport de ventes Xiaohongshu - " & donnees.date)
    Excel.EcrireCellule("A3", "Indicateurs principaux")

    indicateurs = [
        ["Indicateur", "Valeur", "Variation", "Statut"],
        ["CA", FormatArgent(donnees.ca), FormatPourcentage(donnees.ca), ObtenirIcone(donnees.ca)],
        ["Commandes", FormatNombre(donnees.nbCommandes), FormatPourcentage(donnees.commandes), ObtenirIcone(donnees.commandes)],
        ["Panier moyen", FormatArgent(donnees.panierMoyen), "-", "➡️"],
        ["Taux conversion", FormatPourcentage(donnees.tauxConversion), FormatPourcentage(donnees.conversion), ObtenirIcone(donnees.conversion)],
        ["UV", FormatNombre(donnees.uv), FormatPourcentage(donnees.uv), ObtenirIcone(donnees.uv)]
    ]
    Excel.EcrirePlage("A4", indicateurs)

    Excel.AjouterFeuille("AnalyseProduits")
    Excel.EcrirePlage("A1", top10)

    Excel.AjouterFeuille("Tendances")
    tendances7Jours = BaseDonnees.Executer("SELECT * FROM rapports_ventes WHERE date >= ?", DateTime.Aujourdhui().AjouterJours(-7))
    Excel.EcrirePlage("A1", tendances7Jours)

    Excel.AjouterFeuille("Insights")
    insights = GenererInsights(donnees, top10, tendances7Jours)
    Excel.EcrirePlage("A1", insights)

    FormaterRapport()
    Excel.Sauvegarder()
    Log.Succes("Rapport généré avec succès !")
Fin Fonction

Fonction ObtenirIcone(variation)
    Si variation > 0.05 Alors Retourner "🟢"
    Si variation > 0 Alors Retourner "🟡"
    Si variation < -0.05 Alors Retourner "🔴"
    Retourner "🟠"
Fin Fonction

Fonction GenererInsights(donnees, top10, tendances)
    liste = []
    Si donnees.ca < -0.1 Alors liste.Ajouter("⚠️ Baisse du CA, vérifier le trafic et la conversion.")
    Si donnees.tauxConversion < 0.02 Alors liste.Ajouter("⚠️ Taux de conversion faible, optimiser les fiches produits.")
    Si donnees.tauxRebond > 0.6 Alors liste.Ajouter("⚠️ Taux de rebond élevé, améliorer l'expérience utilisateur.")
    Si top10.Count > 0 Alors
        partTop3 = top10.Prendre(3).Somme(article => article.ca) / donnees.ca
        Si partTop3 > 0.7 Alors liste.Ajouter("💡 Forte dépendance au top 3, renforcer les produits intermédiaires.")
    Fin Si
    Si tendances.Count >= 7 Alors
        tendance = AnalyserTendance(tendances)
        Si tendance == "Baisse" Alors liste.Ajouter("📉 Tendance à la baisse, planifier des actions correctives.")
        Sinon Si tendance == "Hausse" Alors liste.Ajouter("📈 Bonne performance, maintenir le rythme.")
    Fin Si
    Retourner liste
Fin Fonction

Étape 4 : Distribution automatique

Le rapport est envoyé par email, via un webhook interne, et sauvegardé en base de données.

# Pseudo-code pour la distribution
Fonction DistribuerRapport(cheminRapport)
    contenuEmail = "Bonjour,\n\nLe rapport de ventes quotidien est disponible en pièce jointe.\nIndicateurs clés :\n- CA : " & donnees.ca & "\n- Commandes : " & donnees.nbCommandes & "\n- Taux de conversion : " & FormatPourcentage(donnees.tauxConversion)

    Email.Envoyer(
        a: ["manager@societe.fr", "ops@societe.fr"],
        sujet: "Rapport de ventes Xiaohongshu - " & donnees.date,
        corps: contenuEmail,
        piecesJointes: [cheminRapport]
    )

    messageInterne = {
        "msgtype": "markdown",
        "markdown": {
            "title": "Rapport de ventes",
            "text": "### 📊 Rapport ventes " & donnees.date & "\n**CA**: " & FormatArgent(donnees.ca) & " (" & ObtenirIcone(donnees.ca) & " " & FormatPourcentage(donnees.ca) & ")\n**Commandes**: " & FormatNombre(donnees.nbCommandes) & "\n[Voir le rapport complet](chemin_fichier_interne)"
        }
    }
    HTTP.Poster(Config.Lire("webhook_interne"), json=messageInterne)

    BaseDonnees.Inserer("rapports_ventes", donnees)
    Log.Succes("Rapport distribué avec succès !")
Fin Fonction

Le workflow RPA ainsi implémenté permet de réduire le temps de production du rapport de 2 heures à environ 3 minutes, avec une exactitude de 100% sur les calculs. L'étape suivante consisterait à intégrer un modèle de langage pour générer automatiquement des analyses causales et des prévisions.

Étiquettes: rpa Yindao Xiaohongshu rapport de ventes automatisation de données

Publié le 26 juillet à 13h05