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_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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user