# Guide de Deploiement - Telecom Billing Platform

## Prerequis

### Logiciels requis

- **PHP** 8.2 ou superieur
- **MySQL** 5.7+ ou **MariaDB** 10.4+
- **Composer** (gestionnaire de dependances PHP)
- **Acces SSH** (fourni par O2Switch)

### Extensions PHP requises

- mbstring
- xml
- curl
- mysql (pdo_mysql)
- zip
- gd
- intl
- fileinfo

Sur O2Switch, ces extensions sont generalement deja activees. Verifier avec :

```bash
php -m | grep -E "mbstring|xml|curl|mysql|zip|gd|intl|fileinfo"
```

---

## Installation sur O2Switch (Production)

### 1. Connexion SSH

```bash
ssh utilisateur@serveur.o2switch.net
```

### 2. Se placer dans le repertoire web

Pour le domaine principal :

```bash
cd ~/public_html
```

Ou pour un sous-domaine (recommande) :

```bash
cd ~/telecom-billing
```

### 3. Transfert des fichiers

**Option A - Git (recommande) :**

```bash
git clone https://votre-depot.git .
```

**Option B - Upload via cPanel File Manager ou SFTP :**

Uploader l'archive du projet et extraire.

### 4. Installation des dependances

```bash
composer install --optimize-autoloader --no-dev
```

### 5. Configuration de l'environnement

```bash
cp .env.example .env
php artisan key:generate
```

### 6. Configurer le fichier .env

Creer au prealable la base de donnees et l'utilisateur via **cPanel > Bases de donnees MySQL**.

```env
APP_NAME="Telecom Billing"
APP_ENV=production
APP_DEBUG=false
APP_URL=https://telecom.votre-domaine.fr

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nom_base_donnees
DB_USERNAME=utilisateur_mysql
DB_PASSWORD=mot_de_passe_mysql

MAIL_MAILER=smtp
MAIL_HOST=mail.votre-domaine.fr
MAIL_PORT=465
MAIL_USERNAME=noreply@votre-domaine.fr
MAIL_PASSWORD=mot_de_passe_mail
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=noreply@votre-domaine.fr
MAIL_FROM_NAME="Telecom Billing"
```

### 7. Migration et donnees initiales

```bash
php artisan migrate
php artisan db:seed
```

La commande `db:seed` cree les donnees de demonstration : clients, forfaits, abonnements et utilisateurs par defaut.

### 8. Permissions

```bash
chmod -R 775 storage bootstrap/cache
```

### 9. Configuration du domaine

Dans **cPanel > Sous-domaines** ou **Domaines supplementaires**, configurer la racine du document pour pointer vers le dossier `public/` du projet :

```
~/telecom-billing/public
```

Le fichier `.htaccess` inclus par Laravel gere automatiquement la redirection vers `index.php`.

### 10. Optimisation pour la production

```bash
php artisan config:cache
php artisan route:cache
php artisan view:cache
```

---

## Configuration du Cron (Import FTP automatique)

### Via cPanel

1. Aller dans **cPanel > Taches Cron**
2. Ajouter une nouvelle tache cron
3. Frequence : **Toutes les minutes** (`* * * * *`)
4. Commande :

```bash
cd ~/telecom-billing && php artisan schedule:run >> /dev/null 2>&1
```

Le Laravel Scheduler gere en interne la frequence d'execution de chaque tache planifiee.

### Import manuel

Pour lancer un import FTP manuellement :

```bash
php artisan cdr:import-ftp
```

---

## Installation locale (Windows)

### 1. Installer un environnement PHP/MySQL

**Laragon** (recommande) ou **XAMPP**.

Laragon fournit PHP, MySQL, Apache et Composer dans un seul installeur.

### 2. Creer une base de donnees MySQL

Via phpMyAdmin ou en ligne de commande :

```sql
CREATE DATABASE telecom_billing CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```

### 3. Installation

```bash
cd C:\laragon\www\telecom-billing
composer install
cp .env.example .env
php artisan key:generate
```

### 4. Configurer .env

```env
APP_ENV=local
APP_DEBUG=true
APP_URL=http://telecom-billing.test

DB_DATABASE=telecom_billing
DB_USERNAME=root
DB_PASSWORD=
```

### 5. Migration et seed

```bash
php artisan migrate
php artisan db:seed
```

### 6. Lancer le serveur de developpement

```bash
php artisan serve
```

L'application est accessible sur `http://localhost:8000`.

---

## Comptes par defaut

| Role | Email | Mot de passe |
|------|-------|-------------|
| Administrateur | admin@cd74.fr | Admin2024! |
| Operateur | operateur@cd74.fr | Oper2024! |
| Client (Merveilles de Pain) | client@merveilledepain.fr | Client2024! |
| Client (CD74 Mobile) | mobile@cd74.fr | Client2024! |
| Client (Alpha Omega) | contact@alphaomega.fr | Client2024! |

**IMPORTANT : Changer immediatement les mots de passe par defaut apres la premiere connexion.**

---

## Premier import CDR

1. Se connecter avec le compte administrateur (`admin@cd74.fr`)
2. Aller dans le menu **Import CDR**
3. Selectionner et uploader un fichier CSV CDR
4. Les fichiers d'exemple sont fournis dans le dossier du projet
5. Verifier les resultats dans le tableau de bord

---

## Configuration Odoo

Pour activer la synchronisation des factures avec Odoo :

1. Se connecter en administrateur
2. Aller dans **Parametres > Configuration Odoo**
3. Renseigner les informations de connexion :
   - **URL Odoo** : `https://votre-instance.odoo.com`
   - **Base de donnees** : nom de la base Odoo
   - **Identifiant** : login du compte API
   - **Cle API** : cle d'API Odoo (Parametres utilisateur > Cles API)
4. Cliquer sur **Tester la connexion**
5. Une fois validee, les factures generees seront automatiquement poussees en brouillon dans Odoo

---

## Securite

### Actions obligatoires apres deploiement

1. **Changer les mots de passe par defaut** de tous les comptes crees par le seeder
2. **Configurer HTTPS** via Let's Encrypt (disponible dans cPanel O2Switch > SSL/TLS)
3. **Verifier les permissions des fichiers** :
   - Les fichiers doivent etre en `644`
   - Les dossiers en `755`
   - `storage/` et `bootstrap/cache/` en `775`
4. **Desactiver le mode debug** en production : `APP_DEBUG=false` dans `.env`
5. **Configurer les sauvegardes** de la base de donnees (cPanel > Sauvegardes)

### Bonnes pratiques

- Ne jamais exposer le fichier `.env`
- Utiliser des mots de passe forts pour la base de donnees
- Mettre a jour regulierement les dependances : `composer update`
- Surveiller les logs dans `storage/logs/laravel.log`

---

## Maintenance

### Vider les caches

```bash
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
```

### Mise a jour de l'application

```bash
git pull origin main
composer install --optimize-autoloader --no-dev
php artisan migrate
php artisan config:cache
php artisan route:cache
php artisan view:cache
```

### Logs

Les logs applicatifs se trouvent dans :

```
storage/logs/laravel.log
```

Pour surveiller en temps reel :

```bash
tail -f storage/logs/laravel.log
```
