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
+59 -85

No files matched your search

+48 -38
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
## Vérification après migration
```sql
SELECT EXISTS (
SELECT FROM information_schema.columns
WHERE table_name='dlc_products' WHERE table_name='dlc_products'
AND column_name='stock_epuise' AND column_name LIKE '%stock_epuise%';
); "
# Vérifier les logs de l'application
docker-compose logs logiflow | tail -20
``` ```
Résultat attendu: `t` (true) ## Résultat attendu
```
## Redémarrage application column_name | data_type
Après la migration, redémarrez votre application : --------------------+-------------------
```bash stock_epuise | boolean
# Si Docker stock_epuise_at | timestamp without time zone
docker-compose restart logiflow stock_epuise_by | character varying
# Ou selon votre setup
systemctl restart votre-service
``` ```
## Vérification fonctionnelle L'erreur "column does not exist" disparaîtra immédiatement.
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;