# 🔧 Audit et Corrections des Migrations - Bijoux Express

## Date: Janvier 2025

---

## ✅ Corrections Effectuées

### 1. **safe_migration_runner.php** - Structure shipping_fees corrigée
- **Problème**: Utilisait `country_code` au lieu de `country`
- **Solution**: Changé pour utiliser `country` comme dans la migration originale
- **Ajouté**: `free_shipping_minimum`, `estimated_days`, index composite

### 2. **safe_column_adder.php** - Colonnes manquantes ajoutées
- `wallets.currency` - Colonne manquante pour la migration de balance
- `shipping_fees.free_shipping_minimum` 
- `shipping_fees.estimated_days`
- `shipping_fees.country`

### 3. **2026_01_03_000002_create_savings_plans_table.php**
- **Problème**: Utilisait `DB::table()` sans importer la façade
- **Solution**: Ajouté `use Illuminate\Support\Facades\DB;`

### 4. **2025_10_07_180155_add_foreign_key_to_payments_table.php**
- **Problème**: Ajoutait une foreign key sans vérifier si elle existe
- **Solution**: Ajouté vérification via Doctrine Schema Manager + try/catch

### 5. **2025_10_07_180156_add_mlm_fields_to_users_table.php**
- **Problème**: Foreign key `sponsor_id` ajoutée sans protection
- **Solution**: Séparé l'ajout de FK avec try/catch

### 6. **2025_10_07_195622_add_public_ecommerce_fields_to_orders_table.php**
- **Problème**: `dropForeign` et `foreign` sans protection
- **Solution**: Séparé les opérations FK avec try/catch

### 7. **2026_01_17_011939_add_investment_product_id_to_orders_table.php**
- **Problème**: Foreign key ajoutée sans protection
- **Solution**: Ajout de try/catch pour la FK

### 8. **2026_01_17_160000_add_referrer_columns_to_orders_table.php**
- **Problème**: Vérifications hasColumn redondantes + FK sans protection
- **Solution**: Nettoyé le code et ajouté try/catch pour FK

### 9. **Migrations shipping_fees désactivées** (000013, 000014, 000015, 000016)
- **Raison**: Ces migrations d'insertion de données utilisaient des noms de colonnes incorrects
- **État**: Désactivées - les données seront gérées via l'admin

---

## 📋 Résumé de la Simulation

```
Total migrations analysées: 134
Erreurs critiques: 0 ✅
Avertissements: 179 (non-bloquants)
```

---

## 🚀 Ordre d'Exécution des Migrations

1. `0000_00_00_000000_safe_migration_runner.php` - Crée TOUTES les tables de base
2. `0000_00_00_000001_safe_column_adder.php` - Ajoute les colonnes manquantes
3. Autres migrations - Ajoutent les colonnes spécifiques avec `hasColumn()` checks

---

## ⚠️ Points d'Attention pour cPanel

1. **PHP Memory**: Augmenter `memory_limit` si nécessaire
2. **Timeout**: Les migrations peuvent prendre du temps, augmenter `max_execution_time`
3. **Database**: S'assurer que l'utilisateur MySQL a les droits complets (CREATE, ALTER, DROP, INDEX, REFERENCES)

---

## 🔗 Commande pour Exécuter les Migrations

```bash
# Via SSH
cd /home/user/public_html
/usr/local/bin/lsphp artisan migrate --force

# Ou via l'installateur web
https://votredomaine.com/install.php
```

---

## 📝 Tables Critiques Créées

| Table | Colonnes Critiques | État |
|-------|-------------------|------|
| users | role, sponsor_id, referral_code, subscription_paid | ✅ |
| orders | seller_id, seller_amount, order_type, referrer_user_id | ✅ |
| sellers | kyc_status, commission_rate | ✅ |
| products | seller_id, is_investment_product | ✅ |
| feature_toggles | category, feature_key, name, is_enabled | ✅ |
| wallets | currency, balance, pending_balance | ✅ |
| shipping_fees | country, city, district, fee, free_shipping_minimum | ✅ |

