# 📦 Icavi Gestion — Guide d'installation OVH Mutualisé
## Laravel 11 · PHP 8.2+ · MySQL 5.7+

---

## ⚡ Installation rapide (local d'abord)

```bash
# 1. Dézipper et entrer dans le dossier
unzip icavi-gestion.zip && cd icavi-gestion

# 2. Script automatique (recommandé)
bash setup.sh

# OU manuellement :
composer install --no-dev --optimize-autoloader
cp .env.example .env
php artisan key:generate
# → Configurer .env (DB, APP_URL)
php artisan migrate --force
php artisan db:seed --force
```

**Compte admin créé par défaut :**
| Email | Mot de passe |
|---|---|
| admin@icavi.com | Admin@2024! |

> ⚠️ Changez le mot de passe dès la première connexion !

---

## 🖥️ Déploiement sur OVH Mutualisé

### Structure cible sur OVH

```
/home/votre-login/
├── icavi-gestion/          ← projet complet (avec vendor/)
│   ├── app/
│   ├── bootstrap/
│   ├── config/
│   ├── database/
│   ├── resources/
│   ├── routes/
│   ├── storage/
│   ├── vendor/             ← généré par composer install
│   └── ...
└── www/                    ← racine web OVH
    ├── index.php           ← modifié (voir ci-dessous)
    ├── .htaccess           ← copié depuis public/
    ├── css/                ← copié depuis public/css/
    └── js/                 ← copié depuis public/js/
```

### Étape 1 — Uploader via FileZilla

1. Uploader `icavi-gestion/` (avec vendor/) dans `/home/votre-login/`
2. Copier le contenu de `icavi-gestion/public/` dans `/home/votre-login/www/`

### Étape 2 — Modifier `www/index.php`

Remplacer le contenu par :

```php
<?php

use Illuminate\Http\Request;

define('LARAVEL_START', microtime(true));

if (file_exists($maintenance = __DIR__.'/../icavi-gestion/storage/framework/maintenance.php')) {
    require $maintenance;
}

require __DIR__.'/../icavi-gestion/vendor/autoload.php';

$app = require_once __DIR__.'/../icavi-gestion/bootstrap/app.php';
$app->handleRequest(Request::capture());
```

### Étape 3 — Configurer `.env` sur OVH

Éditer `/home/votre-login/icavi-gestion/.env` :

```env
APP_URL=https://votre-domaine.com
APP_ENV=production
APP_DEBUG=false

DB_HOST=votre-host-ovh-mysql    # Ex: mysql51-2.pro.ovh.net
DB_DATABASE=votre_base
DB_USERNAME=votre_user
DB_PASSWORD=votre_mdp
```

### Étape 4 — Permissions (via SSH OVH)

```bash
cd /home/votre-login/icavi-gestion
chmod -R 755 storage/ bootstrap/cache/
chmod -R 777 storage/framework/ storage/logs/

# Dossier GED (stockage privé des documents uploadés)
mkdir -p storage/app/ged
chmod -R 755 storage/app/ged
```

> **Important GED :** Le dossier `storage/app/ged/` doit exister et être accessible en écriture.
> Les documents uploadés y sont stockés de manière privée (pas d'accès URL direct — tout passe par le contrôleur).

### Étape 5 — Migrations (via SSH OVH)

```bash
cd /home/votre-login/icavi-gestion
php artisan migrate --force
php artisan db:seed --force
php artisan config:cache
php artisan route:cache
php artisan view:cache
```

---

## 🔧 Dépannage OVH

| Problème | Solution |
|---|---|
| Erreur 500 | `cat storage/logs/laravel.log` ou `APP_DEBUG=true` temporairement |
| Page blanche | `vendor/` absent → relancer `composer install` |
| Erreur CSRF | Vérifier `SESSION_DRIVER=file` dans `.env` |
| CSS manquants | Vérifier que `public/css/` est bien dans `www/css/` |
| "Class not found" | `php artisan config:clear && php artisan cache:clear` |
| Erreur session | `chmod 777 storage/framework/sessions/` |
| Upload GED échoue | Vérifier `mkdir -p storage/app/ged && chmod 755 storage/app/ged` |
| Fichier GED introuvable | Vérifier que `storage/app/ged/` existe sur le serveur |

---

## 📋 Fonctionnalités

| Module | Description |
|---|---|
| 📊 Dashboard | Stats temps réel, alertes stock, CA |
| 👥 Clients | CRUD, statuts, relances planifiées |
| 📦 Produits | Catalogue, prix, seuils d'alerte |
| 🏭 Stock | Mouvements (entrée/sortie/ajustement) |
| 🛒 Ventes | Commandes multi-lignes, statuts |
| 📄 Documents | Proforma, Devis, Facture, BL, BC, Avoir + impression |
| 🗂️ GED | Médiathèque : import, dossiers, catégories, corbeille, historique, widget contextuel |
| 👤 Utilisateurs | 4 rôles (Super Admin, Admin, Commercial, Stock) |

---

## 🔐 Rôles utilisateurs

| Rôle | Accès |
|---|---|
| `super_admin` | Tout, y compris gestion des admins |
| `admin` | Tout sauf gestion des super admins |
| `commercial` | Clients, ventes, documents |
| `storage_manager` | Produits, stock |
