---
title: "Construire un Model"
url: https://developers.dagio.ai/fr/models/
---

# Construire un Model

   
                            
                                                                                             
              
              
         
   

## Commencer par votre activité

Un Model décrit ce que l’app organise et permet de faire. Pour Clients, commencez par les informations nécessaires à une fiche, les collections à consulter et les Actions utiles. Les détails de packaging et de versions techniques sont pris en charge par les outils; ils ne constituent pas le point de départ du travail métier.

Dans le Studio, composez le Model vous-même ou demandez à l’AI de proposer une structure. L’AI modifie les mêmes définitions que vous. Vous pouvez inspecter les objets ajoutés, les Fields, les vues et les opérations avant d’appliquer la proposition.

| Partie du Model | Valeurs ou contenu attendus | Rôle |
| --- | --- | --- |
| Objets | Client, Soumission, Contact | Définir les types de fiches |
| Fields | Valeurs typées et contraintes | Décrire les données de chaque fiche |
| Vues | Fiche, tableau, graphe ou composition | Présenter les données |
| Queries | Sources, paramètres, filtres et agrégats | Définir ce qui est recherché |
| Actions | Opération, contexte et Form éventuelle | Définir ce que l’usager peut faire |
| Flows | Étapes, dépendances et résultats | Organiser un travail durable |
| Règles | Conditions et effets admis | Encadrer validations et transitions |
| Publication | Identité, dépendances et migration | Distribuer et faire évoluer l’app |

## Construire par étapes

1. Définissez Client avec Entreprise, Courriel, État et Notes.
2. Placez les Fields de contenu dans la Surface et les réglages dans Paramètres.
3. Définissez la Query Clients actifs et les colonnes de son tableau.
4. Ajoutez l’Action Nouveau client avec sa Form de création.
5. Essayez la création, l’édition et la recherche dans l’aperçu.
6. Ajoutez Soumissions et configurez son lien vers Client.

Placez les vues utilisées au quotidien dans la navigation principale. Les autres collections restent accessibles dans **Autres vues**, sans encombrer le rail : par exemple, Clients et Soumissions au premier niveau, avec les dossiers à réexaminer dans le menu. Leur emplacement ne change ni leur contenu ni les droits nécessaires pour les consulter. Un compteur affiche le total autorisé de sa sélection déclarée, indépendamment des filtres de la liste; une lecture indisponible n’est pas un total égal à zéro.

## Valider avant de publier

Dans un aperçu privé, ouvrez une fiche pour consulter son document et ses Fields. Si le Model déclare une Form de modification, utilisez-la pour examiner et confirmer les changements dans le même éditeur de fiche. L’aperçu n’ajoute pas une opération Enregistrer distincte que le Model n’a pas déclarée. Une saisie peut être reprise dans l’aperçu original après une nouvelle vérification d’accès ; une fiche modifiée n’est ni fusionnée ni recalée silencieusement. Les fournisseurs externes et les déclencheurs restent bloqués pendant cet essai isolé.

Dans les collections de l’aperçu, consultez les groupes et leurs fiches avec les regroupements déclarés par le Model. Les sélecteurs des Forms vérifient la fiche choisie dans ce même essai, sans ouvrir les données d’un autre compte.

Vos choix de colonnes, de largeur et de densité restent personnels à ce tableau d’aperçu; ils ne modifient ni le Model ni les valeurs de ses fiches.

Le contexte de l’AI identifie la destination privée et la fiche que vous consultez, avec sa version enregistrée et l’existence d’une saisie non enregistrée. Il n’inclut pas automatiquement tout le document. Une lecture explicite utilise cette version enregistrée exacte et respecte les règles de divulgation à l’AI du Model, y compris pour les Fields effectifs et leurs références. Une saisie non enregistrée n’est pas présentée comme un contenu sauvegardé. Cet aperçu privé ne publie pas la source de votre Model et ne change pas votre compte vers l’environnement d’essai.

Pour une fiche archivée ou supprimée logiquement, la consultation autorisée lit la version inactive actuellement affichée. Une ancienne citation de source reste distincte et ne sélectionne pas silencieusement son ancien corps actif. Cette lecture n’autorise ni la modification ni la restauration.

Une source archivée de cet aperçu peut être consultée en lecture seule. La référence citée reste
distincte de la version archivée actuellement consultée ; ouvrir cette fiche ne la réactive pas et
n’autorise ni Enregistrer ni restaurer. Un changement de version ou d’accès interrompt cette lecture.

Si une préparation reste sans acquittement, vous pouvez demander la fermeture de sa réservation originale. Surface ne la ferme ainsi que si elle n’a jamais été admise, et empêche alors cette même préparation de démarrer plus tard. Un aperçu déjà préparé n’est pas supprimé par ce geste : reprenez sa demande initiale. Une fermeture confirmée dont le nettoyage local a échoué ne renvoie pas l’opération native.

La validation contrôle les types et les références : un Field affiché doit exister; une vue doit utiliser une Query déclarée; une Action doit pointer vers une opération reconnue. Une composition d’interface ne crée pas un nouveau moteur de données et ne contourne pas les droits.

Si le Model déclare une expérience Work, utilisez ses étapes, collections, critères et destination
dans l'aperçu privé. Consultez le Flow et examinez une intervention manuelle disponible avant de la
confirmer. Les Sources distinguent la citation originale de la version affichée ; ouvrir une fiche
ne remplace pas la comparaison d'une ancienne version citée. Une comparaison ou une exécution
externe indisponible est signalée explicitement. La reprise d'une revue retenue ouvre son aperçu
original et conserve sa demande originale, sans en préparer ni en soumettre une nouvelle.

## Sources et référence avancée

Lorsque l’éditeur le permet et que vous disposez des accès requis, créez une adaptation privée de la source d’un Model sans remplacer l’app courante ni ses contenus. Examinez le nom choisi et les conditions de l’éditeur avant de confirmer. La création de la source privée reste distincte de sa compilation, publication, activation ou migration; elle n’accorde pas de droit de redistribution publique. Si la création est confirmée mais que l’ouverture échoue, reprenez seulement l’ouverture. Si son résultat est inconnu, [reprenez la demande originale](https://developers.dagio.ai/fr/retries/) plutôt que de créer une autre adaptation.

L’effacement du compte inclut le nettoyage des aperçus privés rattachés à son espace de création avant de retirer leurs inscriptions et les sources privées. Une fermeture affichée ou une entrée de répertoire supprimée ne remplace pas la confirmation du nettoyage des contenus. Si cette confirmation manque, la finalisation reste bloquée ; elle ne donne aucun droit sur les aperçus appartenant à un autre compte.

Le Model peut être conservé sous forme de sources structurées. La [référence complète](https://developers.dagio.ai/fr/reference/) décrit les contrats exacts et leurs variantes. Les noms comme `ManagedModelSource@1` identifient un format de source; ils appartiennent à l’intégration et à la compilation, pas aux informations qu’un client final remplit dans une fiche.
## Déclarer une vue Gantt complète

Une vue Gantt déclare cinq mappings obligatoires vers des Fields scalaires : les dates `start` et `end`, les nombres
`duration` et `progress`, et le booléen `milestone`. Son `schedule` déclare `durationUnit`
(`millisecond`, `hour` ou `day`), `progressScale` (`ratio` ou `percent`) et une liste
`dependencies`. Chaque dépendance nomme le `linkTypePath` exact et précise si son `predecessor`
est l'endpoint `source` ou `target`. Le compilateur refuse les mappings incomplets; les titres ne
déterminent jamais un Field, un jalon ou le sens d'un Link.
Les Fields eux-mêmes peuvent rester optionnels : une Task reste créable sans données de planification.

La vue affiche la progression, les jalons et les dépendances orientées avec les dates enregistrées.
Son chemin critique utilise les dépendances fin-vers-début et les durées écoulées déclarées sur le
périmètre autorisé complet de la Query, pas seulement la page visible. Il ne déplace pas les dates
et ne déduit pas de calendrier ouvré. Un cycle, un endpoint non couvert ou un snapshot incomplet
provoque un refus explicite, pas un chemin critique partiel. Les mêmes droits et protections des
sources s'appliquent à chaque élément et aux deux côtés de chaque dépendance; la consultation
humaine reste distincte de la divulgation à l'AI.
Les éléments non planifiés conservent leurs dates et valeurs connues et énumèrent explicitement
leurs Fields manquants. Le chemin critique reste non évaluable tant qu'un élément manque de faits
de planification; aucune progression, durée ou valeur de jalon n'est inventée pour le compléter.

<!-- surface-examples:start -->

## Exemples appliqués : Assembler une définition cohérente

La Form et le profil de fiche référencent les mêmes Fields company, status et notes.

### Configuration

Fragment à placer dans `forms[]`. [Propriétés et valeurs admises](https://developers.dagio.ai/fr/reference/workspace-model-foundation/).

```json
{
  "contract": "WorkspaceForm@2",
  "key": "new-client",
  "label": "Nouveau client",
  "actionKey": "create-client",
  "targetDefinitionPath": "workspace/clients/surface/client",
  "mode": "create",
  "fields": [
    {
      "contract": "WorkspaceFormControl@2",
      "repeatable": false,
      "key": "company",
      "label": "Entreprise",
      "input": "text",
      "binding": {
        "kind": "field",
        "fieldKey": "company"
      },
      "required": true,
      "ruleKeys": [],
      "options": []
    },
    {
      "contract": "WorkspaceFormControl@2",
      "repeatable": false,
      "key": "status",
      "label": "État",
      "input": "choice",
      "binding": {
        "kind": "field",
        "fieldKey": "status"
      },
      "required": true,
      "ruleKeys": [],
      "options": [
        "prospect",
        "active"
      ]
    }
  ],
  "ruleKeys": []
}
```

### Variante et raccordement

Fragment à placer dans `presentation.recordProfiles[]`. [Propriétés et valeurs admises](https://developers.dagio.ai/fr/reference/workspace-record-profile/).

```json
{
  "key": "client",
  "definitionPaths": [
    "workspace/clients/surface/client"
  ],
  "editActionKey": "edit-client",
  "identity": {
    "title": {
      "kind": "field",
      "fieldPath": "fields/company"
    },
    "avatar": {
      "kind": "initials",
      "maximumLetters": 2
    },
    "subtitle": {
      "kind": "field",
      "fieldPath": "fields/status"
    }
  },
  "valueLabels": [
    {
      "fieldPath": "fields/status",
      "values": [
        {
          "value": "prospect",
          "label": "Prospect"
        },
        {
          "value": "active",
          "label": "Actif"
        }
      ]
    }
  ],
  "card": {
    "summary": {
      "kind": "field",
      "fieldPath": "fields/notes"
    },
    "tags": {
      "namespace": "user",
      "maximumVisible": 3
    },
    "metricKeys": [],
    "openLabel": "Ouvrir le client"
  },
  "queryBindings": [],
  "metrics": [],
  "detail": {
    "primaryActionKey": null,
    "creationActionKeys": [],
    "actionKeys": [],
    "sections": [
      {
        "kind": "fields",
        "key": "follow-up",
        "label": "Suivi du client",
        "fieldPaths": [
          "fields/notes",
          "fields/status"
        ]
      }
    ],
    "settings": {
      "fieldPaths": [
        "fields/email"
      ]
    },
    "tags": {
      "namespace": "user",
      "maximumVisible": 3
    },
    "relatedGroups": [],
    "primaryActionLabel": null
  }
}
```

### Exemple de disposition UI

La disposition illustrative ci-dessous situe cette configuration dans l’app Clients/Soumissions. Chaque fragment s’insère à l’emplacement indiqué; ses références aux Fields, Queries et Actions correspondent aux déclarations du Model.

1. Clients · Data
2. Références · Knowledge
3. Préparation · Work
4. Soumissions · Product

<!-- surface-examples:end -->
