docs: mettre a jour le plan et le carnet de bord

This commit is contained in:
2026-01-11 17:06:36 +01:00
parent 5222a6bbf9
commit d2a1cd0cc4
3 changed files with 92 additions and 42 deletions

View File

@@ -1,31 +1,29 @@
# Plan de Migration : NestJS/Prisma → Symfony/API Platform
**Date de création**: 2026-01-10
**Dernière mise à jour**: 2026-01-10 20:30
**Dernière mise à jour**: 2026-01-11
**Objectif**: Migrer le backend Inventory (NestJS + Prisma) vers Symfony 8 + API Platform avec JWT auth, tout en conservant les données existantes et en minimisant les disruptions.
---
## 📊 État des Lieux - 2026-01-10 20:30
## 📊 État des Lieux - 2026-01-11
### ✅ Phase 1 : Préparation (TERMINÉE)
### ✅ Phase 1 : Préparation (TERMINÉE, ajustée)
- ✅ Bundles Symfony installés (JWT, VichUploader, Uid)
-JWT configuré avec clés RSA
- ✅ Entité Profile créée (UserInterface + JWT-ready)
-Entité Profile créée (UserInterface + session ready)
- ✅ pgAdmin configuré et connecté à PostgreSQL
- ✅ Docker fonctionnel (web:8081, db:5433, pgadmin:5050)
- ✅ Authentification JWT 100% opérationnelle
- ✅ API Platform configurée avec préfixe `/api`
- ⚠️ JWT désactivé temporairement (session cookie pour compatibilité front)
### ✅ Phase 2 : Tests & Validation (TERMINÉE)
- ✅ Route `/api/test` fonctionnelle
- ✅ Login `/api/login_check` génère token JWT
- ✅ Routes protégées validées avec Bearer token
### ✅ Phase 2 : Tests & Validation (TERMINÉE, version session)
- ✅ API Platform retourne JSON-LD correctement
- ✅ Routes session `/api/session/profile` + `/api/session/profiles` opérationnelles
- ✅ CORS prévu via Nelmio (mais variable d'env à injecter dans container)
### 📦 Données à Migrer (Base: `inventory-data`)
**Total: 673 lignes réparties sur 22 tables**
**Total: 673 lignes réparties sur 22 tables (migrées)**
| Table | Lignes | Priorité | Commentaire |
|-------|--------|----------|-------------|
@@ -45,14 +43,14 @@
| `machine_product_links` | 0 | 🟢 Basse | Table vide |
| `type_machine_*_requirements` (×3) | 22 | 🟡 Moyenne | Config requirements types |
| `_*Constructeurs` (×4) | 14 | 🟡 Moyenne | Tables de liaison ManyToMany |
| `profiles` | 2 | 🟢 Basse | Utilisateurs (déjà migrés) |
| `profiles` | 2 | 🟢 Basse | Utilisateurs session (migrés) |
**Complexités identifiées** :
- ✅ IDs CUID Prisma → garder en `string(30)` pour compatibilité
- ⚠️ Champs JSON complexes (components, criticalParts, machinePieces, specifications)
- ⚠️ Relations polymorphiques (Document → Machine/Composant/Piece/Product/Site)
- ⚠️ Tables de liaison ManyToMany (4 tables `_*Constructeurs`)
- ⚠️ System de custom fields dynamiques (95 définitions, 203 valeurs)
**Complexités identifiées (résolues ou contournées)** :
- ✅ IDs CUID Prisma → conservés en `string(36)` côté Doctrine (compatibles)
- Champs JSON complexes importés (components, criticalParts, machinePieces, specifications)
- Relations polymorphiques Document + CustomFieldValue migrées
- Tables de liaison ManyToMany (`_*Constructeurs`) migrées
- ✅ Custom fields dynamiques migrés (95 définitions, 203 valeurs)
### 🏗️ Structure Actuelle des Projets
@@ -62,45 +60,53 @@
│ ├── src/ # 18 modules NestJS
│ ├── prisma/schema.prisma # Schéma DB source
│ └── package.json
├── Inventory_frontend/ # Nuxt 3 (105 fichiers)
├── Inventory_frontend/ # Nuxt 3 (front principal)
│ ├── app/
│ │ ├── composables/
│ │ └── pages/
│ └── package.json
├── src/ # ⚡ Nouveau: Symfony backend
│ ├── Entity/Profile.php # 1/16 entités créées
├── src/ # ⚡ Symfony backend
│ ├── Entity/ # Toutes entités créées
│ ├── Controller/ # Session + custom fields + documents + skeleton
│ └── Repository/
├── config/ # Configuration Symfony
├── migrations/ # Migrations Doctrine
└── docker-compose.yml # Web + DB + pgAdmin
```
### 🎯 Prochaines Étapes (Phase 3)
### 🎯 Prochaines Étapes (Phase 3 - Mise en production fonctionnelle)
#### Étape 3.1 : Réorganisation du Projet
- [ ] Déplacer `Inventory_frontend/` vers `frontend/`
#### Étape 3.1 : Réorganisation du Projet (optionnel)
- [ ] Déplacer `Inventory_frontend/` vers `frontend/` (si besoin)
- [ ] Archiver `Inventory_backend/` vers `_archives/backend_nestjs/`
- [ ] Créer structure finale unifiée
- [ ] Mettre à jour .gitignore
#### Étape 3.2 : Création des 15 Entités Manquantes
- [ ] Site (priorité 1)
- [ ] TypeMachine (priorité 1)
- [ ] Machine (priorité 1)
- [ ] ModelType (priorité 2)
- [ ] Composant, Piece, Product (priorité 2)
- [ ] Constructeur (priorité 3)
- [ ] Document (priorité 3)
- [ ] CustomField, CustomFieldValue (priorité 3)
- [ ] MachineComponentLink, MachinePieceLink, MachineProductLink (priorité 3)
- [ ] TypeMachine*Requirement (×3) (priorité 4)
#### Étape 3.2 : Entités & API Platform (TERMINÉE)
- [x] Site, TypeMachine, Machine
- [x] ModelType, Composant, Piece, Product
- [x] Constructeur, Document
- [x] CustomField, CustomFieldValue
- [x] MachineComponentLink, MachinePieceLink, MachineProductLink
- [x] TypeMachine*Requirement (×3)
#### Étape 3.3 : Migration des Données
- [ ] Créer backup de `inventory-data`
- [ ] Générer migrations Doctrine
- [ ] Comparer schémas Prisma vs Doctrine
- [ ] Copier les données `inventory-data``inventory`
- [ ] Valider intégrité (count + foreign keys)
#### Étape 3.3 : Migration des Données (TERMINÉE)
- [x] Backup `inventory-data`
- [x] Schéma Doctrine aligné
- [x] Import `inventory-data``inventory`
- [x] Validation des comptes (script `scripts/validate-migration.php`)
#### Étape 3.4 : Front Nuxt (EN COURS)
- [x] Base URL API -> `http://localhost:8081/api`
- [x] Parsing JSON-LD dans composables
- [x] Normalisation des relations vers IRI
- [x] Endpoints session profile compatibles
- [ ] Corriger CORS (injecter `CORS_ALLOW_ORIGIN` dans container + clear cache)
- [ ] Valider le squelette machine (endpoint `/api/machines/{id}/skeleton`)
- [ ] Valider documents catalogue (composant/piece/produit)
#### Étape 3.5 : Sécurité (À FAIRE)
- [ ] Réactiver JWT (après stabilisation)
- [ ] Ajouter refresh token si nécessaire
---