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

@@ -198,6 +198,49 @@ POSTGRES_USER=root
POSTGRES_PASSWORD=root
POSTGRES_PORT=5433
---
## ✅ Phase 2 : Migration DB + Frontend (TERMINÉE - 10/01/2026)
### Ce qui a été fait
#### 1. Entités Doctrine alignées Prisma ✅
- **Toutes les entités manquantes** créées (Machine, ModelType, Composant, Piece, Product, Links, Requirements, CustomField, Document, etc.)
- **IDs en string(36)** pour compatibilité CUID/UUID
- **Colonnes Prisma en camelCase** conservées via `name="..."` (ex: `machineId`, `createdAt`, `supplierPrice`)
- **Corrections** :
- `Document.path` passé en `TEXT`
- `CustomField.options` nullable
- `TypeMachineComponentRequirement.required` corrigé
#### 2. Migration DB inventory-data → inventory ✅
- **Dump data-only + normalisation** (conversion des identifiants quoted vers lowercase)
- **Mapping table Prisma** : `"ModelType"` → `model_types`
- **Exclusions** : `profiles`, `_prisma_migrations`
- **Import validé** : `Counts match for all tables.`
Scripts utiles :
```bash
scripts/normalize-dump.py
scripts/validate-migration.php
```
#### 3. Frontend basculé sur Inventory_frontend ✅
- `make dev-nuxt` pointe vers `Inventory_frontend/`
- `README.md` mis à jour
- **Base API** ajustée : `http://localhost:8081/api`
Fichiers modifiés :
```
makefile
README.md
Inventory_frontend/.env
Inventory_frontend/nuxt.config.ts
Inventory_frontend/app/services/modelTypes.ts
```
---
# pgAdmin
PGADMIN_EMAIL=admin@admin.com
PGADMIN_PASSWORD=admin

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
---

View File

@@ -37,6 +37,7 @@ Vous pouvez modifier le port si nécessaire.
La bdd est déja pré-configuré dans PhpStorm, il suffit de rentrer les infos du .env.docker.local pour se connecter.
C'est un bdd local dans le docker.
### Frontend
Le frontend utilise le dossier `Inventory_frontend/`.
Pour le frontend, il suffit de taper la commande suivante qui va lancer le serveur de dev
```bash
make dev-nuxt