---
title: "Outils IA — Packs Core et Project"
module: ai
type: functional
status: active
updated: 2026-07-13
---

# Outils IA — Packs Core et Project

## À quoi ça sert

Cette fonctionnalité permet aux assistants IA d'ISI-APP d'aller chercher eux-mêmes des informations dans l'application (projets, backlogs, tâches, contexte utilisateur) au lieu de se contenter de générer du texte. Concrètement, quand un utilisateur pose une question à un assistant IA configuré avec ces packs, l'IA peut **interroger la base de données en temps réel** pour fournir une réponse précise et à jour.

Deux packs d'outils sont disponibles :

- **Pack `core`** — outils transverses sans pré-requis : récupérer le contexte de l'utilisateur courant, résoudre un nom en identifiant.
- **Pack `project`** — outils dédiés au module Projets : lister/consulter projets, backlogs, tâches projet, sous-tâches de checklist, et migrer les backlogs non terminés d'un sprint vers le suivant.

## Outils disponibles

### Pack core (toujours activable)

| Outil | Rôle |
|-------|------|
| `me` | Donne à l'IA le contexte de l'utilisateur courant (qui je suis, mon entité, mes droits) |
| `resolve` | Convertit un nom (« le projet Alpha », « Marie Dupont ») en identifiant exploitable par les autres outils |

### Pack project (nécessite le module `projet` activé)

| Outil | Rôle |
|-------|------|
| `projects` | Lister ou consulter les projets accessibles à l'utilisateur |
| `backlogs` | Lister ou consulter les backlogs (user stories / demandes), même en mode multi-projets |
| `project_tasks` | Lister les tâches de projet (ComTask) |
| `backlog_tasks` | Lister les sous-tâches d'une checklist de backlog |
| `migrate_sprint_backlogs` | Migrer les backlogs non terminés d'un sprint vers le sprint suivant (écriture, avec confirmation) |

## Comment l'utiliser (côté admin)

Les packs s'activent dans la configuration d'un assistant IA (interface `/admin/ai`, formulaire d'assistant, section **Outils IA disponibles**). Cocher un pack le rend disponible pour cet assistant ; les utilisateurs qui l'utilisent verront alors l'IA aller chercher la réponse dans le module concerné.

> Si un assistant n'a aucun pack coché, il fonctionne en mode chat classique (génération de texte uniquement).

## Comportements visibles pour l'utilisateur

- **Pagination** : les listes renvoyées par l'IA sont paginées par lots de 10 résultats. Si l'utilisateur veut la suite, il suffit de demander « la suite » ou « les 10 suivants ».
- **Sécurité multi-tenant** : l'IA ne voit jamais que les données de l'entité de l'utilisateur courant. Les projets confidentiels (`blsecret`) et les ACL ressources sont respectés sans exception.
- **Filtre « mes tâches »** : sémantique métier ISI — une tâche que j'ai créée sans l'affecter à quelqu'un est considérée comme « ma tâche ». Le filtre `mine=true` couvre ce cas (les tâches affectées + les tâches que j'ai créées sans affectation). Le filtre « tâches de X » utilise un autre mécanisme (`assigned_to`).
- **Tâches vs backlogs** : ce sont deux concepts distincts en ISI-APP. Un backlog est une user story / demande, une tâche projet est un travail concret à réaliser. Aucun lien formel n'existe entre les deux en base — l'IA traite les deux séparément.

## Points d'attention

- **Module ACL requis** : un assistant peut avoir le pack `project` coché, mais si le tenant n'a pas le module `projet` activé, le pack est filtré automatiquement et n'est jamais exposé à l'IA. Pas de fuite de capacités.
- **Confirmation avant migration de sprint** : `migrate_sprint_backlogs` est le premier outil d'écriture du pack `project`. L'IA ne migre jamais de backlogs directement : elle présente un aperçu (nombre de backlogs concernés, sprint source et cible détectés automatiquement) et attend une confirmation explicite de l'utilisateur avant d'appliquer le changement. Seuls les backlogs non clos (hors statuts `Real`, `Valid`, `Refus`) sont déplacés.
- **Migrer seulement ses propres backlogs** : le paramètre `mine=true` de `migrate_sprint_backlogs` restreint l'aperçu (et donc la migration) aux backlogs dont l'utilisateur courant est responsable. Si l'utilisateur demande « seulement les miens » après un premier aperçu complet, l'IA doit relancer l'outil avec `mine=true` plutôt que de reproposer le même aperçu.
- **Résolution automatique du sprint** : seul le projet est à préciser. Sans autre indication, l'outil cible le sprint en cours (aujourd'hui). Si l'utilisateur cite une autre période (« le sprint de juillet », « celui du 07/26 »), l'IA transmet le mois/l'année et l'outil retrouve le sprint par son nom (convention `MM/YY`). L'utilisateur n'a jamais besoin de connaître un identifiant technique de sprint.
- **Modèles « mini »** : avec trop de packs activés, certains modèles IA bas de gamme peuvent halluciner ou prétendre ne pas avoir accès à un outil pourtant disponible. Limiter le nombre de packs aux besoins réels de l'assistant.
- **Diagnostic** : la commande `php artisan ai:diagnose-tools <assistant_id> <user_id>` permet de vérifier exactement ce qu'un assistant donné expose à un utilisateur donné (utile pour comprendre un cas où l'IA dit « je n'ai pas accès à X »).

## Cas d'usage typiques

- « Liste-moi mes 5 derniers projets en cours »
- « Quelles sont mes tâches en retard ? »
- « Quel est le statut du backlog #1234 ? »
- « Montre-moi les sous-tâches de ce backlog »
- « Migre les backlogs non terminés du sprint en cours vers le sprint suivant »

---

> Doc technique : [.claude/technical-docs/ai/ai-tool-calling-lot-bc.md](../../.claude/technical-docs/ai/ai-tool-calling-lot-bc.md)
