# 🚀 Guide Rapide - Déploiement Local

## Installation Rapide

### 1️⃣ Première Installation

Double-cliquez sur `deploy-local.bat` ou exécutez:

```bash
.\deploy-local.bat
```

Ce script va:
- ✅ Créer le fichier `.env`
- ✅ Installer les dépendances PHP et Node.js
- ✅ Créer la base de données SQLite locale
- ✅ Synchroniser les données depuis le serveur en ligne

**⚠️ Important**: Modifiez le fichier `.env` avec vos informations de connexion au serveur distant avant de continuer.

### 2️⃣ Démarrer l'Application

#### Option 1: Deux terminaux (Recommandé)

**Terminal 1** - Serveur Web:
```bash
.\start-local.bat
```

**Terminal 2** - Queue Worker (synchronisation):
```bash
.\start-queue.bat
```

#### Option 2: Commande manuelle
```bash
php artisan serve
# Dans un autre terminal:
php artisan queue:work
```

L'application est accessible à: **http://localhost:8000**

---

## 📊 Commandes Utiles

### Vérifier le Statut
```bash
php artisan sync:status
```

Affiche:
- État de la connexion (en ligne/hors ligne)
- Nombre d'enregistrements à synchroniser
- Dernière synchronisation

### Synchroniser Manuellement

**Envoyer les données locales vers le serveur:**
```bash
php artisan sync:to-remote
```

**Télécharger les données du serveur (⚠️ écrase les données locales):**
```bash
php artisan sync:from-remote
```

---

## 🔄 Comment Fonctionne la Synchronisation?

### Mode Hors Ligne
1. Vous créez/modifiez des données (clients, dépôts, paiements, etc.)
2. Les modifications sont sauvegardées en **local** (SQLite)
3. Elles sont **mises en file d'attente** pour synchronisation

### Mode En Ligne
1. Le système détecte automatiquement la connexion internet
2. Les modifications en attente sont **envoyées au serveur**
3. Tout est synchronisé automatiquement

### Modèles Synchronisés Automatiquement
- ✅ Clients (`Customer`)
- ✅ Dépôts (`Deposit`)
- ✅ Paiements (`Payment`)
- ✅ Articles (`Article`)
- ✅ Catégories (`Category`)
- ✅ Dépenses (`Expense`)

---

## ⚙️ Configuration

### Fichier `.env`

```env
# Base locale (SQLite)
DB_CONNECTION=sqlite
DB_DATABASE=C:\Softsys\pressing_yehiya\database\database.sqlite

# Base distante (MySQL - Serveur en ligne)
REMOTE_DB_DRIVER=mysql
REMOTE_DB_HOST=votre-serveur.com
REMOTE_DB_PORT=3306
REMOTE_DB_DATABASE=pressing_db
REMOTE_DB_USERNAME=votre_utilisateur
REMOTE_DB_PASSWORD=votre_mot_de_passe
```

---

## 🐛 Dépannage

### La synchronisation ne fonctionne pas

1. Vérifiez le statut:
```bash
php artisan sync:status
```

2. Vérifiez que le queue worker est actif (terminal 2)

3. Consultez les logs:
```bash
type storage\logs\laravel.log
```

### Erreur "Database locked"

SQLite ne supporte qu'une écriture à la fois:
- Fermez les autres connexions à la base
- Redémarrez le queue worker

### Les données ne se synchronisent pas

1. Vérifiez la connexion internet
2. Vérifiez les informations de connexion distante dans `.env`
3. Testez manuellement:
```bash
php artisan sync:to-remote
```

---

## 📝 Notes Importantes

- 💾 **Sauvegarde**: Copiez régulièrement `database\database.sqlite`
- 🌐 **Internet**: La synchronisation se fait automatiquement quand internet est disponible
- ⚡ **Performance**: SQLite est parfait pour un usage local/petit volume
- 🔒 **Sécurité**: Ne committez jamais le fichier `.env` dans Git

---

## 📞 Commandes de Debug

### Voir les enregistrements en attente
```bash
php artisan tinker
>>> App\Models\SyncLog::where('status', 'pending')->count()
```

### Voir les erreurs de synchronisation
```bash
php artisan tinker
>>> App\Models\SyncLog::where('status', 'failed')->get()
```

### Tester la connexion distante
```bash
php artisan tinker
>>> app(App\Services\SyncService::class)->testRemoteConnection()
```

---

## 🎯 Workflow Quotidien

1. **Démarrer** l'application (2 terminaux)
2. **Travailler** normalement (créer clients, dépôts, etc.)
3. **Vérifier** le statut de temps en temps: `php artisan sync:status`
4. La synchronisation se fait **automatiquement** en arrière-plan

C'est tout! 🎉
