mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-19 21:18:25 +02:00
Merge pull request #208 from R0m1k3/1.1
Add stock status columns to product management
This commit is contained in:
3 files changed
+60
-86
No files matched your search
+49
-39
@@ -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
@@ -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"]
|
||||||
@@ -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;
|
|
||||||
Reference in new issue
Block a user