400 lines
18 KiB
Markdown
400 lines
18 KiB
Markdown
# Fonctionnement de l'application Inventory
|
|
|
|
## 1. A quoi sert cette application ?
|
|
|
|
Inventory est une application de **gestion d'inventaire industriel**. Elle permet de suivre et documenter l'ensemble du parc de machines d'une entreprise, avec tous les elements qui les composent : composants, pieces detachees et produits consommables.
|
|
|
|
L'objectif principal est d'avoir une **vue complete et structuree** de chaque machine : quels composants elle contient, quelles pieces sont montees dessus, quels produits sont utilises, qui les fabrique, combien ils coutent, et toute la documentation associee (manuels, fiches techniques, etc.).
|
|
|
|
---
|
|
|
|
## 2. Les entites principales
|
|
|
|
L'application s'articule autour de 7 entites fondamentales :
|
|
|
|
```
|
|
+-----------------------------------------------------------+
|
|
| SITE |
|
|
| (usine, atelier, entrepot...) |
|
|
| - nom, adresse, contact, telephone, ville, code postal |
|
|
| - couleur (pour identification visuelle) |
|
|
+-----------------------------------------------------------+
|
|
|
|
|
| contient des
|
|
v
|
|
+-----------------------------------------------------------+
|
|
| MACHINE |
|
|
| (machine industrielle sur un site) |
|
|
| - nom (unique), reference, prix |
|
|
| - rattachee a 1 site obligatoirement |
|
|
| - peut avoir plusieurs fournisseurs/constructeurs |
|
|
+-----------------------------------------------------------+
|
|
|
|
|
| est composee de
|
|
v
|
|
+-------------------+ +-------------------+ +-------------------+
|
|
| COMPOSANT | | PIECE | | PRODUIT |
|
|
| (element fonct.) | | (piece detachee) | | (consommable) |
|
|
| - nom, ref, desc | | - nom, ref, desc | | - nom, ref |
|
|
| - prix | | - prix | | - prix fournisseur |
|
|
| - categorie | | - categorie | | - categorie |
|
|
| - fournisseurs | | - fournisseurs | | - fournisseurs |
|
|
+-------------------+ +-------------------+ +-------------------+
|
|
```
|
|
|
|
### Site
|
|
Un **site** represente un lieu physique : une usine, un atelier, un entrepot. Chaque site possede un nom, une adresse complete et un contact. Toutes les machines sont obligatoirement rattachees a un site.
|
|
|
|
### Machine
|
|
Une **machine** est l'entite centrale. C'est un equipement industriel installe sur un site. Chaque machine a un nom unique, une reference optionnelle et un prix. Elle contient une structure hierarchique de composants, pieces et produits.
|
|
|
|
### Composant
|
|
Un **composant** represente un element fonctionnel d'une machine (ex : un moteur, un systeme hydraulique, un automate). Un composant peut lui-meme contenir des sous-composants, des pieces et des produits, formant une structure arborescente.
|
|
|
|
### Piece
|
|
Une **piece** est une piece detachee (ex : un roulement, un joint, un filtre). Les pieces peuvent etre rattachees directement a une machine ou a un composant au sein d'une machine.
|
|
|
|
### Produit
|
|
Un **produit** est un consommable ou article fournisseur (ex : huile, lubrifiant, boulon specifique). Comme les pieces, les produits peuvent etre associes a une machine, a un composant ou a une piece.
|
|
|
|
### Constructeur (Fournisseur)
|
|
Un **constructeur** est un fabricant ou fournisseur. C'est un referentiel partage : le meme fournisseur peut etre associe a des machines, des composants, des pieces et des produits. Chaque fournisseur a un nom, un email et un telephone.
|
|
|
|
### Categorie (ModelType)
|
|
Une **categorie** (appelee ModelType dans le systeme) permet de classifier les composants, les pieces et les produits. Le systeme de categories est explique en detail dans la section suivante.
|
|
|
|
---
|
|
|
|
## 3. Le systeme de categories (ModelType)
|
|
|
|
Les categories sont un element cle de l'application. Elles servent a **classifier ET a structurer** les elements de l'inventaire.
|
|
|
|
### Trois familles de categories
|
|
|
|
Il existe trois familles de categories, une par type d'element :
|
|
|
|
| Famille | S'applique aux | Exemples |
|
|
|-------------|----------------|-----------------------------------------|
|
|
| COMPONENT | Composants | "Moteur electrique", "Systeme hydraulique" |
|
|
| PIECE | Pieces | "Roulement", "Joint torique", "Filtre" |
|
|
| PRODUCT | Produits | "Huile moteur", "Graisse", "Boulon M8" |
|
|
|
|
### Le squelette (skeleton) : la structure imposee
|
|
|
|
La vraie puissance des categories de composants reside dans leur **squelette**. Quand on cree une categorie de composant, on definit un modele qui impose :
|
|
|
|
- **Quelles pieces** sont necessaires (par type de piece)
|
|
- **Quels produits** sont necessaires (par type de produit)
|
|
- **Quels sous-composants** sont necessaires (par type de composant)
|
|
- **Quels champs personnalises** doivent etre remplis
|
|
|
|
**Exemple concret :** La categorie "Moteur electrique" pourrait imposer :
|
|
- 1 piece de type "Roulement"
|
|
- 1 piece de type "Joint"
|
|
- 1 produit de type "Huile moteur"
|
|
- 1 sous-composant de type "Variateur"
|
|
- Des champs personnalises : "Puissance (kW)", "Vitesse (tr/min)", "Tension (V)"
|
|
|
|
```
|
|
Categorie "Moteur electrique" (squelette)
|
|
|
|
|
|-- Piece requise : type "Roulement" --> l'utilisateur choisira quel roulement precis
|
|
|-- Piece requise : type "Joint" --> l'utilisateur choisira quel joint precis
|
|
|-- Produit requis : type "Huile moteur" --> l'utilisateur choisira quelle huile precise
|
|
|-- Sous-composant : type "Variateur" --> l'utilisateur choisira quel variateur precis
|
|
|-- Champ personnalise : "Puissance (kW)" --> l'utilisateur saisira la valeur
|
|
|-- Champ personnalise : "Tension (V)" --> l'utilisateur saisira la valeur
|
|
```
|
|
|
|
Les categories de pieces peuvent elles aussi definir des produits requis et des champs personnalises. Les categories de produits peuvent definir des champs personnalises.
|
|
|
|
### Champs personnalises
|
|
|
|
Les champs personnalises permettent d'ajouter des informations specifiques selon la categorie. Chaque champ a :
|
|
- Un **nom** (ex : "Puissance")
|
|
- Un **type** (texte, nombre, date, etc.)
|
|
- Un caractere **obligatoire ou non**
|
|
- Des **options** possibles (pour les listes deroulantes)
|
|
- Une **valeur par defaut**
|
|
- Un **ordre d'affichage**
|
|
|
|
Les machines disposent aussi de champs personnalises, mais ceux-ci sont definis directement sur chaque machine (et non via une categorie).
|
|
|
|
---
|
|
|
|
## 4. Le cycle de vie d'un composant
|
|
|
|
Voici les etapes typiques de creation et utilisation d'un composant :
|
|
|
|
```
|
|
1. CREATION 2. SELECTION CATEGORIE 3. REMPLISSAGE SQUELETTE
|
|
+-------------------+ +------------------------+ +---------------------------+
|
|
| Saisir : | | Choisir la categorie : | | Le squelette apparait : |
|
|
| - Nom | ----> | "Moteur electrique" | --> | - Piece "Roulement" : [?] |
|
|
| - Reference | | | | - Piece "Joint" : [?] |
|
|
| - Description | | Le systeme charge le | | - Produit "Huile" : [?] |
|
|
| - Prix | | squelette associe | | |
|
|
| - Fournisseurs | +------------------------+ | Choisir dans le catalogue |
|
|
+-------------------+ | chaque element concret |
|
|
+---------------------------+
|
|
|
|
|
5. DOCUMENTS 4. CHAMPS PERSONNALISES
|
|
+---------------------+ +-----------------------------+
|
|
| Joindre des fichiers | <---- | Remplir les champs definis |
|
|
| - Manuels PDF | | par la categorie : |
|
|
| - Fiches techniques | | - Puissance : 15 kW |
|
|
| - Photos | | - Tension : 400 V |
|
|
| - Schemas | | - Vitesse : 1500 tr/min |
|
|
+---------------------+ +-----------------------------+
|
|
```
|
|
|
|
**Etape 1 - Creation :** L'utilisateur saisit les informations de base du composant (nom, reference, description, prix) et selectionne un ou plusieurs fournisseurs.
|
|
|
|
**Etape 2 - Selection de la categorie :** L'utilisateur choisit la categorie du composant (ex : "Moteur electrique"). Le systeme charge alors le squelette defini pour cette categorie.
|
|
|
|
**Etape 3 - Remplissage du squelette :** Des "emplacements" (slots) apparaissent pour chaque element requis par le squelette. L'utilisateur selectionne dans le catalogue existant les pieces, produits et sous-composants concrets qui correspondent a chaque emplacement.
|
|
|
|
**Etape 4 - Champs personnalises :** L'utilisateur remplit les champs personnalises definis par la categorie (puissance, tension, etc.).
|
|
|
|
**Etape 5 - Documents :** L'utilisateur peut joindre des fichiers au composant : manuels PDF, fiches techniques, photos, schemas...
|
|
|
|
Ce meme principe s'applique aux pieces (qui peuvent avoir des produits associes et des champs personnalises definis par leur categorie) et aux produits (qui peuvent avoir des champs personnalises).
|
|
|
|
---
|
|
|
|
## 5. Les roles utilisateurs
|
|
|
|
L'application utilise 4 niveaux de droits, organises en hierarchie. Chaque role herite automatiquement des droits du role inferieur :
|
|
|
|
```
|
|
+------------------------------------------------------------------+
|
|
| ROLE_ADMIN |
|
|
| Tout faire + gerer les utilisateurs (creer, modifier, supprimer |
|
|
| des comptes, attribuer des roles) |
|
|
+------------------------------------------------------------------+
|
|
| herite de
|
|
v
|
|
+------------------------------------------------------------------+
|
|
| ROLE_GESTIONNAIRE |
|
|
| Creer, modifier et supprimer les machines, composants, pieces, |
|
|
| produits, sites, fournisseurs, categories, documents, |
|
|
| commentaires. C'est le role d'edition principal. |
|
|
+------------------------------------------------------------------+
|
|
| herite de
|
|
v
|
|
+------------------------------------------------------------------+
|
|
| ROLE_VIEWER |
|
|
| Consulter tout l'inventaire en lecture seule : naviguer dans |
|
|
| les machines, voir les structures, les catalogues, l'historique |
|
|
| et les documents. |
|
|
+------------------------------------------------------------------+
|
|
| herite de
|
|
v
|
|
+------------------------------------------------------------------+
|
|
| ROLE_USER |
|
|
| Role de base attribue automatiquement a tout utilisateur |
|
|
| connecte. Acces minimal. |
|
|
+------------------------------------------------------------------+
|
|
```
|
|
|
|
En resume :
|
|
- **Admin** : fait tout, y compris gerer les comptes utilisateurs
|
|
- **Gestionnaire** : cree et modifie les donnees de l'inventaire
|
|
- **Viewer** : consulte l'inventaire sans pouvoir le modifier
|
|
- **User** : role de base, acces minimal
|
|
|
|
---
|
|
|
|
## 6. Les fonctionnalites cles
|
|
|
|
### Catalogues
|
|
|
|
L'application propose des **catalogues** pour chaque type d'element :
|
|
- **Catalogue des composants** : liste tous les composants avec recherche par nom, reference ou categorie
|
|
- **Catalogue des pieces** : liste toutes les pieces detachees
|
|
- **Catalogue des produits** : liste tous les produits fournisseurs
|
|
- **Liste des machines** : toutes les machines, organisees par site
|
|
- **Liste des sites** : tous les sites industriels
|
|
- **Liste des fournisseurs** : tous les constructeurs/fournisseurs
|
|
|
|
Chaque catalogue offre des fonctions de **recherche**, de **tri** et de **pagination**.
|
|
|
|
### Recherche
|
|
|
|
La recherche est disponible dans tous les catalogues et permet de filtrer par :
|
|
- Nom (recherche partielle, insensible a la casse)
|
|
- Reference (recherche partielle)
|
|
- Categorie (filtre exact ou par nom)
|
|
|
|
### Historique et audit
|
|
|
|
Chaque modification dans l'application est **tracee automatiquement**. Le systeme enregistre :
|
|
- **Qui** a fait la modification (quel utilisateur)
|
|
- **Quand** la modification a ete faite
|
|
- **Quoi** a ete modifie (les champs avant/apres)
|
|
- **Sur quel element** (machine, composant, piece, produit...)
|
|
|
|
On peut consulter :
|
|
- L'**historique d'une entite** : toutes les modifications apportees a une machine, un composant, etc.
|
|
- Le **journal d'activite global** : toutes les modifications recentes dans l'application
|
|
|
|
### Commentaires
|
|
|
|
Les utilisateurs peuvent **commenter** n'importe quel element de l'inventaire (machines, composants, pieces, produits, categories). Les commentaires ont un systeme de **resolution** : un commentaire ouvert peut etre marque comme "resolu" par un gestionnaire. Un compteur de commentaires non resolus est disponible.
|
|
|
|
### Documents
|
|
|
|
Des fichiers peuvent etre joints a toutes les entites principales :
|
|
- **Sites** : plans, reglements
|
|
- **Machines** : manuels, fiches techniques
|
|
- **Composants** : documentations constructeur
|
|
- **Pieces** : plans de pieces, specifications
|
|
- **Produits** : fiches de donnees de securite, catalogues
|
|
|
|
Les fichiers sont uploades via l'interface et peuvent etre consultes ou telecharges a tout moment. L'application gere differents formats : PDF, images, etc.
|
|
|
|
### Clonage de machines
|
|
|
|
Quand une nouvelle machine est identique ou similaire a une existante, il est possible de **cloner une machine**. Le clonage copie :
|
|
- Les champs personnalises et leurs valeurs
|
|
- Toute la structure : les liens vers les composants, pieces et produits
|
|
- La hierarchie (quel composant contient quelles pieces, etc.)
|
|
|
|
L'utilisateur choisit un nouveau nom et un site de destination. La machine clonee peut ensuite etre modifiee independamment de l'originale.
|
|
|
|
---
|
|
|
|
## 7. La structure des machines
|
|
|
|
### Vue d'ensemble
|
|
|
|
Chaque machine possede une **structure hierarchique** qui decrit de quoi elle est composee. Cette structure est une arborescence :
|
|
|
|
```
|
|
Machine "Presse hydraulique PH-200"
|
|
|
|
|
|-- Composant "Moteur principal M1"
|
|
| |-- Piece "Roulement SKF 6205" (quantite: 2)
|
|
| | |-- Produit "Graisse SKF LGMT2"
|
|
| |-- Piece "Joint Viton DN50"
|
|
| |-- Produit "Huile Total Azolla ZS 46"
|
|
| |-- Sous-composant "Variateur ABB ACS580"
|
|
| |-- Piece "Fusible 63A"
|
|
| |-- Produit "Pate thermique"
|
|
|
|
|
|-- Composant "Groupe hydraulique GH-01"
|
|
| |-- Piece "Filtre Parker 926169Q"
|
|
| |-- Piece "Verin Bosch CDT3" (quantite: 4)
|
|
| |-- Produit "Huile hydraulique HLP 46"
|
|
|
|
|
|-- Piece "Courroie Gates PowerGrip" (piece directement sur la machine)
|
|
|-- Produit "Boulon M12x50 Inox" (produit directement sur la machine)
|
|
```
|
|
|
|
### Les liens (links)
|
|
|
|
Les elements ne sont pas directement "dans" la machine. Ils y sont rattaches par des **liens** :
|
|
|
|
- **MachineComponentLink** : rattache un composant a une machine
|
|
- **MachinePieceLink** : rattache une piece a une machine
|
|
- **MachineProductLink** : rattache un produit a une machine
|
|
|
|
Ces liens permettent :
|
|
- De definir la **hierarchie** : un composant peut etre parent d'une piece ou d'un produit, un sous-composant peut etre enfant d'un autre composant
|
|
- De specifier une **quantite** (ex : 4 verins identiques)
|
|
- De faire des **surcharges** : modifier le nom, la reference ou le prix d'un element specifiquement dans le contexte de cette machine, sans modifier l'element du catalogue
|
|
|
|
### Hierarchie parent-enfant
|
|
|
|
```
|
|
MachineComponentLink (composant dans la machine)
|
|
|
|
|
|-- parentLink --> null (composant racine, directement dans la machine)
|
|
| ou
|
|
|-- parentLink --> autre MachineComponentLink (sous-composant)
|
|
|
|
|
|-- pieceLinks --> MachinePieceLink[] (pieces de ce composant)
|
|
|-- productLinks --> MachineProductLink[] (produits de ce composant)
|
|
|
|
MachinePieceLink (piece dans la machine)
|
|
|
|
|
|-- parentLink --> MachineComponentLink (piece rattachee a un composant)
|
|
| ou
|
|
|-- parentLink --> null (piece directement sur la machine)
|
|
|
|
|
|-- productLinks --> MachineProductLink[] (produits de cette piece)
|
|
```
|
|
|
|
### Catalogue vs. Structure machine
|
|
|
|
Un point important : les **composants, pieces et produits existent dans un catalogue global**. Quand on les ajoute a une machine, on cree un lien vers l'element du catalogue. Le meme composant du catalogue peut donc etre utilise dans plusieurs machines.
|
|
|
|
Les surcharges (nom, reference, prix) permettent d'adapter les informations au contexte d'une machine specifique sans modifier la fiche catalogue.
|
|
|
|
```
|
|
CATALOGUE (reference globale) MACHINE (utilisation specifique)
|
|
+-------------------------+ +--------------------------------+
|
|
| Composant "Moteur 15kW" | | Lien vers "Moteur 15kW" |
|
|
| Ref: MOT-15-01 | <-------- | Surcharge nom: "Moteur gauche" |
|
|
| Prix: 2500 EUR | | Surcharge prix: 2200 EUR |
|
|
+-------------------------+ +--------------------------------+
|
|
```
|
|
|
|
---
|
|
|
|
## Schemas recapitulatifs
|
|
|
|
### Relations entre entites
|
|
|
|
```
|
|
+--------+
|
|
| Site |
|
|
+--------+
|
|
|
|
|
contient (1..N)
|
|
|
|
|
+-----------+
|
|
| Machine |------------ Fournisseurs (N..N)
|
|
+-----------+
|
|
/ | \
|
|
/ | \
|
|
Composants Pieces Produits
|
|
(via liens) (via liens) (via liens)
|
|
|
|
+-----------+ +--------+ +---------+
|
|
| Composant | | Piece | | Produit |
|
|
+-----------+ +--------+ +---------+
|
|
| | |
|
|
|-- Categorie |-- Categorie |-- Categorie
|
|
|-- Fournisseurs -- Fournisseurs -- Fournisseurs
|
|
|-- Documents |-- Documents |-- Documents
|
|
|-- Champs perso -- Champs perso -- Champs perso
|
|
|
|
|
|-- Sous-composants (arborescence)
|
|
|-- Pieces (slots depuis le squelette)
|
|
|-- Produits (slots depuis le squelette)
|
|
```
|
|
|
|
### Flux de creation typique
|
|
|
|
```
|
|
1. Creer les SITES
|
|
|
|
|
2. Creer les CATEGORIES (avec leurs squelettes)
|
|
|
|
|
3. Creer les FOURNISSEURS
|
|
|
|
|
4. Creer les PRODUITS (en les categorisant)
|
|
|
|
|
5. Creer les PIECES (en les categorisant, en leur associant des produits)
|
|
|
|
|
6. Creer les COMPOSANTS (en choisissant une categorie,
|
|
| en remplissant le squelette avec des pieces/produits/sous-composants)
|
|
|
|
|
7. Creer les MACHINES (sur un site)
|
|
|
|
|
8. STRUCTURER les machines (ajouter composants, pieces, produits)
|
|
|
|
|
9. DOCUMENTER (joindre des fichiers a chaque element)
|
|
```
|