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

# Ajouter des tags

> Ajoute des tags personnalisés à un ticket pour faciliter le tri, le routage et le reporting

export const ToolUsage = ({name, description, arguments: args = {}, response = {}}) => {
  const argsJson = JSON.stringify(args, null, 2);
  const responseJson = JSON.stringify(response, null, 2);
  return <div className="border border-zinc-200 dark:border-zinc-700 rounded-xl p-5 my-4 bg-white dark:bg-zinc-900/50">
      {}
      <div className="flex items-center gap-2 mb-1">
        <span className="font-mono font-semibold text-base text-blue-500 dark:text-blue-400">
          @{name}
        </span>
      </div>

      {}
      {description && <p className="text-zinc-500 dark:text-zinc-400 text-sm m-0 mb-4 leading-relaxed">
          {description}
        </p>}

      {}
      <div className="grid grid-cols-1 sm:grid-cols-2 gap-3">
        <div className="flex flex-col">
          <span className="text-xs font-medium text-zinc-400 dark:text-zinc-500 mb-1.5 uppercase tracking-wide">
            Arguments
          </span>
          <pre className="font-mono text-xs bg-zinc-50 dark:bg-zinc-800/70 p-3 rounded-lg m-0 overflow-x-auto flex-1 text-zinc-600 dark:text-zinc-300 border border-zinc-100 dark:border-zinc-700/50">
            {argsJson}
          </pre>
        </div>

        <div className="flex flex-col">
          <span className="text-xs font-medium text-zinc-400 dark:text-zinc-500 mb-1.5 uppercase tracking-wide">
            Response
          </span>
          <pre className="font-mono text-xs bg-zinc-50 dark:bg-zinc-800/70 p-3 rounded-lg m-0 overflow-x-auto flex-1 text-zinc-600 dark:text-zinc-300 border border-zinc-100 dark:border-zinc-700/50">
            {responseJson}
          </pre>
        </div>
      </div>
    </div>;
};

export const WorkflowExample = ({title, whenToUse, steps = []}) => {
  const parseToolMentions = text => {
    if (!text) return text;
    const parts = text.split(/(@[\w-]+)/g);
    return parts.map((part, i) => {
      if (part.startsWith("@")) {
        const toolName = part.slice(1);
        return <span key={i} className="text-blue-500 dark:text-blue-400 font-semibold bg-blue-50 dark:bg-blue-950/50 px-1.5 py-0.5 rounded text-[0.9em] whitespace-nowrap">
            @{toolName}
          </span>;
      }
      return part;
    });
  };
  return <div className="my-6 border-2 border-dashed border-zinc-300 dark:border-zinc-600 rounded-xl p-6">
      {}
      <h3 className="text-xl font-semibold text-zinc-900 dark:text-zinc-100 m-0 mb-5">
        {title}
      </h3>

      {}
      <div className="mb-6">
        <span className="text-sm font-medium text-zinc-500 dark:text-zinc-400 block mb-2">
          When to use
        </span>
        <div className="border border-zinc-200 dark:border-zinc-700 rounded-lg p-4 bg-zinc-50/50 dark:bg-zinc-800/30">
          <p className="m-0 text-zinc-700 dark:text-zinc-300 leading-relaxed">
            {whenToUse}
          </p>
        </div>
      </div>

      {}
      <div>
        <span className="text-sm font-semibold text-zinc-900 dark:text-zinc-100 block mb-4">
          Steps
        </span>
        <div className="flex flex-col gap-4">
          {steps && steps.map((step, index) => <div key={index} className="flex gap-3 items-start">
              <span className="flex items-center gap-1.5 flex-shrink-0 pt-0.5">
                <span className="text-blue-500 dark:text-blue-400 font-medium text-sm tabular-nums">
                  {index + 1}.
                </span>
              </span>
              <span className="text-zinc-700 dark:text-zinc-300 leading-relaxed">
                {parseToolMentions(step)}
              </span>
            </div>)}
        </div>
      </div>
    </div>;
};

## Ce que fait cet outil

Ajoute un ou plusieurs tags au ticket en cours. Utile pour :

* Marquer des infos contextuelles (client premium, livraison prévue aujourd'hui, commande en retard...)
* Orienter les tickets vers la bonne équipe avant escalade
* Faciliter le reporting et le suivi

## Utilisation dans un workflow

<ToolUsage name="add_tags_to_ticket" description="Ajoute des tags au ticket en cours" arguments={{ tags: ["remboursement", "prioritaire"] }} response={{ status: "success", tags_added: ["remboursement", "prioritaire"] }} />

## Paramètres

| Paramètre | Requis | Description                             |
| --------- | ------ | --------------------------------------- |
| `tags`    | Oui    | Liste de tags à ajouter. Minimum 1 tag. |

## Format des tags

Les tags doivent respecter ce format :

* Lettres minuscules et chiffres uniquement
* Underscores autorisés pour séparer les mots
* Pas d'espaces ni de caractères spéciaux

<CodeGroup>
  ```json Valide theme={null}
  ["urgent", "refund_request", "vip_customer", "livraison_2024"]
  ```

  ```json Invalide theme={null}
  ["Urgent", "refund request", "vip-customer", ""]
  ```
</CodeGroup>

<Note>
  L'outil vérifie les tags existants sur le ticket et n'ajoute que ceux qui manquent. Pas de risque de doublons.
</Note>

## Ce que l'outil retourne

* Confirmation du succès ou de l'erreur
* Liste des tags effectivement ajoutés

## Exemples de workflows

<WorkflowExample
  title="Tagging avant escalade"
  whenToUse="Pour faciliter le routage quand tu escalades vers un agent humain"
  steps={[
"Identifie le sujet du ticket (remboursement, livraison, technique...)",
"Utilise @add_tags_to_ticket avec le tag correspondant",
"Escalade ensuite vers l'équipe appropriée"
]}
/>

<WorkflowExample
  title="Tagging contextuel"
  whenToUse="Pour enrichir le ticket avec des infos récupérées via API ou dans les métadonnées"
  steps={[
"Récupère les infos client ou commande via les outils disponibles",
"Identifie les éléments importants : client premium, livraison prévue aujourd'hui, commande en retard...",
"Utilise @add_tags_to_ticket pour marquer ces éléments",
"Réponds au client et utilise @set_ticket_status pour changer le statut"
]}
/>

## Bonnes pratiques

<AccordionGroup>
  <Accordion title="Définir une convention de nommage">
    Utilisez des tags cohérents dans toute l'équipe. Par exemple : `client_premium`, `livraison_jour_meme`, `commande_retard` plutôt qu'un mélange de formats.
  </Accordion>

  <Accordion title="Taguer les infos utiles pour le routage">
    Les tags servent surtout à transmettre du contexte aux agents humains. `client_premium` ou `livraison_prevue_aujourdhui` aide l'agent à prioriser.
  </Accordion>

  <Accordion title="Ne pas sur-taguer">
    Limitez-vous à 2-3 tags par ticket. Trop de tags rend le reporting confus.
  </Accordion>
</AccordionGroup>
