{
  "format": 1,
  "key": "analyse-avis",
  "label": "Analyse d'avis clients",
  "summary": "Collectez les avis, laissez l'IA en tirer le sentiment, les thèmes, l'urgence et un brouillon de réponse.",
  "description": "Pour un commerce, un restaurant ou une marque : les avis arrivent d'un formulaire public ou d'un import, et l'IA lit chacun d'eux. Elle classe le sentiment, repère le thème principal, signale ceux qui demandent une réponse rapide, extrait la suggestion du client et rédige une réponse à relire. Les produits cumulent leur note moyenne et leur nombre d'avis ; un tableau de bord suit la satisfaction.",
  "category": "Relation client",
  "icon": "message-square",
  "color": "#ec4899",
  "tags": [
    "IA",
    "Formulaire",
    "Tableau de bord"
  ],
  "base": {
    "label": "Avis clients",
    "description": "Les avis des clients, lus et classés par l'IA, pour savoir ce qui plaît et ce qui fâche."
  },
  "tables": [
    {
      "key": "avis",
      "label": "Avis",
      "description": "Un avis par ligne, d'où qu'il vienne.",
      "icon": "message-square",
      "color": "#ec4899",
      "fields": [
        {
          "label": "Auteur",
          "kind": "short_text",
          "required": true
        },
        {
          "label": "Avis",
          "kind": "long_text",
          "description": "Le texte du client, tel quel."
        },
        {
          "label": "Note",
          "kind": "number",
          "format": {
            "display": "rating",
            "rating_max": 5
          }
        },
        {
          "label": "Source",
          "kind": "select",
          "options": [
            {
              "label": "Site web",
              "value": "site_web",
              "color": "#94a3b8",
              "icon": null
            },
            {
              "label": "Google",
              "value": "google",
              "color": "#3b82f6",
              "icon": null
            },
            {
              "label": "Formulaire",
              "value": "formulaire",
              "color": "#f59e0b",
              "icon": null
            },
            {
              "label": "E-mail",
              "value": "e_mail",
              "color": "#10b981",
              "icon": null
            },
            {
              "label": "En boutique",
              "value": "en_boutique",
              "color": "#ef4444",
              "icon": null
            }
          ]
        },
        {
          "label": "Reçu le",
          "kind": "date"
        },
        {
          "label": "Sentiment",
          "kind": "select",
          "options": [
            {
              "label": "Très positif",
              "value": "tres_positif",
              "color": "#059669",
              "icon": "laugh"
            },
            {
              "label": "Positif",
              "value": "positif",
              "color": "#10b981",
              "icon": "smile"
            },
            {
              "label": "Mitigé",
              "value": "mitige",
              "color": "#f59e0b",
              "icon": "meh"
            },
            {
              "label": "Négatif",
              "value": "negatif",
              "color": "#ef4444",
              "icon": "frown"
            },
            {
              "label": "Très négatif",
              "value": "tres_negatif",
              "color": "#b91c1c",
              "icon": "angry"
            }
          ],
          "ai": {
            "prompt": "Voici un avis client, noté {{Note}}/5 :\n« {{Avis}} »\nQuel est son sentiment global ?",
            "refresh": "if_empty"
          }
        },
        {
          "label": "Thème",
          "kind": "select",
          "options": [
            {
              "label": "Qualité du produit",
              "value": "qualite_du_produit",
              "color": "#94a3b8",
              "icon": null
            },
            {
              "label": "Prix",
              "value": "prix",
              "color": "#3b82f6",
              "icon": null
            },
            {
              "label": "Livraison",
              "value": "livraison",
              "color": "#f59e0b",
              "icon": null
            },
            {
              "label": "Service client",
              "value": "service_client",
              "color": "#10b981",
              "icon": null
            },
            {
              "label": "Site et commande",
              "value": "site_et_commande",
              "color": "#ef4444",
              "icon": null
            },
            {
              "label": "Autre",
              "value": "autre",
              "color": "#8b5cf6",
              "icon": null
            }
          ],
          "ai": {
            "prompt": "Quel est le sujet principal de cet avis client ?\n« {{Avis}} »",
            "refresh": "if_empty"
          }
        },
        {
          "label": "Réponse urgente",
          "kind": "boolean",
          "ai": {
            "prompt": "Cet avis demande-t-il une réponse rapide de l'entreprise (client en colère, problème non résolu, risque de mauvaise publicité, question posée) ?\n« {{Avis}} » ({{Note}}/5)",
            "refresh": "if_empty"
          }
        },
        {
          "label": "Suggestion du client",
          "kind": "short_text",
          "ai": {
            "prompt": "Si ce client suggère une amélioration concrète, résume-la en 12 mots au plus ; sinon réponds par une chaîne vide.\n« {{Avis}} »",
            "refresh": "if_empty"
          }
        },
        {
          "label": "Réponse proposée",
          "kind": "long_text",
          "ai": {
            "prompt": "Rédige une réponse publique à cet avis, en trois phrases au plus : remercie, réponds précisément à ce que dit le client, propose une solution s'il y a un problème. Ton chaleureux et professionnel, vouvoiement, sans formule creuse.\nAvis de {{Auteur}} ({{Note}}/5) : « {{Avis}} »",
            "refresh": "if_empty"
          }
        },
        {
          "label": "Traité",
          "kind": "boolean",
          "description": "Coché quand la réponse a été publiée."
        }
      ]
    },
    {
      "key": "produits",
      "label": "Produits",
      "description": "Ce sur quoi portent les avis.",
      "icon": "package",
      "color": "#8b5cf6",
      "fields": [
        {
          "label": "Nom",
          "kind": "short_text",
          "required": true
        },
        {
          "label": "Gamme",
          "kind": "select",
          "options": [
            {
              "label": "Cafés",
              "value": "cafes",
              "color": "#94a3b8",
              "icon": null
            },
            {
              "label": "Thés",
              "value": "thes",
              "color": "#3b82f6",
              "icon": null
            },
            {
              "label": "Accessoires",
              "value": "accessoires",
              "color": "#f59e0b",
              "icon": null
            }
          ]
        },
        {
          "label": "Prix",
          "kind": "number",
          "format": {
            "display": "currency",
            "currency": "EUR"
          }
        },
        {
          "label": "Avis",
          "kind": "count",
          "rollup": {
            "via": "Produit",
            "table": "avis"
          }
        },
        {
          "label": "Note moyenne",
          "kind": "rollup",
          "rollup": {
            "via": "Produit",
            "table": "avis",
            "target": "Note",
            "aggregate": "avg"
          }
        },
        {
          "label": "Note la plus basse",
          "kind": "rollup",
          "rollup": {
            "via": "Produit",
            "table": "avis",
            "target": "Note",
            "aggregate": "min"
          }
        }
      ]
    }
  ],
  "links": [
    {
      "from": "avis",
      "label": "Produit",
      "to": "produits",
      "multiple": false
    }
  ],
  "rows": {
    "produits": [
      {
        "$key": "ethiopie",
        "Nom": "Café d'Éthiopie Yirgacheffe",
        "Gamme": "Cafés",
        "Prix": 14.9
      },
      {
        "$key": "espresso",
        "Nom": "Mélange Espresso Maison",
        "Gamme": "Cafés",
        "Prix": 11.5
      },
      {
        "$key": "sencha",
        "Nom": "Thé vert Sencha",
        "Gamme": "Thés",
        "Prix": 9.8
      },
      {
        "$key": "moulin",
        "Nom": "Moulin à café manuel",
        "Gamme": "Accessoires",
        "Prix": 49
      }
    ],
    "avis": [
      {
        "Auteur": "Camille R.",
        "Avis": "Un café incroyable, des notes de fruits rouges et de fleurs. Livré en deux jours dans un emballage soigné. Je recommande sans hésiter !",
        "Note": 5,
        "Source": "Site web",
        "Reçu le": "-12d",
        "Produit": "@ethiopie",
        "Sentiment": "Très positif",
        "Thème": "Qualité du produit",
        "Réponse urgente": false,
        "Traité": true
      },
      {
        "Auteur": "Marc D.",
        "Avis": "Colis arrivé avec une semaine de retard et aucune réponse du service client à mes deux e-mails. Le café est bon mais l'expérience est décevante.",
        "Note": 2,
        "Source": "Google",
        "Reçu le": "-3d",
        "Produit": "@espresso",
        "Sentiment": "Négatif",
        "Thème": "Livraison",
        "Réponse urgente": true,
        "Suggestion du client": "Répondre aux e-mails et prévenir en cas de retard",
        "Traité": false
      },
      {
        "Auteur": "Inès B.",
        "Avis": "Le moulin est joli mais la mouture n'est pas régulière, impossible d'obtenir une mouture fine pour l'espresso. Assez cher pour ce résultat.",
        "Note": 2,
        "Source": "Site web",
        "Reçu le": "-6d",
        "Produit": "@moulin",
        "Sentiment": "Négatif",
        "Thème": "Qualité du produit",
        "Réponse urgente": true,
        "Suggestion du client": "Proposer un réglage de mouture plus fin",
        "Traité": false
      },
      {
        "Auteur": "Thomas L.",
        "Avis": "Bon thé, frais et parfumé. Dommage que le sachet ne soit pas refermable.",
        "Note": 4,
        "Source": "Formulaire",
        "Reçu le": "-9d",
        "Produit": "@sencha",
        "Sentiment": "Positif",
        "Thème": "Qualité du produit",
        "Réponse urgente": false,
        "Suggestion du client": "Un sachet refermable",
        "Traité": true
      },
      {
        "Auteur": "Aurélie P.",
        "Avis": "Le site plante à chaque fois que j'essaie de payer avec PayPal. J'ai fini par commander par téléphone. Vendeuse adorable au passage.",
        "Note": 3,
        "Source": "E-mail",
        "Reçu le": "-1d",
        "Produit": "@espresso",
        "Sentiment": "Mitigé",
        "Thème": "Site et commande",
        "Réponse urgente": true,
        "Suggestion du client": "Réparer le paiement PayPal",
        "Traité": false
      },
      {
        "Auteur": "Jean-Paul V.",
        "Avis": "Toujours aussi bon, j'en commande tous les mois depuis deux ans.",
        "Note": 5,
        "Source": "Site web",
        "Reçu le": "-20d",
        "Produit": "@espresso",
        "Sentiment": "Très positif",
        "Thème": "Qualité du produit",
        "Réponse urgente": false,
        "Traité": true
      },
      {
        "Auteur": "Léa M.",
        "Avis": "Un peu cher par rapport aux cafés de supermarché, mais la différence de goût est réelle.",
        "Note": 4,
        "Source": "En boutique",
        "Reçu le": "-15d",
        "Produit": "@ethiopie",
        "Sentiment": "Positif",
        "Thème": "Prix",
        "Réponse urgente": false,
        "Traité": true
      },
      {
        "Auteur": "Karim S.",
        "Avis": "Reçu un thé périmé depuis trois mois. Inadmissible, je veux un remboursement.",
        "Note": 1,
        "Source": "Google",
        "Reçu le": "today",
        "Produit": "@sencha",
        "Sentiment": "Très négatif",
        "Thème": "Qualité du produit",
        "Réponse urgente": true,
        "Suggestion du client": "Vérifier les dates avant expédition",
        "Traité": false
      }
    ]
  },
  "views": [
    {
      "table": "avis",
      "label": "À traiter",
      "kind": "grid",
      "spec": {
        "filter": "[Traité] eq false",
        "sorts": [
          {
            "field": "Reçu le",
            "direction": "desc"
          }
        ],
        "color_field": "Sentiment"
      }
    },
    {
      "table": "avis",
      "label": "Urgents",
      "kind": "list",
      "spec": {
        "filter": "[Réponse urgente] eq true and [Traité] eq false",
        "card_fields": [
          "Sentiment",
          "Thème",
          "Note",
          "Réponse proposée"
        ]
      }
    },
    {
      "table": "avis",
      "label": "Par sentiment",
      "kind": "kanban",
      "spec": {
        "group_by": "Sentiment",
        "card_fields": [
          "Note",
          "Thème",
          "Produit"
        ],
        "group_order": [
          "Très négatif",
          "Négatif",
          "Mitigé",
          "Positif",
          "Très positif"
        ]
      }
    },
    {
      "table": "avis",
      "label": "Par thème",
      "kind": "list",
      "spec": {
        "group_by": "Thème",
        "card_fields": [
          "Sentiment",
          "Note",
          "Suggestion du client"
        ]
      }
    },
    {
      "table": "avis",
      "label": "Laisser un avis",
      "kind": "form",
      "spec": {
        "title": "Votre avis compte",
        "description": "Dites-nous ce que vous avez pensé de votre commande.",
        "fields": [
          {
            "field": "Auteur",
            "required": true,
            "label": "Votre prénom et l'initiale de votre nom"
          },
          {
            "field": "Note",
            "required": true
          },
          {
            "field": "Avis",
            "required": true,
            "label": "Votre avis"
          }
        ],
        "submit_label": "Publier mon avis",
        "success_message": "Merci pour votre avis !"
      }
    },
    {
      "table": "produits",
      "label": "Catalogue",
      "kind": "gallery",
      "spec": {
        "card_fields": [
          "Gamme",
          "Prix",
          "Note moyenne",
          "Avis"
        ],
        "card_size": "medium"
      }
    }
  ],
  "dashboards": [
    {
      "label": "Satisfaction",
      "blocks": [
        {
          "kind": "number",
          "title": "Note moyenne",
          "width": 1,
          "table": "avis",
          "aggregate": "avg",
          "field": "Note",
          "filter": ""
        },
        {
          "kind": "number",
          "title": "Avis à traiter",
          "width": 1,
          "table": "avis",
          "aggregate": "count",
          "field": null,
          "filter": "[Traité] eq false"
        },
        {
          "kind": "number",
          "title": "Réponses urgentes",
          "width": 1,
          "table": "avis",
          "aggregate": "count",
          "field": null,
          "filter": "[Réponse urgente] eq true and [Traité] eq false"
        },
        {
          "kind": "chart",
          "title": "Sentiment",
          "width": 1,
          "table": "avis",
          "group_by": "Sentiment",
          "filter": "",
          "style": "pie"
        },
        {
          "kind": "chart",
          "title": "Thèmes abordés",
          "width": 2,
          "table": "avis",
          "group_by": "Thème",
          "filter": "",
          "style": "bar"
        },
        {
          "kind": "list",
          "title": "Derniers avis négatifs",
          "width": 3,
          "table": "avis",
          "fields": [
            "Auteur",
            "Note",
            "Thème"
          ],
          "filter": "[Note] lte 2",
          "sort": "-Reçu le",
          "limit": 5
        }
      ]
    }
  ],
  "automations": [
    {
      "label": "Alerte avis urgent",
      "description": "Prévient quand l'IA juge qu'un avis demande une réponse rapide.",
      "enabled": true,
      "trigger": {
        "kind": "record_updated",
        "table": "avis",
        "fields": [
          "Réponse urgente"
        ],
        "schedule": null
      },
      "condition": "[Réponse urgente] eq true",
      "actions": [
        {
          "kind": "notify",
          "users": [
            "$moi"
          ],
          "user_field": null,
          "message": "Avis urgent de {{Auteur}} ({{Note}}/5) : « {{Avis}} »"
        }
      ]
    }
  ]
}