# Guide de déploiement BAO

## Vue d'ensemble

BAO peut être utilisé de **deux façons** :

1. **Depuis le PC** : Via tunnels SSH vers les containers
2. **Sur les containers** : Connexion directe aux bases maria3/maria4

## Architecture des bases de données

### Environnement DVA
- Container : `IN3/dva-geo`
- Base de données : `IN3/maria3:3306` → `dva_geo`
- Credentials : `dva_geo_user` / `CBq9tKHj6PGPZuTmAHV7`

### Environnement RCA
- Container : `IN3/rca-geo`
- Base de données : `IN3/maria3:3306` → `rca_geo`
- Credentials : `rca_geo_user` / `UPf3C0cQ805LypyM71iW`

### Environnement PRA
- Container : `IN4/pra-geo`
- Base de données : `IN4/maria4:3306` → `pra_geo`
- Credentials : `pra_geo_user` / `d2jAAGGWi8fxFrWgXjOA`

## Déploiement

### 1. Déployer sur DVA (IN3/dva-geo)

```bash
cd /home/pierre/dev/geosector/bao
./deploy-bao.sh
```

**Ce que fait le script :**
- Crée une archive `bao-dva-YYYYMMDDHH.tar.gz` dans `/data/backup/geosector/bao`
- Transfère l'archive vers `IN3` (195.154.80.116)
- Déploie dans le container `dva-geo` → `/var/www/geosector/bao`
- Copie `config/.env.container` vers `config/.env`
- Configure les permissions (root:root)
- Rend tous les scripts exécutables

### 2. Déployer sur RECETTE (IN3/rca-geo)

```bash
cd /home/pierre/dev/geosector/bao
./deploy-bao.sh rca
```

**Même processus**, mais vers le container `rca-geo`.

### 3. Déployer sur PRODUCTION (IN4/pra-geo)

```bash
cd /home/pierre/dev/geosector/bao
./deploy-bao.sh pra
```

**Même processus**, mais vers le serveur `IN4` (51.159.7.190) et le container `pra-geo`.

## Utilisation après déploiement

### Connexion au container

```bash
# Pour RCA (exemple)
ssh -i ~/.ssh/id_rsa_mbpi root@195.154.80.116 'incus exec rca-geo -- bash'
```

### Lancer BAO

```bash
cd /var/www/geosector/bao

# Menu interactif
./bin/bao

# Ou directement un script
./bin/search-user rca dupont
./bin/decrypt-user rca 56930
./bin/list-operations rca --entite=662
```

## Configuration automatique

Le fichier `config/.env` est automatiquement créé depuis `config/.env.container` :

```ini
# Exemple pour RCA (connexion directe vers maria3)
RCA_DB_HOST=13.23.33.4
RCA_DB_PORT=3306
RCA_DB_NAME=rca_geo
RCA_DB_USER=rca_geo_user
RCA_DB_PASS=UPf3C0cQ805LypyM71iW
```

**Aucune configuration manuelle requise !**

## Sauvegardes

Les archives de déploiement sont conservées dans `/data/backup/geosector/bao` :
- `bao-dva-*.tar.gz` : Archives DVA
- `bao-rca-*.tar.gz` : Archives RCA
- `bao-pra-*.tar.gz` : Archives PRA

**Rétention** : Les 10 dernières archives par environnement sont conservées.

## Vérifications post-déploiement

Le script vérifie automatiquement :
- ✓ Présence de `config/.env`
- ✓ PHP disponible
- ✓ Extensions PHP (PDO, OpenSSL, mbstring)

## Rollback

En cas de problème, la sauvegarde est disponible sur le container :

```bash
# Se connecter au container
ssh -i ~/.ssh/id_rsa_mbpi root@195.154.80.116 'incus exec rca-geo -- bash'

# Restaurer depuis la sauvegarde
cd /var/www/geosector
rm -rf bao
mv bao_backup_YYYYMMDD_HHMMSS bao
```

## Différences PC vs Container

| Aspect | PC (local) | Container (distant) |
|--------|-----------|---------------------|
| Config | `.env.example` | `.env.container` |
| Connexion | Via tunnels SSH | Directe maria3/maria4 |
| Host DB | 127.0.0.1 | 13.23.33.4 |
| Port DB | 3307/3308/3309 | 3306 |
| Tunnels | Nécessaires | Non nécessaires |

## Troubleshooting

### Erreur de connexion à la base

```bash
# Tester la connexion depuis le container
mysql -h 13.23.33.4 -u rca_geo_user -p rca_geo -e "SELECT 1"
```

### Script non exécutable

```bash
cd /var/www/geosector/bao
chmod +x bin/*
```

### Mauvaise configuration

```bash
# Vérifier la config
cat config/.env

# Recopier depuis le template
cp config/.env.container config/.env
```

## Journal des déploiements

Tous les déploiements sont journalisés dans `~/.geo_deploy_history` :

```bash
tail -f ~/.geo_deploy_history
```

Exemple :
```
2025-01-18 14:30:00 - BAO deployed to RECETTE (rca-geo) - Archive: bao-rca-2025011814.tar.gz
```
