# AVANCEMENT — leperelion.fr

> État d'avancement synthétique. À mettre à jour à **chaque session**. Détail des changements
> dans [CHANGELOG.md](CHANGELOG.md).

**Dernière mise à jour : 2026-06-06**

## Phase actuelle : 0 — Cadrage & fondations

## Légende
✅ fait · 🟡 en cours · ⬜ à faire · ⏸️ en attente d'une décision (cf. 08_QUESTIONS_RESTANTES.md)

## Suivi

### Phase 0 — Cadrage & fondations
- ✅ Audit de l'infrastructure serveur (Apache, PostgreSQL, PM2, ports).
- ✅ Documentation de gestion du projet (`00`→`08`, CLAUDE.md, AVANCEMENT, CHANGELOG).
- ✅ Création de la base PostgreSQL dédiée `leperelion` + rôle (connexion testée, credential dans `backend/.env`).
- ✅ Scaffolding backend (Express + TS + Prisma 7, schéma migré, `/health`, build OK).
- ✅ Scaffolding frontend (Next.js 16, port 3002, build OK).
- ✅ PM2 : `leperelion-backend` (4002) + `leperelion-frontend` (3002) en ligne et persistés.
- ✅ Vhost Apache + SSL **activé** : https://leperelion.fr en ligne (cert Let's Encrypt, exp.
  2026-09-04, renouvellement auto). `/backend/health` proxifié OK. Autres sites vérifiés intacts.

### Phase 1 — MVP (cf. 02_FONCTIONNALITES_MVP.md)
- ✅ Auth : login/refresh/me/logout + changement de mot de passe (`/auth/password`, page `/profile`).
- ✅ **Rôles à 3 niveaux** (`super_admin`/`admin`/`user`) + autorisation par capacités
  (`permissions.ts`, `requireCapability`). Guillaume.Lion = super_admin.
- ✅ **Gestion des comptes** : API `/users` (super_admin) + interface `/admin/users` (créer,
  rôle, activer/désactiver, reset mot de passe, supprimer ; garde-fous anti-verrouillage).
- ✅ Création des comptes par l'admin (interface `/admin/users` ou `npm run create-user`).
- ✅ **Configuration Super Admin** (`/admin/config`) : réglages des connexions en base
  (`AppSetting`, secrets chiffrés). Identifiants Google saisis ici (plus dans le `.env`).
- ✅ **Liaison Google OAuth** : connect/disconnect, refresh token chiffré. Identifiants saisis
  dans `/admin/config`, compte Guillaume.Lion connecté et testé.
- ✅ **Agenda (Google Calendar)** : page `/agenda` avec vues **Semaine** et **Mois** (navigation
  préc/suiv + Aujourd'hui), lecture + création + suppression (admin/super_admin). Testé sur un
  vrai compte.
- ✅ **Boîte mail (Gmail)** : page `/mail` — liste INBOX + pagination, lecture (HTML en iframe
  sandbox), actions lu/non-lu/archiver/corbeille (admin/super_admin). Lecture testée sur le vrai
  compte.
- ✅ **Google Drive** : page `/drive` — explorateur (navigation, recherche, fil d'Ariane),
  télécharger/ouvrir ; gestion complète (upload, dossier, renommer, corbeille) pour admin/super_admin.
  ⚠️ Nécessite d'activer la Drive API + reconnecter Google (nouveau scope).
- ✅ **Suivi de position** : page `/tracking` — appareils + ingestion **OwnTracks** (Android) +
  carte Leaflet/OSM (position + trace, plages Aujourd'hui/24 h/7 j, refresh 30 s). Testé (simulé).
- 🟡 **WhatsApp** (Evolution API/Baileys, gratuit) : service `evolution-api` (PM2, :4003, base
  `evolution`) + page `/whatsapp` (liaison QR super_admin + messagerie, **super_admin only**).
  **Reste : scanner le QR** pour lier le numéro secondaire.
- ✅ **Alerte de zone (geofence → WhatsApp)** : sortie d'un rayon autour d'un point de référence
  → message WhatsApp (config sur `/tracking`, super_admin). Logique testée ; l'envoi réel partira
  une fois WhatsApp lié.
- ✅ **Journal de connexions** (`/admin/logs`, super_admin) : qui s'est connecté, quand, IP,
  appareil ; logins réussis/échoués + impersonations. Modèle `LoginEvent`, `trust proxy` pour l'IP.
- ⏸️ Google Photos (reporté — Library API limitée, Picker API requis).

> 🎉 Briques en place : Auth/rôles, Agenda, Boîte mail, Documents (Drive), **Localisation**.

## Décisions prises
Voir le tableau « Tranchées » dans [08_QUESTIONS_RESTANTES.md](08_QUESTIONS_RESTANTES.md).

## Prochaines actions
1. Créer le projet Google Cloud (cf. [05_INTEGRATION_GOOGLE.md](05_INTEGRATION_GOOGLE.md)) et
   saisir Client ID/Secret dans `/admin/config`.
2. Tester la connexion Google sur `/settings`.
3. Construire l'affichage de l'agenda (Google Calendar), puis la boîte mail (Gmail).
