# RH Connect — Envie2e Nord

RH Connect est une application web interne de gestion des ressources humaines développée pour **Envie2e Nord**, entreprise du groupe Vitamine T.

Elle remplace progressivement l’ancienne application Microsoft Access par une architecture web conteneurisée, une base MySQL et une gestion centralisée des accès.

## Fonctionnalités

- consultation et gestion des salariés ;
- contrats, avenants, absences, visites médicales et sanctions ;
- alertes RH et envois automatiques par e-mail ;
- authentification locale ou Microsoft Entra ID (SSO) ;
- habilitations en lecture/écriture et périmètres salariés ;
- consultation individuelle des fiches de paie PDF ;
- génération de documents PDF et Word depuis des modèles DOCX ;
- demandes de procédure avec historique et export PDF ;
- envoi d’e-mails aux salariés avec signature personnalisée ;
- documentation interactive de l’API avec Swagger UI.

L’envoi de SMS n’est pas implémenté.

## Architecture technique

| Composant | Technologie | Adresse locale |
|---|---|---|
| Frontend | Next.js 16 / React 19 | <http://localhost:3001> |
| Backend API | Next.js Route Handlers / Prisma | <http://localhost:8000> |
| Base de données | MySQL 8 | `127.0.0.1:3306` |
| Planificateur | Conteneur dédié aux alertes e-mail | Interne à Docker |
| Documentation API | OpenAPI 3.0 / Swagger UI | <http://localhost:8000/api-docs> |

Les services sont orchestrés par Docker Compose. Les données MySQL et les modèles de documents sont stockés dans des volumes persistants. Les fiches de paie sont montées en lecture seule depuis un dossier hôte ou un partage réseau.

Voir [l’architecture détaillée](docs/ARCHITECTURE.md).

## Démarrage rapide

### Prérequis

- Git ;
- Docker Desktop avec Docker Compose ;
- accès réseau à Microsoft Entra ID et Microsoft Graph pour le SSO et les e-mails ;
- accès au partage contenant les fiches de paie sur l’environnement serveur.

### Installation locale

1. Copier le fichier d’exemple :

   ```powershell
   Copy-Item .env.example .env
   ```

2. Renseigner les secrets et créer un dossier local pour les fiches de paie, par exemple :

   ```dotenv
   PAYSLIP_HOST_PATH=C:/chemin/vers/paies-local
   PAYSLIP_ROOT_PATH=/data/paies
   ```

3. Construire et démarrer les services :

   ```powershell
   docker compose up -d --build
   ```

4. Appliquer les migrations Prisma :

   ```powershell
   docker compose exec backend npx prisma migrate deploy
   docker compose restart backend
   ```

5. Vérifier l’application :

   ```powershell
   docker compose ps
   Invoke-RestMethod http://localhost:8000/api/health
   ```

Ne jamais utiliser `docker compose down -v` sur un environnement contenant des données à conserver.

Le guide complet est disponible dans [Installation et exploitation](docs/INSTALLATION.md).

## Authentification et habilitations

Le backend accepte :

- un JWT transmis avec `Authorization: Bearer <token>` ;
- le cookie `auth_token` créé par la connexion SSO Microsoft.

Les contrôles sont réalisés côté API. Masquer un bouton dans le frontend ne remplace pas une habilitation backend.

Chaque utilisateur peut recevoir :

- des permissions de lecture ou d’écriture par module ;
- un périmètre d’établissements, de secteurs, de catégories professionnelles et de types de contrat.

## Documentation

| Document | Contenu |
|---|---|
| [Installation et exploitation](docs/INSTALLATION.md) | Configuration, Docker, migrations, sauvegardes et diagnostic |
| [Administration fonctionnelle](docs/ADMINISTRATION.md) | Habilitations, paies, modèles DOCX, alertes, e-mails et procédures |
| [Architecture](docs/ARCHITECTURE.md) | Composants, flux, persistance et choix d’identifiants |
| [OpenAPI / Swagger](backend/backend_envie2e/docs/OPENAPI.md) | Activation, authentification et régénération de l’inventaire API |

Les rapports présents historiquement dans `docs/` décrivent les travaux de migration Access vers MySQL. Swagger constitue désormais la référence pour la liste actuelle des routes API.

## Commandes utiles

```powershell
# État des services
docker compose ps

# Journaux
docker compose logs -f backend
docker compose logs -f frontend
docker compose logs -f alert-mail-scheduler

# Reconstruction ciblée
docker compose up -d --build backend frontend

# Migrations
docker compose exec backend npx prisma migrate deploy

# Tests backend depuis les sources locales
Set-Location backend\backend_envie2e
npm ci
npm run test:integration
npm run test:coverage
```

## Workflow Git

Le flux utilisé est :

1. branche `feature/*` depuis `dev` ;
2. pull request de la branche fonctionnelle vers `dev` ;
3. validation fonctionnelle sur `dev` ;
4. pull request de `dev` vers `main` pour la mise en production.

## Données sensibles

- ne jamais versionner le fichier `.env` ;
- ne jamais placer de secret, mot de passe ou client secret dans un README ;
- sauvegarder MySQL avant chaque migration ou mise en production ;
- conserver les fiches de paie et documents RH hors du dépôt Git.

## Statut

Application privée destinée à Envie2e Nord. La mise en production et les accès d’infrastructure sont coordonnés avec la DSI du groupe Vitamine T.
