This repository has been archived on 2026-04-01. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Inventory_backend/README.md

188 lines
5.8 KiB
Markdown

# 🏭 API d'Inventaire Industriel
API NestJS pour la gestion d'inventaire industriel avec architecture hiérarchique des machines, composants et pièces.
## 🚀 Installation
### Prérequis
- Node.js 18+
- PostgreSQL
- Fedora Linux (pour le script d'installation automatique)
### Configuration rapide
1. **Installer les dépendances**
```bash
npm install
```
2. **Configurer la base de données PostgreSQL**
```bash
# Option 1: Installation automatique (Fedora)
chmod +x setup-database.sh
./setup-database.sh
# Option 2: Installation manuelle
sudo dnf install postgresql postgresql-server postgresql-contrib
sudo postgresql-setup --initdb
sudo systemctl start postgresql
sudo systemctl enable postgresql
# Créer la base de données
sudo -u postgres psql -c "CREATE DATABASE inventory_db;"
sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'password';"
```
3. **Générer le client Prisma et appliquer les migrations**
```bash
npx prisma generate
npx prisma migrate dev --name init
```
4. **Démarrer l'API**
```bash
npm run start:dev
```
L'API sera disponible sur `http://localhost:3000/api`
## 📊 Structure de la base de données
### Entités principales
- **Site** : Représente un site/usine
- **Machine** : Appartient à un site, peut contenir des composants et des pièces
- **Composant** : Peut appartenir à une machine ou à un autre composant (arborescence infinie)
- **Piece** : Peut appartenir à une machine ou à un composant
- **TypeMachine/TypeComposant/TypePiece** : Définissent l'architecture et les champs personnalisés
- **Document** : Fichiers/images liés aux éléments
- **CustomField/CustomFieldValue** : Champs personnalisés dynamiques
### Relations
```
Site → Machine → Composant → Sous-composant → ...
↓ ↓
Machine → Piece
Composant → Piece
```
## 🔌 API Endpoints
### Sites
- `GET /api/sites` - Liste tous les sites avec leur hiérarchie complète
- `GET /api/sites/:id` - Détails d'un site
- `POST /api/sites` - Créer un site
- `PATCH /api/sites/:id` - Modifier un site
- `DELETE /api/sites/:id` - Supprimer un site
### Machines
- `GET /api/machines` - Liste toutes les machines
- `GET /api/machines/:id` - Détails d'une machine
- `POST /api/machines` - Créer une machine
- `PATCH /api/machines/:id` - Modifier une machine
- `DELETE /api/machines/:id` - Supprimer une machine
### Composants
- `GET /api/composants` - Liste tous les composants
- `GET /api/composants/:id` - Détails d'un composant
- `POST /api/composants` - Créer un composant
- `PATCH /api/composants/:id` - Modifier un composant
- `DELETE /api/composants/:id` - Supprimer un composant
### Pièces
- `GET /api/pieces` - Liste toutes les pièces
- `GET /api/pieces/:id` - Détails d'une pièce
- `POST /api/pieces` - Créer une pièce
- `PATCH /api/pieces/:id` - Modifier une pièce
- `DELETE /api/pieces/:id` - Supprimer une pièce
### Types
- `GET /api/types/machines` - Liste tous les types de machines
- `GET /api/types/composants` - Liste tous les types de composants
- `GET /api/types/pieces` - Liste tous les types de pièces
- `POST /api/types/machines` - Créer un type de machine
- `POST /api/types/composants` - Créer un type de composant
- `POST /api/types/pieces` - Créer un type de pièce
### Documents
- `GET /api/documents` - Liste tous les documents
- `POST /api/documents` - Uploader un document
- `DELETE /api/documents/:id` - Supprimer un document
## 🛠️ Développement
### Scripts disponibles
```bash
npm run start # Démarrer en mode production
npm run start:dev # Démarrer en mode développement avec hot reload
npm run build # Compiler le projet
npm run test # Lancer les tests
npm run test:e2e # Lancer les tests end-to-end
npm run test:cov # Lancer les tests avec couverture
```
### Variables d'environnement
Créer un fichier `.env` :
```env
DATABASE_URL="postgresql://postgres:password@localhost:5432/inventory_db?schema=public"
PORT=3000
NODE_ENV=development
```
### Prisma
```bash
npx prisma studio # Interface graphique pour la base de données
npx prisma migrate dev # Créer et appliquer une migration
npx prisma generate # Régénérer le client Prisma
npx prisma db push # Pousser les changements sans migration
```
## 📁 Structure du projet
```
src/
├── sites/ # Module de gestion des sites
├── machines/ # Module de gestion des machines
├── composants/ # Module de gestion des composants
├── pieces/ # Module de gestion des pièces
├── documents/ # Module de gestion des documents
├── types/ # Module de gestion des types
├── prisma/ # Configuration Prisma
└── shared/ # DTOs et utilitaires partagés
```
## 🔧 Configuration Docker (optionnel)
Pour utiliser Docker avec PostgreSQL :
```bash
# Démarrer PostgreSQL avec Docker
docker run --name postgres-inventory \
-e POSTGRES_PASSWORD=password \
-e POSTGRES_DB=inventory_db \
-p 5432:5432 \
-d postgres:15
# Modifier le DATABASE_URL dans .env
DATABASE_URL="postgresql://postgres:password@localhost:5432/inventory_db?schema=public"
```
## 🎯 Fonctionnalités
- ✅ Architecture hiérarchique infinie (sites → machines → composants → sous-composants → pièces)
- ✅ Gestion des types avec champs personnalisés dynamiques
- ✅ Upload et gestion de documents
- ✅ Validation des données avec class-validator
- ✅ API REST complète avec NestJS
- ✅ Base de données PostgreSQL avec Prisma ORM
- ✅ Support CORS pour le frontend
- ✅ Structure modulaire et extensible
## 🚧 Prochaines étapes
- [ ] Implémentation complète des contrôleurs et services
- [ ] Gestion des champs personnalisés
- [ ] Upload de fichiers
- [ ] Tests unitaires et d'intégration
- [ ] Documentation Swagger/OpenAPI
- [ ] Frontend Nuxt 3