From e5f1a5b7d15158176f3df1ef7d29505f04225432 Mon Sep 17 00:00:00 2001 From: Oussama Miladi <35038682+omiladi@users.noreply.github.com> Date: Wed, 20 May 2026 10:41:07 +0200 Subject: [PATCH 1/4] fix: use bitnami image for strangler --- apps/nginx-strangler/conf.d/routing.conf | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/apps/nginx-strangler/conf.d/routing.conf b/apps/nginx-strangler/conf.d/routing.conf index 1245ffdc4..a41b88a41 100644 --- a/apps/nginx-strangler/conf.d/routing.conf +++ b/apps/nginx-strangler/conf.d/routing.conf @@ -33,6 +33,21 @@ server { # Taille des headers (nécessaire pour les tokens Keycloak) large_client_header_buffers 4 32k; + + + # ── Routes migrées vers NestJS ──────────────────────────────────────────── + # (vide au démarrage — toutes les routes sont en fallback sur server-legacy) + # + # Exemple (à décommenter lors de la Vague 1) : + # + # # [Vague 1 - system/health] 2026-XX-XX + # location = /api/v1/system/health { + # proxy_pass http://server-nestjs; + # proxy_set_header Host $host; + # proxy_set_header X-Real-IP $remote_addr; + # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + # proxy_set_header X-Forwarded-Proto $scheme; + # } # Healthcheck de nginx-strangler lui-même location = /health { From 0ebc26f2fb97716fd9a927a1ea7f3cc988c690db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20TR=C3=89BEL=20=28Perso=29?= Date: Thu, 21 May 2026 16:37:36 +0200 Subject: [PATCH 2/4] chore(client): explicitely add eslint as a devDep --- apps/client/package.json | 1 + pnpm-lock.yaml | 73 ++++++++++++++++++---------------------- 2 files changed, 33 insertions(+), 41 deletions(-) diff --git a/apps/client/package.json b/apps/client/package.json index 89898f957..6512158b5 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -60,6 +60,7 @@ "@vitest/coverage-v8": "^4.1.5", "@vue/eslint-config-typescript": "^14.7.0", "chalk": "^5.6.2", + "eslint": "^10.1.0", "eslint-plugin-vue": "^10.8.0", "jsdom": "^25.0.1", "rimraf": "^6.1.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5281124de..2b73adfdc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -135,6 +135,9 @@ importers: chalk: specifier: ^5.6.2 version: 5.6.2 + eslint: + specifier: ^10.1.0 + version: 10.3.0(jiti@2.6.1) eslint-plugin-vue: specifier: ^10.8.0 version: 10.8.0(@stylistic/eslint-plugin@5.10.0(eslint@10.3.0(jiti@2.6.1)))(@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.3.0(jiti@2.6.1))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.6.1))) @@ -2306,10 +2309,6 @@ packages: resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/object-schema@3.0.3': - resolution: {integrity: sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/object-schema@3.0.5': resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -2461,10 +2460,6 @@ packages: resolution: {integrity: sha512-xS8HAzhRSQXqMfD779EgbZmPcgkaNW8Hf2anrwvvPYb9Tt0vP9CtzOqj+8GYSOUQqgcRFejmCR9WoAgZJamB1g==} engines: {pnpm: '>=8'} - '@humanfs/core@0.19.1': - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} - engines: {node: '>=18.18.0'} - '@humanfs/core@0.19.2': resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} engines: {node: '>=18.18.0'} @@ -9581,8 +9576,8 @@ snapshots: '@apidevtools/json-schema-ref-parser': 14.0.1 '@apidevtools/openapi-schemas': 2.1.0 '@apidevtools/swagger-methods': 3.0.2 - ajv: 8.18.0 - ajv-draft-04: 1.0.0(ajv@8.18.0) + ajv: 8.20.0 + ajv-draft-04: 1.0.0(ajv@8.20.0) call-me-maybe: 1.0.2 openapi-types: 12.1.3 @@ -10853,9 +10848,9 @@ snapshots: '@eslint/config-array@0.23.3': dependencies: - '@eslint/object-schema': 3.0.3 + '@eslint/object-schema': 3.0.5 debug: 4.4.3(supports-color@5.5.0) - minimatch: 10.2.4 + minimatch: 10.2.5 transitivePeerDependencies: - supports-color @@ -10873,7 +10868,7 @@ snapshots: '@eslint/config-helpers@0.5.3': dependencies: - '@eslint/core': 1.1.1 + '@eslint/core': 1.2.1 '@eslint/config-helpers@0.5.5': dependencies: @@ -10925,8 +10920,6 @@ snapshots: '@eslint/object-schema@2.1.7': {} - '@eslint/object-schema@3.0.3': {} - '@eslint/object-schema@3.0.5': {} '@eslint/plugin-kit@0.4.1': @@ -10936,7 +10929,7 @@ snapshots: '@eslint/plugin-kit@0.6.1': dependencies: - '@eslint/core': 1.1.1 + '@eslint/core': 1.2.1 levn: 0.4.1 '@eslint/plugin-kit@0.7.1': @@ -10954,8 +10947,8 @@ snapshots: '@fastify/ajv-compiler@3.6.0': dependencies: - ajv: 8.18.0 - ajv-formats: 2.1.1(ajv@8.18.0) + ajv: 8.20.0 + ajv-formats: 2.1.1(ajv@8.20.0) fast-uri: 2.4.0 '@fastify/ajv-compiler@4.0.5': @@ -11160,15 +11153,13 @@ snapshots: '@himenon/argocd-typescript-openapi@1.2.2': {} - '@humanfs/core@0.19.1': {} - '@humanfs/core@0.19.2': dependencies: '@humanfs/types': 0.15.0 '@humanfs/node@0.16.7': dependencies: - '@humanfs/core': 0.19.1 + '@humanfs/core': 0.19.2 '@humanwhocodes/retry': 0.4.3 '@humanfs/node@0.16.8': @@ -14025,7 +14016,7 @@ snapshots: '@typescript-eslint/types': 8.57.0 '@typescript-eslint/visitor-keys': 8.57.0 debug: 4.4.3(supports-color@5.5.0) - minimatch: 10.2.4 + minimatch: 10.2.5 semver: 7.7.4 tinyglobby: 0.2.15 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -14262,7 +14253,7 @@ snapshots: obug: 2.1.1 std-env: 4.1.0 tinyrainbow: 3.1.0 - vitest: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@24.12.0)(@vitest/coverage-v8@4.1.5)(jsdom@25.0.1)(msw@2.12.10(@types/node@24.12.0)(typescript@5.9.3))(vite@7.3.3(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.47.1)(yaml@2.8.2)) + vitest: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@24.12.0)(@vitest/coverage-v8@4.1.5)(jsdom@25.0.1)(msw@2.12.10(@types/node@24.12.0)(typescript@5.9.3))(vite@7.3.3(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.47.1)(yaml@2.8.4)) '@vitest/eslint-plugin@1.6.17(@typescript-eslint/eslint-plugin@8.59.2(@typescript-eslint/parser@8.59.2(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3)(vitest@4.1.5)': dependencies: @@ -14565,9 +14556,9 @@ snapshots: agent-base@7.1.4: {} - ajv-draft-04@1.0.0(ajv@8.18.0): + ajv-draft-04@1.0.0(ajv@8.20.0): optionalDependencies: - ajv: 8.18.0 + ajv: 8.20.0 ajv-formats-draft2019@1.6.1(ajv@8.18.0): dependencies: @@ -14581,13 +14572,13 @@ snapshots: optionalDependencies: ajv: 8.18.0 - ajv-formats@3.0.1(ajv@8.17.1): + ajv-formats@2.1.1(ajv@8.20.0): optionalDependencies: - ajv: 8.17.1 + ajv: 8.20.0 - ajv-formats@3.0.1(ajv@8.18.0): + ajv-formats@3.0.1(ajv@8.17.1): optionalDependencies: - ajv: 8.18.0 + ajv: 8.17.1 ajv-formats@3.0.1(ajv@8.20.0): optionalDependencies: @@ -14597,13 +14588,13 @@ snapshots: dependencies: ajv: 8.18.0 - ajv-keywords@3.5.2(ajv@6.14.0): + ajv-keywords@3.5.2(ajv@6.15.0): dependencies: - ajv: 6.14.0 + ajv: 6.15.0 - ajv-keywords@5.1.0(ajv@8.18.0): + ajv-keywords@5.1.0(ajv@8.20.0): dependencies: - ajv: 8.18.0 + ajv: 8.20.0 fast-deep-equal: 3.1.3 ajv@6.14.0: @@ -16029,8 +16020,8 @@ snapshots: fast-json-stringify@5.16.1: dependencies: '@fastify/merge-json-schemas': 0.1.1 - ajv: 8.18.0 - ajv-formats: 3.0.1(ajv@8.18.0) + ajv: 8.20.0 + ajv-formats: 3.0.1(ajv@8.20.0) fast-deep-equal: 3.1.3 fast-uri: 2.4.0 json-schema-ref-resolver: 1.0.1 @@ -16459,7 +16450,7 @@ snapshots: glob@13.0.0: dependencies: - minimatch: 10.2.4 + minimatch: 10.2.5 minipass: 7.1.3 path-scurry: 2.0.2 @@ -18665,15 +18656,15 @@ snapshots: schema-utils@3.3.0: dependencies: '@types/json-schema': 7.0.15 - ajv: 6.14.0 - ajv-keywords: 3.5.2(ajv@6.14.0) + ajv: 6.15.0 + ajv-keywords: 3.5.2(ajv@6.15.0) schema-utils@4.3.3: dependencies: '@types/json-schema': 7.0.15 - ajv: 8.18.0 - ajv-formats: 2.1.1(ajv@8.18.0) - ajv-keywords: 5.1.0(ajv@8.18.0) + ajv: 8.20.0 + ajv-formats: 2.1.1(ajv@8.20.0) + ajv-keywords: 5.1.0(ajv@8.20.0) schemes@1.4.0: dependencies: From 3720811b23b5f92fef8ae062a6eb3388ea278fbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20TR=C3=89BEL=20=28Perso=29?= Date: Thu, 21 May 2026 16:41:01 +0200 Subject: [PATCH 3/4] chore(client): fix custom role management --- .../client/src/components/ProjectRoleForm.vue | 91 +++++---- apps/client/src/views/ProjectDashboard.vue | 193 +++++++++++++----- 2 files changed, 187 insertions(+), 97 deletions(-) diff --git a/apps/client/src/components/ProjectRoleForm.vue b/apps/client/src/components/ProjectRoleForm.vue index d145bee1b..ce466ec4f 100644 --- a/apps/client/src/components/ProjectRoleForm.vue +++ b/apps/client/src/components/ProjectRoleForm.vue @@ -1,6 +1,12 @@ From 532ebcfe1c831274e64367a58639a5c8b69a1f7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20TR=C3=89BEL=20=28Perso=29?= Date: Thu, 21 May 2026 17:10:45 +0200 Subject: [PATCH 4/4] chore: update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3a89503a2..a1a5a7a10 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Console Cloud π Native +# Console Cloud π (PI) Native La console Cloud π Native est une application web ayant pour but de piloter des services dans un cluster Kubernetes afin de fournir une plateforme cloud qui accompagne les produits numériques lors de toutes les phases de leur cycle de vie.