# GUIDE DE MIGRATION V2.0 → V2.1

## 📦 Pré-requis

- StockMaster Pro V2.0 actuellement installé
- Accès serveur (FTP/SSH)
- PHP 8.1+ (inchangé)
- Sauvegarde complète recommandée

---

## 🔄 ÉTAPES DE MIGRATION

### 1. Sauvegarde (OBLIGATOIRE)

Avant toute chose, faites un backup complet :

```bash
# Via interface web
Paramètres → Export/Import → Télécharger sauvegarde complète

# Ou en ligne de commande
cd /chemin/vers/sm
tar -czf backup_avant_v2.1_$(date +%Y%m%d).tar.gz data/ uploads/
```

### 2. Upload des nouveaux fichiers

**Option A : Remplacement complet (recommandé)**

```bash
# 1. Télécharger le ZIP v2.1
# 2. Extraire dans un dossier temporaire
unzip StockMaster-Pro-v2.1.zip -d /tmp/sm_v2.1

# 3. Sauvegarder vos données actuelles
cp -r /var/www/sm/data /tmp/sm_data_backup
cp -r /var/www/sm/uploads /tmp/sm_uploads_backup

# 4. Remplacer les fichiers (sauf data et uploads)
cd /var/www/sm
rm -rf api assets libs views *.php *.md .htaccess

# 5. Copier les nouveaux fichiers
cp -r /tmp/sm_v2.1/sm/* .

# 6. Restaurer vos données
rm -rf data uploads
cp -r /tmp/sm_data_backup data
cp -r /tmp/sm_uploads_backup uploads

# 7. Permissions
chmod 775 data uploads backups
chown -R www-data:www-data data uploads backups
```

**Option B : Upload manuel (FTP)**

1. Télécharger votre dossier `data/` actuel
2. Télécharger votre dossier `uploads/` actuel
3. Supprimer tous les fichiers sur le serveur SAUF `data/` et `uploads/`
4. Uploader les nouveaux fichiers depuis le ZIP v2.1
5. Remettre vos dossiers `data/` et `uploads/`

### 3. Vérifier permissions

```bash
chmod 775 data
chmod 775 uploads
chmod 775 backups  # Nouveau dossier v2.1
```

### 4. Premier accès (migration automatique)

1. Accédez à `http://votre-domaine.com/sm/`
2. **La migration automatique se lance** :
   - Ajout champ `maxAuthorized` dans stock
   - Ajout champ `brands` dans suppliers
   - Création fichier `rate_limits.json`
3. Connexion normale (identifiants inchangés)

### 5. Vérification post-migration

#### ✅ Checklist de vérification

- [ ] Login fonctionne
- [ ] Dashboard affiche les KPI
- [ ] Liste produits visible
- [ ] Créer un nouveau produit
- [ ] Faire un mouvement (ajout/sortie)
- [ ] Scanner un code-barre
- [ ] Consulter l'historique mouvements
- [ ] Filtres fonctionnent
- [ ] Pagination visible

#### 🔍 Vérifier migrations

```bash
# Vérifier que maxAuthorized existe dans stock.json
cat data/stock.json | grep maxAuthorized

# Vérifier que brands existe dans suppliers.json
cat data/suppliers.json | grep brands

# Vérifier que rate_limits.json existe
ls -la data/rate_limits.json
```

### 6. Configuration Backup Automatique (optionnel)

```bash
# Éditer crontab
crontab -e

# Ajouter ligne (backup quotidien 2h du matin)
0 2 * * * php /var/www/sm/backup_cron.php >> /var/log/stockmaster_backup.log 2>&1

# Tester manuellement
php backup_cron.php

# Vérifier résultat
ls -la backups/
```

---

## 🆕 NOUVELLES FONCTIONNALITÉS

### Entrée de Stock (Admin)

1. Page Produits → Bouton "Entrée de stock" (vert)
2. Remplir formulaire réception commande
3. Le stock maxAuthorized augmente automatiquement

**Différence avec "Ajout" :**
- **Entrée** = réception fournisseur → augmente plafond
- **Ajout** = remise en stock → limité au plafond

### Pagination

Toutes les listes longues sont maintenant paginées :
- Produits : 20/page
- Mouvements : 50/page
- Fournisseurs : 30/page

Contrôles : `← Préc.` | Page X/Y | `Suiv. →`

### Fournisseurs + Marques

1. Page Fournisseurs → Éditer fournisseur
2. Champ "Marques" → Ajouter marques (ex: DULUX, LEVIS)
3. Créer produit → Sélectionner fournisseur
4. Les marques se chargent automatiquement en select

### Scanner Amélioré

- Code inconnu détecté → **Scanner s'arrête**
- Boutons : "Créer produit" | "Rescanner"
- Évite les scans multiples erronés

### Impression

Bouton "Imprimer" dans chaque page ou `Ctrl+P` :
- Masquage auto navigation/filtres
- Mise en page A4 optimisée
- Headers répétés sur chaque page

---

## ⚠️ POINTS D'ATTENTION

### Nouvelle logique stock

**Avant v2.1 :**
- Utilisateurs pouvaient "ajouter" sans limite

**Depuis v2.1 :**
- Utilisateurs : ajout limité au `maxAuthorized`
- Admins : "Entrée de stock" augmente `maxAuthorized`

**Migration :**
- `maxAuthorized` initialisé avec quantité actuelle
- Aucune régression fonctionnelle
- Les ajouts futurs seront contrôlés

### Nouveaux types de mouvements

Le type `"entry"` apparaît dans historique :
- `add` = remise en stock (tous)
- `entry` = réception commande (admin)
- `remove` = sortie (tous)
- `transfer` = transfert (admin)

### Rate Limiting Login

Maximum 5 tentatives / 5 minutes :
- Message : "Trop de tentatives"
- Attendre 5 minutes ou nettoyer `data/rate_limits.json`

---

## 🐛 PROBLÈMES CONNUS

### Erreur 403 sur POST

**Symptôme :** "CSRF token invalide"

**Solution :**
```bash
# Vider le cache navigateur
# Ou forcer rechargement : Ctrl+Shift+R
```

### Pagination ne s'affiche pas

**Cause :** Ancien cache JavaScript

**Solution :**
```bash
# Forcer rechargement assets
# Ajouter ?v=2.1 aux scripts
<script src="assets/js/app.js?v=2.1"></script>
```

### maxAuthorized négatif

**Cause :** Stock négatif avant migration

**Solution :**
```bash
# Éditer data/stock.json
# Mettre maxAuthorized = stock actuel + marge
```

---

## 🔙 ROLLBACK (si problème)

### Retour à V2.0

```bash
# 1. Supprimer V2.1
cd /var/www/sm
rm -rf api assets libs views *.php

# 2. Extraire backup
tar -xzf backup_avant_v2.1_YYYYMMDD.tar.gz

# 3. Permissions
chmod 775 data uploads
```

**Note :** Les données créées en v2.1 seront perdues (sauf si backup).

---

## 📞 SUPPORT

### Logs à consulter

```bash
# Logs Apache
tail -f /var/log/apache2/error.log

# Logs PHP
tail -f /var/log/php8.1-fpm.log

# Console navigateur
F12 → Console
```

### Checklist dépannage

1. ✅ PHP 8.1+ installé ? `php -v`
2. ✅ Permissions OK ? `ls -la data/`
3. ✅ Cache vidé ? `Ctrl+Shift+R`
4. ✅ CSRF token présent ? Inspecter `<meta name="csrf-token">`
5. ✅ JavaScript chargé ? Console sans erreurs

---

## 📚 RESSOURCES

- [README.md](README.md) - Documentation générale
- [CHANGELOG.md](CHANGELOG.md) - Détails techniques v2.1
- [INSTALL.md](INSTALL.md) - Installation from scratch
- [backup_cron.php](backup_cron.php) - Script backup

---

**Migration réussie !** 🎉

Profitez des nouvelles fonctionnalités de StockMaster Pro v2.1 !
