> ## Documentation Index
> Fetch the complete documentation index at: https://docs.taliuphq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Catalog Builder

> Créez le menu ou le catalogue d'un marchand à partir d'un chiffrier ou de votre assistant IA, révisez chaque ligne, puis publiez-le dans son compte en une seule étape.

**Catalog Builder** transforme le menu existant d'un marchand en catalogue Taliup. Vous fournissez une source — un chiffrier Taliup rempli, ou une photo ou un PDF de menu remis à votre assistant IA — et l'outil produit une **ébauche** que vous révisez ligne par ligne avant que quoi que ce soit ne soit écrit dans le compte du marchand.

Rien n'atteint le catalogue actif du marchand tant que vous n'avez pas cliqué sur **Commit**.

<Frame caption="La page Catalog Builder avec la carte du connecteur IA, la carte de téléversement du gabarit et la liste des constructions récentes.">
  <img src="https://mintlify.s3.us-west-1.amazonaws.com/taliup/images/taliup-hq/catalog-builder/index.png" alt="Page Catalog Builder de Taliup HQ avec une carte connecteur à gauche, une carte de téléversement de chiffrier à droite et une liste Recent builds en dessous" />
</Frame>

## Comment y accéder

**Entities** → ouvrez un marchand → onglet **Catalog Builder**.

## Accès

| Exigence | Détail                                                                |
| -------- | --------------------------------------------------------------------- |
| Rôle     | Tout rôle ayant accès à l'administration Taliup HQ                    |
| Portée   | Le marchand doit appartenir à votre ISO ou à un ISO descendant        |
| Fonction | La fonction **Catalog** doit être activée dans le forfait du marchand |

Si le marchand est hors de votre portée ou n'a pas la fonction Catalog, l'onglet vous ramène à **Entities** avec une explication.

## Les deux façons de démarrer

<CardGroup cols={2}>
  <Card title="Depuis votre assistant IA" icon="robot" href="/fr-CA/taliup-hq/admin/catalog-builder-connector">
    Déposez une photo de menu, un PDF ou un chiffrier non standard dans Claude et demandez-lui de construire le menu. Idéal pour les marchands qui remettent un menu imprimé ou photographié.
  </Card>

  <Card title="Depuis le gabarit Taliup" icon="file-excel">
    Remplissez le chiffrier de produits Taliup et téléversez-le ici. Idéal lorsque le marchand a déjà des données propres.
  </Card>
</CardGroup>

Les deux chemins produisent la même ébauche et utilisent le même écran de révision.

### Téléverser le gabarit Taliup

<Steps>
  <Step title="Téléchargez le gabarit">
    Cliquez sur **Download template** pour obtenir `BulkUploadTemplate.xlsx`. Il contient une feuille **Guidelines** ainsi que les feuilles **Products**, **Attributes** et **Tags**.
  </Step>

  <Step title="Remplissez-le">
    Complétez les feuilles. La référence des colonnes est la même que celle des marchands — voir [Bulk Import](/fr-CA/taliup-hq/merchant/catalogs/bulk-import).
  </Step>

  <Step title="Téléversez">
    Glissez le fichier sur la carte de téléversement ou cliquez sur **Choose Excel file**. Nommez la construction pour la reconnaître plus tard, puis cliquez sur **Create draft**.
  </Step>

  <Step title="Attendez l'ébauche">
    Le fichier est lu en arrière-plan. La construction passe à **Ready for review** et ouvre l'écran de révision.
  </Step>
</Steps>

<Note>
  Seul le gabarit Taliup est accepté à ce téléversement. Pour un menu sous toute autre forme — une photo, un PDF, l'export d'un concurrent — utilisez plutôt le [connecteur IA](/fr-CA/taliup-hq/admin/catalog-builder-connector).
</Note>

#### Limites de taille

La carte de téléversement affiche les deux limites : **20 Mo** et **2 000 articles**. Le classeur est compté avant d'être stocké, donc un fichier trop gros est refusé immédiatement plutôt que d'échouer plus tard dans la file.

| Refusé                                    | Pourquoi                                                                                                    |
| ----------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| Plus de 2 000 lignes de produits          | L'écran de révision charge toute l'ébauche d'un coup : un catalogue de cette taille ne peut pas être révisé |
| Plus de 20 Mo, ou pas un `.xlsx` / `.xls` | Ce n'est pas un téléversement de gabarit Taliup                                                             |
| Aucune ligne de produit                   | Rien à construire                                                                                           |

<Tip>
  Un catalogue de plus de 2 000 articles relève de [Bulk Import](/fr-CA/taliup-hq/merchant/catalogs/bulk-import) : le traitement se fait par lots, survit à un redémarrage, et vous rend un fichier des seules lignes en échec. Catalog Builder sert aux menus que vous comptez relire ligne par ligne.
</Tip>

## Statuts de construction

| Statut                    | Signification                                                                   |
| ------------------------- | ------------------------------------------------------------------------------- |
| **Uploaded** / **Staged** | La source est arrivée et est en file d'attente                                  |
| **Reading source**        | Le chiffrier est lu et comparé aux enregistrements existants du marchand        |
| **Ready for review**      | L'ébauche vous attend                                                           |
| **Committing**            | Les enregistrements sont écrits dans le catalogue du marchand                   |
| **Committed**             | Terminé                                                                         |
| **Failed**                | La source n'a pas pu être lue — la raison est affichée sur la construction      |
| **Cancelled**             | Vous avez annulé la construction, ou elle est restée 30 jours sans être touchée |

## Réviser l'ébauche

L'écran de révision est l'endroit où tout se joue. Il montre l'ensemble du catalogue proposé et vous permet de tout corriger avant la publication.

<Frame caption="L'écran de révision de Catalog Builder avec la bannière de validation, les onglets et l'arborescence des catégories et articles.">
  <img src="https://mintlify.s3.us-west-1.amazonaws.com/taliup/images/taliup-hq/catalog-builder/review.png" alt="Écran de révision Catalog Builder montrant une bannière de validation, les onglets Menu / Attributes / Taxes / Tags / Units et une arborescence déplaçable de catégories contenant des articles" />
</Frame>

### Onglets

| Onglet         | Contenu                                                                           |
| -------------- | --------------------------------------------------------------------------------- |
| **Menu**       | Les catalogues, leurs catégories et les articles de chacune                       |
| **Attributes** | Les groupes d'options comme Size ou Add-ons, avec leurs valeurs et écarts de prix |
| **Taxes**      | Les taxes trouvées dans la source                                                 |
| **Tags**       | Les étiquettes de produits trouvées dans la source                                |
| **Units**      | Les unités de mesure, utilisées par les articles vendus au poids                  |

### Décider du sort de chaque ligne

Chaque ligne — article, catégorie, attribut, taxe et étiquette — porte une action.

| Action              | Effet à la publication                                         |
| ------------------- | -------------------------------------------------------------- |
| **Create new**      | Ajoute un nouvel enregistrement au catalogue du marchand       |
| **Link existing**   | Utilise l'enregistrement existant du marchand sans le modifier |
| **Update existing** | Applique les valeurs de l'ébauche à l'enregistrement existant  |
| **Skip**            | Ignore complètement la ligne                                   |

Catalog Builder compare chaque ligne à ce que le marchand possède déjà et suggère une correspondance. Une pastille de couleur à côté de l'action indique le niveau de confiance.

| Pastille | Confiance     | Action par défaut                                       |
| -------- | ------------- | ------------------------------------------------------- |
| Verte    | 95 % et plus  | Passe automatiquement à **Link existing**               |
| Ambre    | 80 % à 94 %   | Reste à **Create new**, avec la correspondance proposée |
| Aucune   | Moins de 80 % | Reste à **Create new**                                  |

Cliquez sur la pastille pour ouvrir le sélecteur, chercher vous-même dans le catalogue du marchand et choisir un autre enregistrement. Une correspondance choisie à la main est verrouillée et ne sera pas remplacée par un appariement ultérieur.

<Warning>
  **Update existing** modifie les données actives du marchand. L'action ne touche que les champs réellement portés par l'ébauche, et ajoute les attributs, les taxes et les images plutôt que de les remplacer — mais le nom, la description et le prix seront écrasés. Utilisez **Link existing** si vous voulez seulement réutiliser un enregistrement.
</Warning>

<Note>
  Cela compte pour les photos. **Link existing** n'écrit rien du tout : une image portée par l'ébauche est donc abandonnée — la ligne vous avertit lorsque c'est le cas. **Update existing** ajoute la photo à un article qui n'en a pas, et laisse intacte une photo existante à moins que vous ne saisissiez vous-même l'URL de l'image dans l'écran de révision.

  Réimporter un menu que le marchand possède déjà produit surtout des lignes link et update : c'est donc le cas courant quand on ajoute des photos à un catalogue construit plus tôt.
</Note>

### Modifier les articles

Cliquez sur un article pour ouvrir son éditeur. Vous pouvez changer le nom, la description, le prix, le SKU, le coût, le fournisseur, la majoration, le type, les taxes, l'étiquette, les attributs et l'image.

* Activez **Custom price** pour les articles à prix du marché. Le champ de prix se vide et l'article est vendu à un prix saisi sur le PDV.
* Le **fournisseur** est créé pour le marchand si le nom est nouveau. La **majoration (%)** est calculée à partir du coût et du prix si vous la laissez vide.
* **Image** accepte soit une adresse web, soit un fichier de votre propre poste — voir plus bas.
* **Sold by weight** exige une unité kg, g, lb ou oz, et ne peut pas être combiné au prix personnalisé.
* Passer un article à **Service** révèle les champs de durée et de réservation.

Glissez la poignée d'une catégorie pour réordonner les sections. Glissez un article d'une catégorie à l'autre pour le déplacer. L'ordre que vous établissez est celui que voit le marchand.

#### Photos des articles

Collez une adresse web dans **Image** et Taliup télécharge la photo et la stocke sur son propre stockage — le catalogue du marchand ne pointe jamais vers le site de quelqu'un d'autre, et n'est donc pas touché si celui-ci disparaît. Les photos sont stockées à 1 200 pixels de large au maximum.

Certains sites refusent de servir leurs images aux serveurs de Taliup même si elles s'affichent parfaitement dans votre navigateur. Wix en fait partie. Le cas échéant, cliquez sur **Upload a file instead** et choisissez la photo sur votre poste : votre navigateur peut récupérer ce que le serveur ne peut pas, et le fichier aboutit exactement au même endroit.

<Note>
  Le sommaire de publication compte les photos séparément des enregistrements, et indique lesquelles ont été téléchargées, lesquelles vous avez téléversées, quels articles ont conservé une photo existante, et lesquelles n'ont pas pu être récupérées parce que le site hôte a refusé Taliup. Les photos arrivent une minute environ après la publication — rechargez le produit pour les voir.
</Note>

### Corriger les problèmes avant de publier

La bannière du haut compte deux types de problème.

| Type               | Effet                                                                                                                                                           |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Erreurs**        | Bloquent la publication. Une ligne en erreur affiche une pastille rouge — survolez-la pour voir pourquoi.                                                       |
| **Avertissements** | Ne bloquent pas. Ils signalent des points à vérifier, comme un doublon possible ou un article qui générerait un très grand nombre de combinaisons d'inventaire. |

Les erreurs fréquentes sont un prix manquant sur un article qui n'est pas à prix personnalisé, un attribut sans valeur, et une ligne réglée à **Link existing** sans enregistrement choisi.

#### Articles sans prix

Une source qui ne donne aucun prix — une photo de menu dont la colonne est coupée, par exemple — produit un article à **prix personnalisé**, ce qui oblige la caissière à saisir le prix à chaque vente. C'est une décision prise à votre place : la ligne porte donc un avertissement qui le dit.

Pour le retirer, au choix :

* saisissez le prix, ou
* confirmez que l'article se facture bel et bien à la caisse, en cochant **Custom price** sur l'article ou avec l'action groupée **Mark as custom price**.

Un article dont la source indique « prix du marché » est à prix personnalisé délibérément et n'avertit pas. Un prix de **0** est un article gratuit, pas un prix manquant, et n'avertit pas non plus.

Utilisez **Only rows with issues** pour filtrer l'arborescence et ne garder que les lignes à traiter.

### Actions groupées

Cochez des articles pour faire apparaître la barre d'actions groupées : passez-les tous à **Link existing** ou **Create new**, ajoutez une taxe, déplacez-les vers une autre catégorie, passez-les en prix personnalisé ou ignorez-les. Le menu à côté de **Commit** applique **Link all confident matches** ou **Create all as new** à toute l'ébauche.

**Mark as custom price** est le moyen rapide d'accepter toute une section réellement facturée à la caisse. L'action vide le prix de chaque article, désactive **Sold by weight**, et lève l'avertissement de prix manquant sur chaque ligne touchée.

### Enregistrement

Les modifications s'enregistrent automatiquement quelques secondes après que vous cessez de taper, et **Save draft** force l'enregistrement. L'indicateur à côté du bouton montre l'état actuel.

<Note>
  Si quelqu'un d'autre enregistre la même ébauche pendant que vous l'avez ouverte — un autre administrateur, ou votre assistant IA qui met à jour — vous serez averti que l'ébauche a changé et invité à recharger. Recharger abandonne vos modifications non enregistrées : enregistrez tôt.
</Note>

## Publier

Quand le nombre d'erreurs est à zéro et que tout est enregistré, cliquez sur **Commit to catalog**. Une confirmation détaille exactement combien d'enregistrements seront créés, liés, mis à jour et ignorés.

<Frame caption="La confirmation de publication avec la répartition des créations, liens, mises à jour et exclusions par type d'enregistrement.">
  <img src="https://mintlify.s3.us-west-1.amazonaws.com/taliup/images/taliup-hq/catalog-builder/commit.png" alt="Boîte de dialogue de confirmation avec un tableau Catalogs, Categories, Items, Attributes, Taxes et Tags croisé avec Create, Link, Update et Skip" />
</Frame>

<Warning>
  Si l'ébauche met à jour un catalogue déjà assigné à des terminaux PDV, la confirmation nomme le catalogue et le nombre de terminaux, et vous devez cocher une case pour continuer. Ces appareils reçoivent le changement dès la publication. Pour l'éviter, laissez la ligne du catalogue à **Create new** afin que la construction aboutisse dans un nouveau catalogue.
</Warning>

Les enregistrements sont écrits en arrière-plan. À la fin, vous obtenez un sommaire de ce qui a été créé, lié, mis à jour et ignoré.

### Si certaines lignes échouent

La construction revient à **Ready for review** avec les échecs indiqués sur les lignes fautives. Corrigez ces lignes et publiez de nouveau — les lignes déjà réussies sont ignorées, donc rien n'est dupliqué.

## Constructions récentes

La liste de la page Catalog Builder montre les 25 dernières constructions du marchand avec leur statut, la source, qui les a lancées et les décomptes. Ouvrez une construction pour voir son ébauche ou son sommaire de publication. Les constructions en cours se rafraîchissent d'elles-mêmes.

Annulez depuis la liste une construction dont vous ne voulez plus. L'annulation abandonne l'ébauche.

<Note>
  Les constructions terminées conservent leur ébauche 7 jours puis sont effacées, et le chiffrier téléversé est supprimé dès la publication. Une construction laissée en révision 30 jours est annulée automatiquement.
</Note>

## Configuration initiale

<Info>
  Cette section s'adresse à qui déploie Taliup HQ. Les administrateurs qui utilisent la fonction n'en ont pas besoin.
</Info>

Catalog Builder fonctionne dès que la version est déployée et que les migrations ont été exécutées. Le connecteur IA est désactivé par défaut et exige trois choses.

<Steps>
  <Step title="Exécutez les migrations">
    `php artisan migrate` crée la table de suivi des constructions et les tables OAuth du connecteur.
  </Step>

  <Step title="Générez les clés OAuth">
    `php artisan passport:keys` sur chaque environnement. Les clés ne sont pas conservées dans le dépôt.
  </Step>

  <Step title="Activez le connecteur">
    Réglez `CATALOG_BUILDER_MCP_ENABLED` à vrai, et listez les clients IA autorisés dans `MCP_REDIRECT_DOMAINS`. Laisser l'indicateur désactivé masque la carte du connecteur et désactive ses points d'accès.
  </Step>
</Steps>

Pour que le connecteur puisse lire le menu d'un marchand **depuis son site web**, listez les domaines qu'il peut récupérer dans `MENU_FETCH_ALLOWED_DOMAINS`, séparés par des virgules. La liste est vide par défaut, ce qui désactive la fonction. Un domaine couvre ses sous-domaines : `exemple.com` autorise donc aussi `www.exemple.com` et `commande.exemple.com`.

<Warning>
  N'autorisez jamais une plateforme de livraison comme Uber Eats, DoorDash ou SkipTheDishes. Les prix affichés incluent la commission et sont tout simplement les mauvais prix pour un catalogue PDV, indépendamment de leurs conditions d'utilisation.
</Warning>

Les photos d'articles importées sont stockées à 1 200 pixels de large au maximum (`CATALOG_BUILDER_IMAGE_MAX_WIDTH`), et une photo téléversée dans l'écran de révision peut atteindre 10 Mo (`CATALOG_BUILDER_IMAGE_UPLOAD_MAX_MB`).

Le traitement en arrière-plan — y compris la récupération des photos d'articles — utilise une file dédiée `catalog-builder`, que le worker doit inclure :

```bash theme={null}
php artisan queue:work --queue=catalog-builder,default
```

<Warning>
  Donnez à Catalog Builder son propre worker plutôt que de compter sur la file `default`. Lorsque plusieurs sites partagent une base de données, tous leurs workers interrogent `default`, et un déploiement qui n'a pas les classes de tâche de cette version en prendra une et la fera échouer aussitôt. Rien n'apparaît dans le journal de cette application, puisque rien n'y a été exécuté : regardez dans `failed_jobs`, où la trace nomme le site qui l'a prise.
</Warning>

Une tâche planifiée, `catalog-builder:prune`, efface les vieilles ébauches, expire les révisions abandonnées et supprime les photos téléversées pendant la révision qui n'ont jamais été publiées. Elle s'exécute quotidiennement avec le planificateur normal.

### Quand les photos n'arrivent pas

Les photos sont récupérées après l'écriture des enregistrements : plusieurs causes distinctes peuvent donc en bloquer une sans bloquer la construction. Deux scripts en lecture seule, à la racine de l'application, y répondent dans l'ordre plutôt qu'au jugé :

```bash theme={null}
php artisan tinker --execute="require 'catalog-builder-image-diagnostic.php';"
```

Indique si le code déployé est à jour, quels étaient les compteurs de photos de la dernière publication, à quoi ressemblent les lignes de l'ébauche, si les tâches ont été mises en file ou ont échoué, et combien d'enregistrements média ont abouti.

```bash theme={null}
php artisan tinker --execute="require 'catalog-builder-image-probe.php';"
```

Fait passer une photo par chaque étape de la tâche — environnement, recherche du produit, téléchargement, redimensionnement — et affiche le résultat de chacune.

```bash theme={null}
php artisan tinker --execute="require 'catalog-builder-egress-probe.php';"
```

Récupère plusieurs hôtes avec plusieurs jeux d'en-têtes, pour distinguer un site qui refuse ce serveur d'un serveur incapable d'atteindre Internet.

<Note>
  Une photo qui ne peut pas être téléchargée laisse une tâche en échec et un avertissement dans le journal, avec l'URL et la raison. Ce n'est pas silencieux.
</Note>

## Voir aussi

* [Connecteur IA](/fr-CA/taliup-hq/admin/catalog-builder-connector)
* [Bulk Import](/fr-CA/taliup-hq/merchant/catalogs/bulk-import)
* [Catalogues](/fr-CA/taliup-hq/merchant/catalogs/index)
* [Entités](/fr-CA/taliup-hq/admin/entities)
