docs: mettre a jour le plan et le carnet de bord
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user