Imports
Vérifié contre le produit le .
| Domaine | Imports — un import nominal, un import avec lignes rejetées, un fichier au mauvais format, et le ré-import |
| Durée | ~10 min |
| Niveau | complet |
| Étiquette | automatisable — tout se joue par dépôt de fichier et lecture de rapport |
Préparation
Section intitulée « Préparation »Socle B. Le montage est sur la préparation commune.
Compte : alice. L’écran demande referential.manage, et non la permission de la section
Administration — un gestionnaire de patrimoine y a droit sans voir l’entrée du menu.
Trois fichiers à préparer, avec un tableur ou un éditeur de texte. Ils alimentent le parc de salles Un espace où l'on donne cours ou que l'on réserve, caractérisé par sa capacité, son type et ses équipements. , le type d’import le plus simple à vérifier en aval :
| Fichier | Contenu |
|---|---|
salles-ok.csv |
en-têtes Code,Nom,Capacité,Code bâtiment, trois lignes valides dont le code bâtiment existe |
salles-ko.csv |
les mêmes trois lignes, plus deux lignes fautives : une avec un code bâtiment inexistant, une avec une capacité non numérique |
pas-un-csv.pdf |
n’importe quel fichier qui n’est ni CSV, ni image |
1. L’import nominal
Section intitulée « 1. L’import nominal »Administration → Imports.
| # | Action | Résultat attendu |
|---|---|---|
| 1.1 | Ouvrir l’écran sur un établissement neuf | « Aucun import pour le moment. » |
| 1.2 | « Nouvel import » → type « Salles (+ équipements) », fichier salles-ok.csv |
le job est créé, statut « Fichier reçu » |
| 1.3 | Ouvrir le job | l’assistant, avec ses quatre étapes, et le rappel du fichier — nom, encodage, séparateur détectés automatiquement |
| 1.4 | Étape « Mapping » | les colonnes sont pré-associées par ressemblance ; les champs obligatoires portent « requis » |
| 1.5 | « Valider le mapping » | « Mapping enregistré » ; statut « Mapping défini » |
| 1.6 | « Lancer la vérification (dry-run) » | « Vérification en cours… » puis « Aucune erreur détectée : toutes les lignes peuvent être importées. » |
| 1.7 | « Importer 3 lignes » | « Import en cours… » avec sa progression, puis « Import terminé » et « 3 créés · 0 mis à jour · 0 rejetés » |
| 1.8 | Retour à la liste | le job est à « Terminé » |
Vérification en aval : Référentiel & parc → Parc de salles → les trois salles sont là, avec leur capacité et leur bâtiment.
2. Le ré-import — mise à jour, pas doublon
Section intitulée « 2. Le ré-import — mise à jour, pas doublon »| # | Action | Résultat attendu |
|---|---|---|
| 2.1 | Modifier une capacité dans salles-ok.csv, réimporter le même fichier, même type |
l’assistant reprend le mapping : « Mapping repris de votre dernier import de ce type. » |
| 2.2 | Vérification, puis import | « 0 créés · 3 mis à jour · 0 rejetés » |
| 2.3 | Retour au parc de salles | trois salles, pas six ; la capacité modifiée est à jour |
C’est l’idempotence : le code de la salle est sa clé naturelle.
3. L’import avec lignes rejetées
Section intitulée « 3. L’import avec lignes rejetées »| # | Action | Résultat attendu |
|---|---|---|
| 3.1 | Nouvel import du même type, fichier salles-ko.csv |
statut « Fichier reçu » |
| 3.2 | Valider le mapping, lancer la vérification | « 3 lignes valides sur 5 » puis « Lignes rejetées (2) » |
| 3.3 | Lire le tableau des rejets | « Ligne », « Champ », « Raison », « Valeur », « Suggestion » |
| 3.4 | Lire la raison de la ligne au bâtiment inexistant | « La référence indiquée dans « Code bâtiment » est introuvable dans le référentiel. », avec une suggestion si un code proche existe |
| 3.5 | Lire la raison de la ligne à la capacité non numérique | « « Capacité » doit être un nombre entier valide. » |
| 3.6 | Tenter de lancer l’import sans rien cocher | il est refusé — une seule ligne rejetée bloque tout |
| 3.7 | Créer le bâtiment manquant dans le référentiel, revenir, « Relancer la vérification » | « 4 lignes valides sur 5 » — il ne reste que la ligne non numérique |
| 3.8 | Cocher « Importer uniquement les lignes valides (les lignes rejetées seront ignorées) », importer | « 1 créés · 3 mis à jour · 1 rejetés » |
| 3.9 | Chercher la ligne rejetée dans le produit | elle n’existe nulle part — elle n’est ni écrite, ni mise de côté |
4. Le mauvais format
Section intitulée « 4. Le mauvais format »| # | Action | Résultat attendu |
|---|---|---|
| 4.1 | « Nouvel import » avec pas-un-csv.pdf |
« Le téléversement a échoué : … » — le fichier est refusé avant tout traitement |
| 4.2 | Renommer le PDF en .csv et réessayer |
il est encore refusé, ou la vérification rejette toutes les lignes avec « La ligne n’a pas le même nombre de colonnes que l’en-tête. » |
| 4.3 | Déposer un CSV dont les en-têtes ne ressemblent à rien de connu | l’étape de mapping s’ouvre avec des champs non associés : « — non mappé — » partout |
| 4.4 | Tenter de valider un mapping où un champ « requis » reste non associé | « Enregistrement impossible : … » |
5. L’import global
Section intitulée « 5. L’import global »| # | Action | Résultat attendu |
|---|---|---|
| 5.1 | Déposer un classeur avec plusieurs onglets, dont un onglet au nom inconnu | un groupe est créé ; « Onglets non reconnus (ignorés) : … » liste l’intrus |
| 5.2 | Ouvrir le groupe | « Import global », un onglet par ligne, avec sa colonne « Ordre » |
| 5.3 | « Tout importer » | la séquence défile dans l’ordre des dépendances |
| 5.4 | Si un onglet a des rejets | « L’import s’est arrêté sur “…” : ouvrez-le pour corriger (mapping ou lignes rejetées), puis reprenez. » |
| 5.5 | Corriger l’onglet, revenir, « Reprendre l’import » | la séquence repart au même endroit ; les onglets terminés sont sautés |
| 5.6 | À la fin | « Tous les onglets ont été importés. » |
Pièges connus
Section intitulée « Pièges connus »- Le fichier déposé est supprimé dès l’import réussi. Gardez votre exemplaire : on ne peut pas le retélécharger depuis le produit.
- Changer le mapping d’un import déjà vérifié le ramène à l’étape de vérification. L’ancien rapport ne correspond plus.
- Les limites sont vérifiées au dépôt : 10 Mo et 50 000 lignes au maximum. Un fichier hors bornes est refusé avant tout traitement.
Les pièges transverses — environnement, authentification, fraîcheur des données — sont rassemblés sur Les pièges connus.
Traçabilité
Section intitulée « Traçabilité »| Ce qui est couvert | Story | Vue |
|---|---|---|
| Imports CSV, mapping assisté, dry-run, rapport | STORY-011 |
V47 |
| Import global par classeur, ordre et reprise | STORY-011 |
— |
| Idempotence par clé naturelle | STORY-011 |
— |
| Audit d’une exécution d’import | STORY-010 |
V62 |
Couvert par les tests automatisés : apps/api/src/imports/imports.e2e.spec.ts. Le pipeline
complet, l’idempotence, les rejets et l’import partiel y sont couverts ; l’assistant à quatre
étapes et la reprise d’un groupe côté interface ne le sont pas.
Checklist
Section intitulée « Checklist »- Établissement neuf → « Aucun import pour le moment. »
- Fichier valide déposé → encodage et séparateur détectés automatiquement
- Mapping pré-associé, champs obligatoires marqués « requis »
- Vérification → « Aucune erreur détectée : toutes les lignes peuvent être importées. »
- Import → « 3 créés · 0 mis à jour · 0 rejetés »
- Les trois salles sont dans le parc de salles
- Ré-import du même fichier → « 0 créés · 3 mis à jour · 0 rejetés », et trois salles, pas six
- Fichier fautif → « 3 lignes valides sur 5 » et « Lignes rejetées (2) »
- Rejets détaillés : ligne, champ, raison, valeur, suggestion
- Import refusé tant qu’une ligne est rejetée
- Référence créée puis « Relancer la vérification » → « 4 lignes valides sur 5 »
- Case des lignes valides cochée → « 1 créés · 3 mis à jour · 1 rejetés », la ligne rejetée n’existe nulle part
- Fichier au mauvais format → « Le téléversement a échoué : … »
- Classeur avec onglet inconnu → « Onglets non reconnus (ignorés) : … »
- Groupe arrêté sur un onglet → « L’import s’est arrêté sur “…” … », puis reprise au même endroit
Écrans concernés
Section intitulée « Écrans concernés »- Imports CSV, Assistant d'import et Import global — les trois écrans du parcours.
- Parc de salles — la vérification en aval.
- Journal d'audit — une entrée par exécution.