test: add machine creation e2e flow and CI

This commit is contained in:
MatthieuTD
2025-09-22 10:21:06 +02:00
parent b6ca9ae54b
commit 69381a41ba
3 changed files with 1140 additions and 11 deletions

View File

@@ -81,6 +81,63 @@ Site → Machine → Composant → Sous-composant → ...
- `PATCH /api/machines/:id` - Modifier une machine
- `DELETE /api/machines/:id` - Supprimer une machine
#### Payloads `componentSelections` / `pieceSelections`
Lors de la création d'une machine à partir d'un type, il est possible de fournir des sélections de composants et de pièces qui viendront remplir les exigences définies dans le type de machine.
```json
{
"name": "Presse HP-2000",
"siteId": "<identifiant du site>",
"typeMachineId": "<identifiant du type de machine>",
"componentSelections": [
{
"requirementId": "<id d'une TypeMachineComponentRequirement>",
"componentModelId": "<optionnel : modèle existant>",
"definition": {
"name": "Bloc moteur série X",
"reference": "COMP-001",
"emplacement": "Module A",
"prix": "12000.00",
"customFields": [
{
"name": "Puissance nominale",
"type": "text",
"required": true,
"defaultValue": "7 kW"
}
]
}
}
],
"pieceSelections": [
{
"requirementId": "<id d'une TypeMachinePieceRequirement>",
"pieceModelId": "<optionnel : modèle existant>",
"definition": {
"name": "Kit maintenance niveau 1",
"reference": "KIT-001",
"customFields": [
{
"name": "Référence fournisseur",
"type": "text",
"defaultValue": "STD-002"
}
]
}
}
]
}
```
Principales règles de validation :
- `requirementId` doit correspondre à une exigence déclarée dans le type de machine (composant ou pièce).
- Le nombre de sélections pour une exigence doit respecter `minCount` et `maxCount` (si défini). Les exigences marquées `required` imposent au moins une sélection.
- Si `allowNewModels` vaut `false`, il est obligatoire de fournir un `componentModelId`/`pieceModelId` existant. Sinon un `definition` sans modèle peut être utilisé pour créer un nouvel élément.
- Les modèles sélectionnés doivent appartenir au type attendu (`typeComposantId` ou `typePieceId`) sous peine d'échec de la création.
- Les champs personnalisés du `definition.customFields` permettent de surcharger la valeur par défaut définie au niveau du type; la valeur est automatiquement injectée dans les `customFieldValues` de la machine, du composant ou de la pièce créée.
### Composants
- `GET /api/composants` - Liste tous les composants
- `GET /api/composants/:id` - Détails d'un composant