mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-21 22:18:17 +02:00
Add stock depletion tracking for products
Introduce new columns to the products table to track stock depletion status, including who depleted it and when. This enhances product management by distinguishing between expired and out-of-stock items. This change includes database migrations, Docker updates, and deployment scripts to ensure a smooth rollout. 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
20f7c977ff
commit
785105814a
5 files changed
+362
No files matched your search
Executable
+111
@@ -0,0 +1,111 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script de vérification de la migration DLC stock épuisé
|
||||
# Auteur: Système de gestion automatisé
|
||||
# Date: 2025-08-18
|
||||
|
||||
set -e
|
||||
|
||||
echo "🔍 [VERIFY] Vérification de la migration DLC stock épuisé..."
|
||||
|
||||
# Charger la configuration de la base de données
|
||||
if [ -f ".env.production" ]; then
|
||||
source .env.production
|
||||
echo "✅ [VERIFY] Configuration production chargée"
|
||||
else
|
||||
echo "⚠️ [VERIFY] Fichier .env.production non trouvé, utilisation des variables d'environnement"
|
||||
fi
|
||||
|
||||
# Construire l'URL de connexion si nécessaire
|
||||
if [ -z "$DATABASE_URL" ]; then
|
||||
if [ -n "$POSTGRES_USER" ] && [ -n "$POSTGRES_PASSWORD" ] && [ -n "$POSTGRES_DB" ]; then
|
||||
export DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@logiflow-db:5432/${POSTGRES_DB}"
|
||||
echo "🔧 [VERIFY] URL de base de données construite à partir des variables"
|
||||
else
|
||||
echo "❌ [VERIFY] Impossible de construire l'URL de base de données"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "🔗 [VERIFY] Test de connexion à la base de données..."
|
||||
if ! psql "$DATABASE_URL" -c "SELECT 1" > /dev/null 2>&1; then
|
||||
echo "❌ [VERIFY] Connexion à la base de données échouée"
|
||||
exit 1
|
||||
fi
|
||||
echo "✅ [VERIFY] Connexion à la base de données réussie"
|
||||
|
||||
# Vérifier l'existence de la table dlc_products
|
||||
echo "🔍 [VERIFY] Vérification de l'existence de la table dlc_products..."
|
||||
if ! psql "$DATABASE_URL" -tAc "SELECT EXISTS (SELECT FROM information_schema.tables WHERE table_schema='public' AND table_name='dlc_products');" | grep -q "t"; then
|
||||
echo "❌ [VERIFY] Table dlc_products n'existe pas"
|
||||
exit 1
|
||||
fi
|
||||
echo "✅ [VERIFY] Table dlc_products existe"
|
||||
|
||||
# Vérifier les colonnes stock épuisé
|
||||
echo "🔍 [VERIFY] Vérification des colonnes stock épuisé..."
|
||||
missing_columns=()
|
||||
|
||||
for column in "stock_epuise" "stock_epuise_by" "stock_epuise_at"; do
|
||||
if psql "$DATABASE_URL" -tAc "SELECT EXISTS (SELECT FROM information_schema.columns WHERE table_name='dlc_products' AND column_name='$column');" | grep -q "f"; then
|
||||
missing_columns+=("$column")
|
||||
fi
|
||||
done
|
||||
|
||||
if [ ${#missing_columns[@]} -gt 0 ]; then
|
||||
echo "❌ [VERIFY] Colonnes manquantes: ${missing_columns[*]}"
|
||||
echo "🔧 [VERIFY] La migration doit être exécutée"
|
||||
exit 1
|
||||
else
|
||||
echo "✅ [VERIFY] Toutes les colonnes stock épuisé sont présentes"
|
||||
fi
|
||||
|
||||
# Vérifier les types de données
|
||||
echo "🔍 [VERIFY] Vérification des types de données..."
|
||||
psql "$DATABASE_URL" -c "
|
||||
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;
|
||||
"
|
||||
|
||||
# Vérifier l'index
|
||||
echo "🔍 [VERIFY] Vérification de l'index stock épuisé..."
|
||||
if psql "$DATABASE_URL" -tAc "SELECT EXISTS (SELECT FROM pg_indexes WHERE tablename='dlc_products' AND indexname='idx_dlc_products_stock_epuise');" | grep -q "t"; then
|
||||
echo "✅ [VERIFY] Index idx_dlc_products_stock_epuise existe"
|
||||
else
|
||||
echo "⚠️ [VERIFY] Index idx_dlc_products_stock_epuise manquant"
|
||||
fi
|
||||
|
||||
# Test d'une requête simple
|
||||
echo "🔍 [VERIFY] Test d'une requête avec les nouveaux champs..."
|
||||
if psql "$DATABASE_URL" -c "SELECT stock_epuise, stock_epuise_by, stock_epuise_at FROM dlc_products LIMIT 1;" > /dev/null 2>&1; then
|
||||
echo "✅ [VERIFY] Requête avec les nouveaux champs réussie"
|
||||
else
|
||||
echo "❌ [VERIFY] Erreur lors de la requête avec les nouveaux champs"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Compter les produits par statut de stock
|
||||
echo "🔍 [VERIFY] Statistiques des produits par statut de stock..."
|
||||
psql "$DATABASE_URL" -c "
|
||||
SELECT
|
||||
CASE
|
||||
WHEN stock_epuise = true THEN 'stock_epuise'
|
||||
WHEN stock_epuise = false THEN 'stock_disponible'
|
||||
ELSE 'indetermine'
|
||||
END as statut_stock,
|
||||
COUNT(*) as nombre_produits
|
||||
FROM dlc_products
|
||||
GROUP BY stock_epuise
|
||||
ORDER BY stock_epuise;
|
||||
"
|
||||
|
||||
echo ""
|
||||
echo "✅ [VERIFY] Vérification de la migration DLC terminée avec succès!"
|
||||
echo "🚀 [VERIFY] L'application peut maintenant utiliser les fonctionnalités stock épuisé"
|
||||
Reference in new issue
Block a user