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

# Planifiez votre backlog de tickets en masse

export const UseCaseHero = ({title, description, prompt, category, features, devinUrl, agent, intent, playbookId, type}) => {
  const encodedPrompt = encodeURIComponent(prompt || '');
  const tag = 'docs-use-case-gallery';
  const utm = 'utm_source=docs&utm_medium=use-case-gallery&utm_campaign=hero-cta';
  const agentParams = (agent ? '&agent=' + agent : '') + (intent ? '&intent=' + intent : '') + (playbookId ? '&playbookId=' + playbookId : '');
  const devinHref = type === 'schedule' ? 'https://app.devin.ai/settings/schedules/create?' + utm + agentParams + (prompt ? '&prompt=' + encodedPrompt : '') : type === 'review' ? 'https://app.devin.ai/review?' + utm : agent === 'ada' ? 'https://app.devin.ai/search?' + utm + '&noSubmit=true' + (prompt ? '&prompt=' + encodedPrompt : '') : devinUrl ? devinUrl.includes('?') ? devinUrl + '&' + utm + agentParams : devinUrl + '?' + utm + agentParams : prompt ? 'https://app.devin.ai/?tags=' + tag + '&' + utm + agentParams + '&prompt=' + encodedPrompt : 'https://app.devin.ai/?' + utm + agentParams;
  const buttonLabel = type === 'schedule' ? 'Schedule in Devin ↗' : type === 'review' ? 'Set Up Devin Review ↗' : agent === 'advanced' ? 'Try in Devin ↗' : agent === 'dana' ? 'Try in Dana ↗' : agent === 'ada' ? 'Try in Ask Devin ↗' : 'Try in Devin ↗';
  const featureList = features ? features.split(',').map(f => f.trim()) : [];
  return <div className="uc-hero">
      <div className="uc-hero-inner">
        <div className="uc-hero-left">
          <h1 className="uc-hero-title">{title}</h1>
          <p className="uc-hero-desc">{description}</p>
          <div>
            <a href={devinHref} target="_blank" rel="noopener noreferrer" className="try-in-devin-btn">
              {buttonLabel}
            </a>
          </div>
        </div>
        <div className="uc-hero-meta">
          <div className="uc-meta-item">
            <span className="uc-meta-label">Author</span>
            <span className="uc-meta-value">Cognition</span>
          </div>
          <div className="uc-meta-item">
            <span className="uc-meta-label">Category</span>
            <span className="uc-meta-value">{category}</span>
          </div>
          {featureList.length > 0 && <div className="uc-meta-item">
              <span className="uc-meta-label">Features</span>
              <span className="uc-meta-value">{featureList.join(', ')}</span>
            </div>}
        </div>
      </div>
    </div>;
};

export const PromptBlock = ({children, type, agent, intent, playbookId}) => {
  var utm = 'utm_source=docs&utm_medium=use-case-gallery&utm_campaign=prompt-block';
  var tag = 'docs-use-case-gallery';
  var agentParams = (agent ? '&agent=' + agent : '') + (intent ? '&intent=' + intent : '') + (playbookId ? '&playbookId=' + playbookId : '');
  var label = type === 'schedule' ? 'Schedule in Devin' : type === 'playbook' ? 'Create Playbook' : type === 'knowledge' ? 'Add to Knowledge' : agent === 'advanced' ? 'Try in Devin' : agent === 'dana' ? 'Try in Dana' : agent === 'ada' ? 'Try in Ask Devin' : 'Try in Devin';
  var buildUrl = function (text) {
    var encoded = encodeURIComponent(text);
    if (type === 'schedule') return 'https://app.devin.ai/settings/schedules/create?' + utm + agentParams + '&prompt=' + encoded;
    if (type === 'playbook') return 'https://app.devin.ai/settings/playbooks/create?' + utm + '&body=' + encoded;
    if (type === 'knowledge') return 'https://app.devin.ai/knowledge?' + utm + '&body=' + encoded;
    if (agent === 'ada') return 'https://app.devin.ai/search?' + utm + '&noSubmit=true&prompt=' + encoded;
    return 'https://app.devin.ai/?tags=' + tag + '&' + utm + agentParams + '&prompt=' + encoded;
  };
  const ref = React.useRef(null);
  const [href, setHref] = React.useState('#');
  React.useEffect(() => {
    if (!ref.current) return;
    var codeEl = ref.current.querySelector('pre code');
    if (codeEl) {
      var text = codeEl.textContent.trim();
      if (text) setHref(buildUrl(text));
    }
    var header = ref.current.querySelector('[data-component-part="code-block-header"]');
    if (header && !header.querySelector('.prompt-block-devin-link')) {
      var link = document.createElement('a');
      link.href = href;
      link.target = '_blank';
      link.rel = 'noopener noreferrer';
      link.className = 'prompt-block-devin-link';
      link.style.cssText = 'display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:#fff;font-size:11px;font-weight:500;padding:4px 10px;border-radius:6px;white-space:nowrap;background:#317CFF;transition:background 0.2s;margin-left:8px;';
      link.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" y1="14" x2="21" y2="3"/></svg> ' + label;
      link.onmouseenter = function () {
        link.style.background = '#2968D9';
      };
      link.onmouseleave = function () {
        link.style.background = '#317CFF';
      };
      header.appendChild(link);
    }
    var existingLink = ref.current.querySelector('.prompt-block-devin-link');
    if (existingLink && href !== '#') existingLink.href = href;
  });
  return <div className="prompt-block" ref={ref}>{children}</div>;
};

<UseCaseHero title="Planifiez en masse votre backlog de tickets" description="Sélectionnez plusieurs tickets dans Linear et obtenez des plans d’implémentation, assortis d’un score de confiance, pour l’ensemble de votre backlog." prompt="Passez en revue tous les tickets de notre backlog du sprint actuel. Pour chacun, analysez la base de code, fournissez un score de confiance (vert/jaune/rouge) et publiez un plan d’implémentation en commentaire sur le ticket. Ne commencez pas l’implémentation — définissez uniquement le périmètre." category="Gestion de projet" features="Intégrations, Playbooks" devinUrl="https://app.devin.ai/settings/connections/linear" />

<div className="uc-detail-wrapper">
  <Tip>Vous ne souhaitez pas effectuer cette configuration manuellement ? Collez un lien vers cette page dans une session Devin et demandez-lui de tout configurer pour vous.</Tip>

  <Steps>
    <Step title="Connecter Linear">
      Accédez à [**Settings > Connections > Linear**](https://app.devin.ai/settings/connections/linear?utm_source=docs\&utm_medium=use-case-gallery), puis cliquez sur **Connect**. Vous autoriserez Devin à accéder à votre espace de travail et à choisir les équipes qu’il peut voir. Vous pouvez aussi utiliser [Jira](/fr/integrations/jira) à la place si c’est l’outil de gestion de tickets de votre équipe.

      Une fois votre intégration [Linear](/fr/integrations/linear) active, vérifiez la section **Synced playbook labels** dans les paramètres de Linear. Le [playbook](https://app.devin.ai/settings/playbooks/b0d9a34380374c3e903d900d340d8da7?utm_source=docs\&utm_medium=use-case-gallery) `!plan` est défini comme playbook par défaut — il indique à Devin d’analyser et de commenter les tickets sans écrire de code.

      <Note>Pour que les libellés de playbook se synchronisent automatiquement avec Linear, votre espace de travail Linear doit avoir **Manage workspace labels** défini sur **All members** (dans le menu **Settings > Security** de Linear). Si ce n’est pas activé, vous devrez créer les libellés manuellement dans Linear.</Note>
    </Step>

    <Step title="Sélectionnez des tickets et ajoutez l’étiquette Devin">
      Ouvrez votre backlog dans [**Linear**](https://linear.app), appuyez sur **Cmd+A** pour sélectionner plusieurs tickets (ou Maj+clic pour une plage spécifique), puis faites un clic droit et sélectionnez **Add label > Devin**. Pour utiliser un playbook spécifique, choisissez plutôt un label synchronisé comme `!plan` dans le groupe de labels **Devin Playbooks**.

      Devin commence à analyser chaque ticket sélectionné en parallèle. En quelques minutes, chaque ticket reçoit un commentaire détaillé avec un score de confiance et un plan de mise en œuvre.
    </Step>

    <Step title="Consultez l’analyse de Devin pour chaque ticket">
      Devin publie un commentaire structuré directement sur chaque ticket. Chaque commentaire inclut un **score de confiance** (🟢 🟡 🔴), les **fichiers et modules pertinents** qu’il a trouvés dans votre base de code, un **plan de mise en œuvre** étape par étape, ainsi que toutes les **questions en suspens** qui nécessitent une réponse humaine avant que Devin puisse continuer.

      | Ticket  | Titre                                      | Score | Ce que Devin a trouvé                                                                                                 |
      | ------- | ------------------------------------------ | ----- | --------------------------------------------------------------------------------------------------------------------- |
      | FE-412  | Bascule du mode sombre                     | 🟢    | Le contexte de thème existe dans `src/contexts/ThemeContext.tsx` ; modèle de bascule utilisé dans 3 autres paramètres |
      | FE-419  | Bug de fuseau horaire du sélecteur de date | 🟢    | Bug isolé à `formatLocalDate()` dans `src/utils/dates.ts` ; test unitaire manquant                                    |
      | BE-203  | Migrer prefs vers Postgres                 | 🟡    | 14 emplacements d’appel répartis sur 6 services — a besoin de précisions sur la stratégie de rollback                 |
      | BE-210  | Rate limiting sur les webhooks             | 🟢    | Middleware de limitation de débit existant dans `src/middleware/rateLimiter.ts` ; ne nécessite qu’une configuration   |
      | INF-102 | Health check k8s                           | 🟢    | La readiness probe existe déjà sur `/healthz` ; la liveness probe suit le même modèle                                 |

      **Signification des scores :**

      * **🟢 Vert** — Devin peut gérer cela de manière autonome. Cliquez sur le lien dans le commentaire de Devin pour lancer immédiatement une session.
      * **🟡 Jaune** — Devin a des questions spécifiques. Répondez-y dans le fil du ticket ou dans [Spaces](/fr/product-guides/knowledge), et Devin réévaluera — passant souvent à vert.
      * **🔴 Rouge** — À attribuer de préférence à un ingénieur humain, mais l’analyse de la base de code par Devin vous donne une longueur d’avance pour définir le périmètre.

      <Tip>Avec l’intégration Linear installée, Devin a nativement accès aux outils de Linear — votre playbook peut donc demander à Devin de mettre à jour les étiquettes des tickets en fonction de ses conclusions. Par exemple, Devin pourrait ajouter une étiquette `Green`, `Yellow` ou `Red` à chaque ticket en fonction de son score de confiance. Comme les étiquettes peuvent déclencher d’autres automatisations, vous pouvez enchaîner les workflows — par exemple, une étiquette `Green` pourrait lancer une deuxième session Devin qui démarre la mise en œuvre.</Tip>
    </Step>

    <Step title="Mettre en place des déclencheurs d’automatisation pour une planification en continu">
      Au lieu d’étiqueter manuellement les tickets à chaque fois, configurez un **déclencheur d’automatisation** pour que les nouveaux tickets soient planifiés dès qu’ils arrivent dans votre backlog.

      Dans [**Settings > Connections > Linear**](https://app.devin.ai/settings/connections/linear?utm_source=docs\&utm_medium=use-case-gallery), faites défiler jusqu’à **Automation triggers** et cliquez sur **Add trigger** :

      * **Teams** : sélectionnez les équipes à planifier automatiquement (par exemple, « Engineering », « Platform »)
      * **Statuses** : déclenchement lorsqu’un ticket passe à un statut spécifique comme « Triage » ou « Todo »
      * **Labels** : vous pouvez éventuellement restreindre à certains labels (par exemple, uniquement les tickets `Feature` ou `Improvement`)
      * **Playbook** : sélectionnez `!plan` pour que Devin définisse le périmètre et commente sans écrire de code

      <Tip>Vous pouvez dupliquer le [template playbook](https://app.devin.ai/settings/playbooks/b0d9a34380374c3e903d900d340d8da7?utm_source=docs\&utm_medium=use-case-gallery) `!plan` et le personnaliser pour votre organisation — par exemple, en ajustant le format de sortie, en ajoutant des instructions spécifiques au dépôt ou en modifiant les détails que Devin inclut dans ses commentaires.</Tip>

      Les déclencheurs utilisent la [edge detection](/fr/integrations/linear) — ils se déclenchent uniquement lorsqu’un ticket passe vers un état correspondant, et non pour les tickets déjà dans cet état. Chaque nouveau ticket qui arrive désormais dans votre colonne « Todo » est déjà analysé en amont avec un score de confiance et un plan de mise en œuvre, prêt pour que votre équipe l’examine et le priorise.
    </Step>
  </Steps>
</div>
