From d2a1cd0cc4228c4e44451723cfe69e2841ea88cb Mon Sep 17 00:00:00 2001 From: r-dev Date: Sun, 11 Jan 2026 17:06:36 +0100 Subject: [PATCH] docs: mettre a jour le plan et le carnet de bord --- CARNET_DE_BORD.md | 43 ++++++++++++++++++++++ MIGRATION_PLAN.md | 90 +++++++++++++++++++++++++---------------------- README.md | 1 + 3 files changed, 92 insertions(+), 42 deletions(-) diff --git a/CARNET_DE_BORD.md b/CARNET_DE_BORD.md index 704f8d4..6db29ac 100644 --- a/CARNET_DE_BORD.md +++ b/CARNET_DE_BORD.md @@ -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 diff --git a/MIGRATION_PLAN.md b/MIGRATION_PLAN.md index 34b4211..5737b7b 100644 --- a/MIGRATION_PLAN.md +++ b/MIGRATION_PLAN.md @@ -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 --- diff --git a/README.md b/README.md index ce63263..0e5421c 100644 --- a/README.md +++ b/README.md @@ -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