From f55a7a6217dcdbd3888246e6fda8661b99091147 Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Mon, 18 Aug 2025 09:37:56 +0000 Subject: [PATCH] Add missing stock status columns and documentation for DLC products Add `stock_epuise`, `stock_epuise_by`, and `stock_epuise_at` columns to the `dlc_products` table, including SQL migration scripts and production deployment instructions to resolve a missing column error. 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/i2gFnxm --- COMMANDES_PRODUCTION.md | 57 ++++++++++++++++++++++++++++++ MIGRATION_PRODUCTION_URGENTE.sql | 60 ++++++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 COMMANDES_PRODUCTION.md create mode 100644 MIGRATION_PRODUCTION_URGENTE.sql diff --git a/COMMANDES_PRODUCTION.md b/COMMANDES_PRODUCTION.md new file mode 100644 index 0000000..5f93569 --- /dev/null +++ b/COMMANDES_PRODUCTION.md @@ -0,0 +1,57 @@ +# MIGRATION PRODUCTION URGENTE - DLC Stock Épuisé + +## Problème +``` +Error: column dlc_products.stock_epuise does not exist +``` + +## Solution Rapide + +### Option 1: Migration SQL directe +```bash +# Connectez-vous à votre base PostgreSQL de production +psql -h [VOTRE_HOST] -U [VOTRE_USER] -d [VOTRE_DB] -f MIGRATION_PRODUCTION_URGENTE.sql +``` + +### Option 2: Commandes manuelles +```sql +-- Connectez-vous à votre base et exécutez : +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; + +CREATE INDEX IF NOT EXISTS idx_dlc_products_stock_epuise ON dlc_products(stock_epuise); +``` + +### Option 3: Via Docker (si vous utilisez notre docker-compose) +```bash +# Sur votre serveur de production +./scripts/production-deploy-dlc-stock.sh +``` + +## Vérification après migration +```sql +SELECT EXISTS ( + SELECT FROM information_schema.columns + WHERE table_name='dlc_products' + AND column_name='stock_epuise' +); +``` + +Résultat attendu: `t` (true) + +## Redémarrage application +Après la migration, redémarrez votre application : +```bash +# Si Docker +docker-compose restart logiflow + +# Ou selon votre setup +systemctl restart votre-service +``` + +## Vérification fonctionnelle +1. L'erreur "column does not exist" doit disparaître +2. L'interface DLC doit afficher les boutons PackageX et RotateCcw +3. Les fonctionnalités stock épuisé doivent être opérationnelles \ No newline at end of file diff --git a/MIGRATION_PRODUCTION_URGENTE.sql b/MIGRATION_PRODUCTION_URGENTE.sql new file mode 100644 index 0000000..b8c96ef --- /dev/null +++ b/MIGRATION_PRODUCTION_URGENTE.sql @@ -0,0 +1,60 @@ +-- MIGRATION URGENTE PRODUCTION - DLC Stock Épuisé +-- Date: 2025-08-18 +-- À exécuter sur votre serveur de production privé + +-- Vérification que la table dlc_products existe +DO $$ +BEGIN + IF NOT EXISTS (SELECT FROM information_schema.tables WHERE table_name = 'dlc_products') THEN + RAISE EXCEPTION 'ERREUR: La table dlc_products n''existe pas'; + END IF; + RAISE NOTICE 'OK: Table dlc_products trouvée'; +END +$$; + +-- Vérification des colonnes existantes avant migration +SELECT 'AVANT MIGRATION - Colonnes actuelles:' as status; +SELECT column_name 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; + +-- Migration sécurisée - Ajout des colonnes DLC 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é (différent de périmé)'; +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é'; + +-- Index pour améliorer les performances +CREATE INDEX IF NOT EXISTS idx_dlc_products_stock_epuise ON dlc_products(stock_epuise); + +-- Initialiser tous les produits existants comme stock disponible +UPDATE dlc_products +SET stock_epuise = false +WHERE stock_epuise IS NULL; + +-- Vérification finale +SELECT 'APRÈS MIGRATION - Vérification:' as status; +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; + +-- Statistiques après migration +SELECT + COUNT(*) as total_produits, + COUNT(CASE WHEN stock_epuise = true THEN 1 END) as stock_epuise, + COUNT(CASE WHEN stock_epuise = false THEN 1 END) as stock_disponible +FROM dlc_products; + +SELECT 'MIGRATION TERMINÉE AVEC SUCCÈS' as status; \ No newline at end of file