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_PASSWORD=root
POSTGRES_PORT=5433 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
PGADMIN_EMAIL=admin@admin.com PGADMIN_EMAIL=admin@admin.com
PGADMIN_PASSWORD=admin PGADMIN_PASSWORD=admin

View File

@@ -1,31 +1,29 @@
# Plan de Migration : NestJS/Prisma → Symfony/API Platform # Plan de Migration : NestJS/Prisma → Symfony/API Platform
**Date de création**: 2026-01-10 **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. **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) - ✅ Bundles Symfony installés (JWT, VichUploader, Uid)
-JWT configuré avec clés RSA -Entité Profile créée (UserInterface + session ready)
- ✅ Entité Profile créée (UserInterface + JWT-ready)
- ✅ pgAdmin configuré et connecté à PostgreSQL - ✅ pgAdmin configuré et connecté à PostgreSQL
- ✅ Docker fonctionnel (web:8081, db:5433, pgadmin:5050) - ✅ Docker fonctionnel (web:8081, db:5433, pgadmin:5050)
- ✅ Authentification JWT 100% opérationnelle
- ✅ API Platform configurée avec préfixe `/api` - ✅ API Platform configurée avec préfixe `/api`
- ⚠️ JWT désactivé temporairement (session cookie pour compatibilité front)
### ✅ Phase 2 : Tests & Validation (TERMINÉE) ### ✅ Phase 2 : Tests & Validation (TERMINÉE, version session)
- ✅ Route `/api/test` fonctionnelle
- ✅ Login `/api/login_check` génère token JWT
- ✅ Routes protégées validées avec Bearer token
- ✅ API Platform retourne JSON-LD correctement - ✅ 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`) ### 📦 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 | | Table | Lignes | Priorité | Commentaire |
|-------|--------|----------|-------------| |-------|--------|----------|-------------|
@@ -45,14 +43,14 @@
| `machine_product_links` | 0 | 🟢 Basse | Table vide | | `machine_product_links` | 0 | 🟢 Basse | Table vide |
| `type_machine_*_requirements` (×3) | 22 | 🟡 Moyenne | Config requirements types | | `type_machine_*_requirements` (×3) | 22 | 🟡 Moyenne | Config requirements types |
| `_*Constructeurs` (×4) | 14 | 🟡 Moyenne | Tables de liaison ManyToMany | | `_*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** : **Complexités identifiées (résolues ou contournées)** :
- ✅ IDs CUID Prisma → garder en `string(30)` pour compatibilité - ✅ IDs CUID Prisma → conservés en `string(36)` côté Doctrine (compatibles)
- ⚠️ Champs JSON complexes (components, criticalParts, machinePieces, specifications) - Champs JSON complexes importés (components, criticalParts, machinePieces, specifications)
- ⚠️ Relations polymorphiques (Document → Machine/Composant/Piece/Product/Site) - Relations polymorphiques Document + CustomFieldValue migrées
- ⚠️ Tables de liaison ManyToMany (4 tables `_*Constructeurs`) - Tables de liaison ManyToMany (`_*Constructeurs`) migrées
- ⚠️ System de custom fields dynamiques (95 définitions, 203 valeurs) - ✅ Custom fields dynamiques migrés (95 définitions, 203 valeurs)
### 🏗️ Structure Actuelle des Projets ### 🏗️ Structure Actuelle des Projets
@@ -62,45 +60,53 @@
│ ├── src/ # 18 modules NestJS │ ├── src/ # 18 modules NestJS
│ ├── prisma/schema.prisma # Schéma DB source │ ├── prisma/schema.prisma # Schéma DB source
│ └── package.json │ └── package.json
├── Inventory_frontend/ # Nuxt 3 (105 fichiers) ├── Inventory_frontend/ # Nuxt 3 (front principal)
│ ├── app/ │ ├── app/
│ │ ├── composables/ │ │ ├── composables/
│ │ └── pages/ │ │ └── pages/
│ └── package.json │ └── package.json
├── src/ # ⚡ Nouveau: Symfony backend ├── src/ # ⚡ Symfony backend
│ ├── Entity/Profile.php # 1/16 entités créées │ ├── Entity/ # Toutes entités créées
│ ├── Controller/ # Session + custom fields + documents + skeleton
│ └── Repository/ │ └── Repository/
├── config/ # Configuration Symfony ├── config/ # Configuration Symfony
├── migrations/ # Migrations Doctrine ├── migrations/ # Migrations Doctrine
└── docker-compose.yml # Web + DB + pgAdmin └── 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 #### Étape 3.1 : Réorganisation du Projet (optionnel)
- [ ] Déplacer `Inventory_frontend/` vers `frontend/` - [ ] Déplacer `Inventory_frontend/` vers `frontend/` (si besoin)
- [ ] Archiver `Inventory_backend/` vers `_archives/backend_nestjs/` - [ ] Archiver `Inventory_backend/` vers `_archives/backend_nestjs/`
- [ ] Créer structure finale unifiée
- [ ] Mettre à jour .gitignore - [ ] Mettre à jour .gitignore
#### Étape 3.2 : Création des 15 Entités Manquantes #### Étape 3.2 : Entités & API Platform (TERMINÉE)
- [ ] Site (priorité 1) - [x] Site, TypeMachine, Machine
- [ ] TypeMachine (priorité 1) - [x] ModelType, Composant, Piece, Product
- [ ] Machine (priorité 1) - [x] Constructeur, Document
- [ ] ModelType (priorité 2) - [x] CustomField, CustomFieldValue
- [ ] Composant, Piece, Product (priorité 2) - [x] MachineComponentLink, MachinePieceLink, MachineProductLink
- [ ] Constructeur (priorité 3) - [x] TypeMachine*Requirement (×3)
- [ ] Document (priorité 3)
- [ ] CustomField, CustomFieldValue (priorité 3)
- [ ] MachineComponentLink, MachinePieceLink, MachineProductLink (priorité 3)
- [ ] TypeMachine*Requirement (×3) (priorité 4)
#### Étape 3.3 : Migration des Données #### Étape 3.3 : Migration des Données (TERMINÉE)
- [ ] Créer backup de `inventory-data` - [x] Backup `inventory-data`
- [ ] Générer migrations Doctrine - [x] Schéma Doctrine aligné
- [ ] Comparer schémas Prisma vs Doctrine - [x] Import `inventory-data``inventory`
- [ ] Copier les données `inventory-data``inventory` - [x] Validation des comptes (script `scripts/validate-migration.php`)
- [ ] Valider intégrité (count + foreign keys)
#### É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. 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. C'est un bdd local dans le docker.
### Frontend ### 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 Pour le frontend, il suffit de taper la commande suivante qui va lancer le serveur de dev
```bash ```bash
make dev-nuxt make dev-nuxt