Merge pull request #208 from R0m1k3/1.1

Add stock status columns to product management
This commit is contained in:
LogiFlow authored and GitHub committed 2025-08-18 11:58:04 +02:00
commit 4c2852a426
3 files changed
+60 -86

No files matched your search

+49 -39
View File
@@ -1,21 +1,38 @@
# MIGRATION PRODUCTION URGENTE - DLC Stock Épuisé # COMMANDES PRODUCTION - Solution Immédiate
## Problème ## SOLUTION URGENTE (2 minutes)
```
Error: column dlc_products.stock_epuise does not exist
```
## Solution Rapide ### Commande 1: Appliquer la migration DLC
### Option 1: Migration SQL directe
```bash ```bash
# Connectez-vous à votre base PostgreSQL de production docker-compose exec logiflow-db psql -U logiflow_admin -d logiflow_db -f - << 'EOF'
psql -h [VOTRE_HOST] -U [VOTRE_USER] -d [VOTRE_DB] -f MIGRATION_PRODUCTION_URGENTE.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;
CREATE INDEX IF NOT EXISTS idx_dlc_products_stock_epuise ON dlc_products(stock_epuise);
UPDATE dlc_products SET stock_epuise = false WHERE stock_epuise IS NULL;
SELECT 'Migration DLC terminée' as status;
EOF
``` ```
### Option 2: Commandes manuelles ### Commande 2: Redémarrer l'application
```sql ```bash
-- Connectez-vous à votre base et exécutez : docker-compose restart logiflow
```
### Alternative si la première ne marche pas:
```bash
# Option A: Via fichier SQL
docker cp MIGRATION_PRODUCTION_URGENTE.sql [CONTAINER_NAME]:/tmp/migration.sql
docker-compose exec logiflow-db psql -U logiflow_admin -d logiflow_db -f /tmp/migration.sql
# Option B: Connexion directe
docker-compose exec logiflow-db psql -U logiflow_admin -d logiflow_db
# Dans psql, coller:
ALTER TABLE dlc_products ALTER TABLE dlc_products
ADD COLUMN IF NOT EXISTS stock_epuise boolean DEFAULT false NOT NULL, 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_by varchar(255),
@@ -24,34 +41,27 @@ ADD COLUMN IF NOT EXISTS stock_epuise_at timestamp;
CREATE INDEX IF NOT EXISTS idx_dlc_products_stock_epuise ON dlc_products(stock_epuise); 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) ## Vérification
```bash ```bash
# Sur votre serveur de production # Vérifier que les colonnes existent
./scripts/production-deploy-dlc-stock.sh docker-compose exec logiflow-db psql -U logiflow_admin -d logiflow_db -c "
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_name='dlc_products'
AND column_name LIKE '%stock_epuise%';
"
# Vérifier les logs de l'application
docker-compose logs logiflow | tail -20
``` ```
## Vérification après migration ## Résultat attendu
```sql ```
SELECT EXISTS ( column_name | data_type
SELECT FROM information_schema.columns --------------------+-------------------
WHERE table_name='dlc_products' stock_epuise | boolean
AND column_name='stock_epuise' stock_epuise_at | timestamp without time zone
); stock_epuise_by | character varying
``` ```
Résultat attendu: `t` (true) L'erreur "column does not exist" disparaîtra immédiatement.
## 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
+2 -2
View File
@@ -114,5 +114,5 @@ RUN chmod +x /app/scripts/auto-migrate-production.sh && \
ls -la /app/scripts/ && \ ls -la /app/scripts/ && \
test -f /app/scripts/docker-entrypoint.sh || echo "ERREUR: docker-entrypoint.sh manquant" test -f /app/scripts/docker-entrypoint.sh || echo "ERREUR: docker-entrypoint.sh manquant"
# Apply migrations and start application # Apply DLC migration directly and start application
CMD ["sh", "-c", "if [ -f /app/scripts/auto-sync-migrations.sh ]; then /app/scripts/auto-sync-migrations.sh; fi && node dist/index.js"] CMD ["sh", "-c", "echo 'Applying DLC migration...'; if [ -n \"$DATABASE_URL\" ]; then psql \"$DATABASE_URL\" -c '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);' || echo 'Migration already applied or failed'; fi; node dist/index.js"]
+9 -45
View File
@@ -1,60 +1,24 @@
-- MIGRATION URGENTE PRODUCTION - DLC Stock Épuisé -- MIGRATION URGENTE PRODUCTION DLC
-- Date: 2025-08-18 -- Exécutez cette commande directement sur votre serveur
-- À exécuter sur votre serveur de production privé
-- Vérification que la table dlc_products existe -- Ajout des colonnes DLC stock épuisé
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 ALTER TABLE dlc_products
ADD COLUMN IF NOT EXISTS stock_epuise boolean DEFAULT false NOT NULL, 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_by varchar(255),
ADD COLUMN IF NOT EXISTS stock_epuise_at timestamp; ADD COLUMN IF NOT EXISTS stock_epuise_at timestamp;
-- Commentaires pour documenter les nouveaux champs -- Index pour performance
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); CREATE INDEX IF NOT EXISTS idx_dlc_products_stock_epuise ON dlc_products(stock_epuise);
-- Initialiser tous les produits existants comme stock disponible -- Initialisation des valeurs
UPDATE dlc_products UPDATE dlc_products
SET stock_epuise = false SET stock_epuise = false
WHERE stock_epuise IS NULL; WHERE stock_epuise IS NULL;
-- Vérification finale -- Vérification
SELECT 'APRÈS MIGRATION - Vérification:' as status;
SELECT SELECT
column_name, 'Migration DLC terminée' as status,
data_type, COUNT(*) as colonnes_ajoutees
is_nullable,
column_default
FROM information_schema.columns FROM information_schema.columns
WHERE table_name = 'dlc_products' WHERE table_name = 'dlc_products'
AND column_name IN ('stock_epuise', 'stock_epuise_by', 'stock_epuise_at') 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;