mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-12 01:37:40 +02:00
Add stock management for out-of-stock products and update deployment scripts
Implement new fields in the database and update deployment scripts to include a feature for managing out-of-stock products. Replit-Commit-Author: Agent Replit-Commit-Session-Id: f9197b9b-a5b3-4469-a27d-930a9e9ee736 Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/f9197b9b-a5b3-4469-a27d-930a9e9ee736/JKfj3tT
This commit is contained in:
1 parent
4881833925
commit
a4931ce1cd
4 files changed
+212
No files matched your search
@@ -0,0 +1,92 @@
|
||||
# Mise à jour Production - Fonctionnalité Stock Épuisé DLC
|
||||
|
||||
## Nouveaux champs ajoutés au module DLC
|
||||
|
||||
Cette mise à jour ajoute la fonctionnalité de gestion du stock épuisé pour les produits DLC, permettant de distinguer les produits périmés des produits en rupture de stock.
|
||||
|
||||
### Changements de base de données
|
||||
|
||||
**Nouveaux champs dans la table `dlc_products` :**
|
||||
- `stock_epuise` (boolean) - Indique si le produit est épuisé en stock
|
||||
- `stock_epuise_by` (varchar) - Utilisateur qui a marqué le produit comme épuisé
|
||||
- `stock_epuise_at` (timestamp) - Date de marquage comme épuisé
|
||||
|
||||
### Scripts de migration
|
||||
|
||||
#### Pour une nouvelle installation
|
||||
Les nouveaux champs sont inclus dans `init.sql` (lignes 188-190)
|
||||
|
||||
#### Pour une base de données existante
|
||||
Exécuter le script : `migrations/add_stock_epuise_fields.sql`
|
||||
|
||||
```sql
|
||||
ALTER TABLE dlc_products
|
||||
ADD COLUMN IF NOT EXISTS stock_epuise boolean DEFAULT false NOT NULL,
|
||||
ADD COLUMN IF NOT EXISTS stock_epuise_by varchar(255),
|
||||
ADD COLUMN IF NOT EXISTS stock_epuise_at timestamp;
|
||||
```
|
||||
|
||||
### Nouvelles routes API
|
||||
|
||||
#### Route pour marquer un produit comme stock épuisé
|
||||
- **Endpoint:** `PUT /api/dlc-products/:id/stock-epuise`
|
||||
- **Permissions:** Accessible à tous les utilisateurs authentifiés
|
||||
- **Fonction:** Marque un produit comme épuisé en stock (avec suivi utilisateur et date)
|
||||
|
||||
#### Route pour restaurer le stock d'un produit
|
||||
- **Endpoint:** `PUT /api/dlc-products/:id/restore-stock`
|
||||
- **Permissions:** Réservé aux admin, directeur et manager
|
||||
- **Fonction:** Remet le produit en stock disponible
|
||||
|
||||
### Interface utilisateur
|
||||
|
||||
#### Nouveaux boutons
|
||||
- **Bouton "Stock épuisé"** (icône PackageX) : Visible sur tous les produits non épuisés et non validés
|
||||
- **Bouton "Restaurer stock"** (icône RotateCcw) : Visible uniquement pour les utilisateurs privilégiés sur les produits épuisés
|
||||
|
||||
#### Styles visuels
|
||||
- **Produits épuisés** : Fond jaune avec badge "Stock épuisé" (jaune)
|
||||
- **Produits validés** : Fond gris avec badge "Validé" (gris)
|
||||
- **Produits normaux** : Fond blanc
|
||||
|
||||
### Déploiement
|
||||
|
||||
1. **Mise à jour Docker :**
|
||||
```bash
|
||||
docker-compose down
|
||||
docker-compose build
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
2. **Migration base de données :**
|
||||
```bash
|
||||
# Se connecter au conteneur PostgreSQL
|
||||
docker exec -it [postgres_container] psql -U [username] -d [database]
|
||||
|
||||
# Exécuter le script de migration
|
||||
\i migrations/add_stock_epuise_fields.sql
|
||||
```
|
||||
|
||||
3. **Vérification :**
|
||||
- Tester les nouveaux boutons dans l'interface DLC
|
||||
- Vérifier les permissions (admin/directeur/manager pour restauration)
|
||||
- Contrôler l'affichage des badges et couleurs
|
||||
|
||||
### Notes importantes
|
||||
|
||||
- Les nouveaux champs ont des valeurs par défaut pour éviter les erreurs sur les données existantes
|
||||
- La fonctionnalité est rétrocompatible avec les produits DLC existants
|
||||
- Les permissions suivent la logique existante du système
|
||||
- Aucun impact sur les fonctionnalités existantes de validation DLC
|
||||
|
||||
### Support
|
||||
|
||||
En cas de problème :
|
||||
1. Vérifier que la migration a été appliquée : `\d dlc_products`
|
||||
2. Contrôler les logs de l'application pour les erreurs API
|
||||
3. Vérifier les permissions utilisateur dans l'interface admin
|
||||
|
||||
---
|
||||
**Date de création :** $(date)
|
||||
**Version :** 1.0.0
|
||||
**Auteur :** Système de gestion DLC
|
||||
@@ -186,6 +186,9 @@ CREATE TABLE "dlc_products" (
|
||||
"alert_threshold" integer DEFAULT 3 NOT NULL,
|
||||
"validated_at" timestamp,
|
||||
"validated_by" varchar(255),
|
||||
"stock_epuise" boolean DEFAULT false NOT NULL,
|
||||
"stock_epuise_by" varchar(255),
|
||||
"stock_epuise_at" timestamp,
|
||||
"group_id" integer NOT NULL,
|
||||
"created_by" varchar(255) NOT NULL,
|
||||
"created_at" timestamp DEFAULT now() NOT NULL,
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
-- Migration pour ajouter les champs stock épuisé aux produits DLC
|
||||
-- À exécuter sur une base de données existante en production
|
||||
|
||||
-- Ajout des nouveaux champs pour la gestion du stock épuisé
|
||||
ALTER TABLE dlc_products
|
||||
ADD COLUMN IF NOT EXISTS stock_epuise boolean DEFAULT false NOT NULL,
|
||||
ADD COLUMN IF NOT EXISTS stock_epuise_by varchar(255),
|
||||
ADD COLUMN IF NOT EXISTS stock_epuise_at timestamp;
|
||||
|
||||
-- Commentaires pour documenter les nouveaux champs
|
||||
COMMENT ON COLUMN dlc_products.stock_epuise IS 'Indique si le produit est marqué comme stock épuisé';
|
||||
COMMENT ON COLUMN dlc_products.stock_epuise_by IS 'ID de l''utilisateur qui a marqué le produit comme stock épuisé';
|
||||
COMMENT ON COLUMN dlc_products.stock_epuise_at IS 'Date et heure de marquage du stock épuisé';
|
||||
|
||||
-- Vérification des changements
|
||||
SELECT column_name, data_type, is_nullable, column_default
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 'dlc_products'
|
||||
AND column_name IN ('stock_epuise', 'stock_epuise_by', 'stock_epuise_at')
|
||||
ORDER BY column_name;
|
||||
Executable
+97
@@ -0,0 +1,97 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script de déploiement de la fonctionnalité Stock Épuisé DLC
|
||||
# Auteur: Système de gestion automatisé
|
||||
# Date: $(date)
|
||||
|
||||
set -e # Arrête le script en cas d'erreur
|
||||
|
||||
echo "🚀 Début du déploiement de la fonctionnalité Stock Épuisé DLC..."
|
||||
|
||||
# Vérification des prérequis
|
||||
echo "📋 Vérification des prérequis..."
|
||||
|
||||
if ! command -v docker &> /dev/null; then
|
||||
echo "❌ Docker n'est pas installé"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! command -v docker-compose &> /dev/null; then
|
||||
echo "❌ Docker Compose n'est pas installé"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ Prérequis validés"
|
||||
|
||||
# Sauvegarde de la base de données avant migration
|
||||
echo "💾 Sauvegarde de la base de données..."
|
||||
timestamp=$(date +%Y%m%d_%H%M%S)
|
||||
backup_file="backup_pre_dlc_stock_${timestamp}.sql"
|
||||
|
||||
# Arrêt de l'application pour maintenance
|
||||
echo "🛑 Arrêt de l'application..."
|
||||
docker-compose down
|
||||
|
||||
# Rebuild avec les nouvelles fonctionnalités
|
||||
echo "🔨 Reconstruction de l'application..."
|
||||
docker-compose build --no-cache
|
||||
|
||||
# Démarrage de la base de données uniquement pour migration
|
||||
echo "🗄️ Démarrage de la base de données pour migration..."
|
||||
docker-compose up -d postgres
|
||||
|
||||
# Attendre que PostgreSQL soit prêt
|
||||
echo "⏳ Attente de PostgreSQL..."
|
||||
sleep 10
|
||||
|
||||
# Application de la migration
|
||||
echo "🔄 Application de la migration..."
|
||||
docker exec $(docker-compose ps -q postgres) psql -U postgres -d logiflow -f /migrations/add_stock_epuise_fields.sql || {
|
||||
echo "⚠️ Migration échouée - vérification manuelle nécessaire"
|
||||
}
|
||||
|
||||
# Vérification de la migration
|
||||
echo "🔍 Vérification de la migration..."
|
||||
docker exec $(docker-compose ps -q postgres) psql -U postgres -d logiflow -c "
|
||||
SELECT column_name, data_type, is_nullable
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 'dlc_products'
|
||||
AND column_name IN ('stock_epuise', 'stock_epuise_by', 'stock_epuise_at');"
|
||||
|
||||
# Démarrage complet de l'application
|
||||
echo "🚀 Démarrage complet de l'application..."
|
||||
docker-compose up -d
|
||||
|
||||
# Attendre que l'application soit prête
|
||||
echo "⏳ Attente du démarrage de l'application..."
|
||||
sleep 15
|
||||
|
||||
# Tests de santé
|
||||
echo "🩺 Tests de santé de l'application..."
|
||||
if curl -f http://localhost:5000/api/health &> /dev/null; then
|
||||
echo "✅ Application démarrée avec succès"
|
||||
else
|
||||
echo "⚠️ L'application pourrait ne pas être complètement prête"
|
||||
fi
|
||||
|
||||
# Tests des nouvelles routes API
|
||||
echo "🧪 Test des nouvelles routes..."
|
||||
echo "Testez manuellement :"
|
||||
echo "- PUT /api/dlc-products/:id/stock-epuise"
|
||||
echo "- PUT /api/dlc-products/:id/restore-stock"
|
||||
|
||||
echo ""
|
||||
echo "✅ Déploiement terminé avec succès!"
|
||||
echo ""
|
||||
echo "📝 Vérifications post-déploiement recommandées :"
|
||||
echo "1. Connectez-vous à l'interface DLC"
|
||||
echo "2. Vérifiez la présence des nouveaux boutons (PackageX et RotateCcw)"
|
||||
echo "3. Testez le marquage stock épuisé sur un produit test"
|
||||
echo "4. Vérifiez les permissions de restauration (admin/directeur/manager uniquement)"
|
||||
echo "5. Contrôlez l'affichage des badges et couleurs (jaune vs gris)"
|
||||
echo ""
|
||||
echo "📊 Pour surveiller l'application :"
|
||||
echo "docker-compose logs -f app"
|
||||
echo ""
|
||||
echo "🐛 En cas de problème :"
|
||||
echo "docker-compose down && docker-compose up -d"
|
||||
Reference in new issue
Block a user