feat(machines) : clonage par catégorie (structure seule) #5

Merged
matthieu merged 1 commits from feat/clone-machine-par-categorie into develop 2026-06-15 09:31:43 +00:00
Owner

INV-15 — Clonage par catégorie

Ajoute un second mode de clonage de machine, sans toucher au clone existant.

Comportement

POST /api/machines/{id}/clone accepte un paramètre mode :

  • full (défaut) : clone complet — comportement strictement inchangé.
  • structure : ne recopie que la structure/catégories des slots. Chaque slot composant/pièce/produit conserve sa catégorie (modelType, dérivée de l'entité concrète si absente) mais l'entité concrète est laissée vide → slots pendingEntity ("à compléter"). Pas d'overrides ni de custom field values contextuelles.

Front

Sélecteur "Tout cloner / Structure seule" dans la page de création de machine, visible uniquement quand une machine source est choisie.

Tests

  • testCloneMachineStructureModeKeepsCategoriesWithoutConcreteEntities : vérifie catégories conservées, entités concrètes vidées, source intacte.
  • testCloneMachineFullModeStillCopiesConcreteEntities : garde-fou non-régression du mode complet.
  • Suite MachineContextCustomFieldTest : 10/10 OK.

Hors scope (documenté)

  • L'outil MCP CloneMachineTool reste full-only.
  • Pas de transaction ajoutée sur le clone (diff focalisé).
## INV-15 — Clonage par catégorie Ajoute un second mode de clonage de machine, sans toucher au clone existant. ### Comportement `POST /api/machines/{id}/clone` accepte un paramètre `mode` : - **`full`** (défaut) : clone complet — comportement strictement inchangé. - **`structure`** : ne recopie que la **structure/catégories** des slots. Chaque slot composant/pièce/produit conserve sa catégorie (`modelType`, dérivée de l'entité concrète si absente) mais l'entité concrète est laissée vide → slots `pendingEntity` ("à compléter"). Pas d'overrides ni de custom field values contextuelles. ### Front Sélecteur "Tout cloner / Structure seule" dans la page de création de machine, visible uniquement quand une machine source est choisie. ### Tests - `testCloneMachineStructureModeKeepsCategoriesWithoutConcreteEntities` : vérifie catégories conservées, entités concrètes vidées, source intacte. - `testCloneMachineFullModeStillCopiesConcreteEntities` : garde-fou non-régression du mode complet. - Suite `MachineContextCustomFieldTest` : 10/10 OK. ### Hors scope (documenté) - L'outil MCP `CloneMachineTool` reste full-only. - Pas de transaction ajoutée sur le clone (diff focalisé).
matthieu added 1 commit 2026-06-15 09:16:28 +00:00
Nouveau mode de clonage de machine via le paramètre `mode` de
POST /api/machines/{id}/clone :
- mode "full" (défaut) : comportement inchangé (clone complet)
- mode "structure" : ne recopie que les catégories des slots
  (modelType), composant/pièce/produit concrets laissés vides
  (slots à compléter), sans overrides ni custom field values

Front : sélecteur de mode dans la page de création de machine,
visible uniquement quand une machine source est choisie.
matthieu merged commit c3ad3b68a2 into develop 2026-06-15 09:31:43 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MALIO-DEV/Inventory#5