# 🕵️ Rapport d'Audit Technique & Fonctionnel - Projet P'titsPas (Ynov)

**Date** : 23 Novembre 2025  
**Auditeur** : Assistant IA (Deploy Infra V2)  
**Objet** : État des lieux avant reprise des développements pour finalisation.

---

## 🚨 Synthèse Exécutive

Le projet dispose d'une **base technique saine** (NestJS, PostgreSQL, Docker) et d'une structure de code propre. Cependant, **plusieurs fonctionnalités critiques du Cahier des Charges (CDC) sont manquantes ou incomplètes**, rendant l'application inutilisable en l'état pour le workflow principal (Inscription -> Validation -> Utilisation).

**Score d'avancement estimé : 25%**  
(Backend: 60%, Frontend: 10% [Coquille vide], Infra: 80%)

---

## 1. 🏗️ Infrastructure & Docker

### ✅ Points Positifs
*   **Stack propre** : Architecture micro-services (Backend, Frontend, Database, PgAdmin).
*   **Configuration Traefik** : Les labels et le routing (`ynov.ptits-pas.fr`) sont corrects.
*   **Images optimisées** : Utilisation de builds multi-stage.

### ⚠️ Problèmes & Correctifs
1.  **Processus Zombies (Critique)** :
    *   **Constat** : Plus de 9000 processus zombies détectés.
    *   **Cause** : Le conteneur Backend lance `node` en PID 1 sans gestionnaire de signaux (`init`).
    *   **Action** : Ajouter `tini` ou `dumb-init` dans le `Dockerfile` Backend.
2.  **Base de Données (Seed)** :
    *   **Constat** : Le script d'initialisation (`01_init.sql`) insère un administrateur avec le mot de passe `"admin123"` **en clair**.
    *   **Impact** : Impossible de se connecter (le Backend attend un hash Bcrypt).
    *   **Action** : Remplacer l'insertion SQL par un vrai hash ou un script de seed NestJS.

---

## 2. 🔙 Backend (NestJS)

### ✅ Points Positifs
*   **Architecture** : Modulaire (Auth, User, Parents, Enfants...).
*   **Qualité Code** : Typage fort, DTOs validés (`class-validator`), Entités TypeORM claires.

### ❌ Écarts Fonctionnels Majeurs
| Fonctionnalité | État | Problème Identifié |
| :--- | :---: | :--- |
| **Envoi d'E-mails** | 🔴 **ABSENT** | Aucune librairie mail (Nodemailer) installée. Aucune logique d'envoi. |
| **Inscription** | 🟠 **Incomplet** | L'utilisateur est créé, mais sa fiche métier (`Parents` ou `AssistanteMaternelle`) **n'est pas générée**. Elle n'est créée qu'à la validation, ce qui empêche le remplissage du profil en amont. |
| **Validation Compte** | 🟠 **Partiel** | Le changement de statut fonctionne, mais **aucune notification mail** n'est envoyée (requis par CDC). |
| **Gestionnaire** | ✅ **OK** | La route de création par SuperAdmin existe et est sécurisée. |

---

## 3. 📱 Frontend (Flutter)

### ✅ Points Positifs
*   Structure du projet cohérente.
*   Authentification (Login) implémentée.

### ❌ Écarts Fonctionnels Majeurs
| Écran / Fonction | État | Problème Identifié |
| :--- | :---: | :--- |
| **Création Gestionnaire** | 🔴 **VIDE** | Le fichier `gestionnaires_create.dart` contient uniquement un texte placeholder. **Aucun formulaire.** |
| **Dashboard Admin** | 🔴 **FAKE** | L'écran existe mais affiche des données simulées "en dur" (Mock). **Non connecté à l'API.** Impossible de valider les comptes. |
| **Dashboard Parent** | 🔴 **FAKE** | L'écran existe, architecture propre (Service/Controller), mais toutes les données (Enfants, Contrats) sont mockées (`TODO: API Call`). |
| **Dashboard AssMat** | 🔴 **INEXISTANT** | Aucun écran trouvé pour l'accueil des Assistantes Maternelles. |
| **Contact Support** | 🔴 **Fake** | Bouton présent mais code vide (`// TODO`). |
| **Signalement Bug** | 🔴 **Fake** | Idem, code non implémenté. |

---

## 4. 📝 Plan d'Action Prioritaire (Roadmap de Réparation)

Pour rendre l'application fonctionnelle selon le "Workflow attendu", voici les étapes techniques à réaliser dans l'ordre :

### Étape 1 : Réparation Socle (Infra & Data)
1.  **Fixer le Dockerfile Backend** (Tini pour les zombies).
2.  **Fixer le mot de passe Admin** : Créer un script pour mettre à jour le hash du mot de passe `admin123` en base de données.

### Étape 2 : Implémentation Backend (Mail & Workflow)
3.  **Installer `nodemailer`** et configurer le service SMTP (via le serveur mail Host).
4.  **Corriger `register`** : Créer l'entité `Parent`/`AssMat` dès l'inscription (vide mais existante).
5.  **Corriger `validateUser`** : Ajouter l'envoi de mail de notification (Validé/Refusé).

### Étape 3 : Implémentation Frontend (Écrans Manquants)
6.  **Développer l'écran "Créer Gestionnaire"** : Formulaire (Nom, Prénom, Email, MDP) + Appel API.
7.  **Vérifier/Finir le Dashboard Gestionnaire** : Liste des utilisateurs "En attente" + Boutons Valider/Refuser.

### Étape 4 : Connexion (Workflow Complet)
8.  Tester le cycle complet :
    *   Login SuperAdmin -> Création Gestionnaire.
    *   Login Gestionnaire -> Vue vide.
    *   Inscription Parent -> Apparition dans la liste Gestionnaire.
    *   Validation par Gestionnaire -> Mail reçu par Parent.
    *   Login Parent -> Accès autorisé.

---
*Ce document sert de référence pour la suite des travaux.*

