Skip to content

refactor(zone): migrer le module vers server-nestjs - #2487

Merged
shikanime merged 5 commits into
mainfrom
pr/zone-migration
Oct 2, 2026
Merged

shikanime merged 5 commits into
mainfrom
pr/zone-migration

Conversation

@shikanime

@shikanime shikanime commented Aug 13, 2026 •

Copy link
Copy Markdown
Member

Issues liées

Refs #2486


Quel est le comportement actuel ?

Le module zone (zones, environnements par zone) est servi par l'ancienne application Fastify apps/server, et le routage nginx associé est géré séparément.

Quel est le nouveau comportement ?

Migration du module zone vers apps/server-nestjs :

  • ZoneController, ZoneService, ZoneModule.
  • zone-queries.utils.ts : sélections Prisma typées, linkZoneToClusters pour la composition transactionnelle.
  • zone-testing.utils.ts : fabriques faker pour les tests.
  • Enregistrement du module dans main.module.ts.
  • Parité des contrats et codes HTTP contre apps/server/src/resources/zone/.

Cette PR introduit-elle un breaking change ?

Non.

Autres informations

La bascule de routage nginx est extraite dans #2770 (PR stackée) pour être revue indépendamment.

Comment thread apps/server-nestjs/src/modules/zone/zone.service.ts Fixed
Comment thread apps/server-nestjs/src/modules/zone/zone.service.spec.ts Fixed
@github-actions github-actions Bot added the built label Aug 13, 2026
@shikanime shikanime changed the title pr/zone migration refactor(zone): migrer le module vers server-nestjs Aug 13, 2026
@shikanime
shikanime force-pushed the pr/zone-migration branch 4 times, most recently from cb3ed08 to 6e21bd7 Compare August 20, 2026 12:45
@shikanime
shikanime force-pushed the pr/zone-migration branch 3 times, most recently from 8ba885b to 0665f88 Compare August 24, 2026 07:39
@shikanime shikanime closed this Sep 1, 2026
@shikanime
shikanime deleted the pr/zone-migration branch September 1, 2026 10:29
@shikanime

Copy link
Copy Markdown
Member Author

Réouverte : couverture des familles restantes pour #1889 — le fermeture précédente était un tri, pas un rejet du travail.

@shikanime
shikanime restored the pr/zone-migration branch September 17, 2026 09:51
@shikanime

Copy link
Copy Markdown
Member Author

Réouverte : famille requise pour #1889. Branche recréée depuis le SHA d'origine (l'ancienne ref avait été supprimée).

@shikanime shikanime reopened this Sep 17, 2026
@shikanime shikanime self-assigned this Sep 17, 2026
@shikanime shikanime added this to the 9.27.0 milestone Sep 17, 2026
Comment thread apps/server-nestjs/src/modules/zone/zone.service.ts Outdated
Comment thread apps/server-nestjs/src/modules/zone/zone.controller.ts Outdated
Comment thread apps/server-nestjs/src/modules/zone/zone.module.ts Outdated
Comment thread apps/server-nestjs/src/main.module.ts Outdated
Comment thread pr2487-body.md Outdated
@shikanime
shikanime force-pushed the pr/zone-migration branch 2 times, most recently from bf68bcb to 319ea83 Compare September 23, 2026 13:16
shikanime added a commit that referenced this pull request Sep 23, 2026
Extrait du module zone (#2487) : la bascule de routage nginx vit
independamment du code NestJS et peut etre revue, mergée ou annulée
seule.

Refs #2486

Co-authored-by: Automata <automata@shikanime.studio>
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
Change-Id: I7285fc2d1279d9e71aea3c42f8d3fada6a6a6964
@shikanime
shikanime added this pull request to stack #2771 September 23, 2026 13:26
shikanime added a commit that referenced this pull request Sep 23, 2026
Extrait du module zone (#2487) : la bascule de routage nginx vit
independamment du code NestJS et peut etre revue, mergée ou annulée
seule.

Refs #2486

Co-authored-by: Automata <automata@shikanime.studio>
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
Change-Id: I7285fc2d1279d9e71aea3c42f8d3fada6a6a6964
shikanime added a commit that referenced this pull request Oct 1, 2026
Aligne le module user sur le pattern établi par le module zone (#2487) :
- `user-queries.utils.ts` : suppression du `userSelect`/`UserRecord` morts,
  signatures sur `Prisma.TransactionClient`, `createUser` purement DB (la
  validation du doublon email monte dans le service en `ConflictException`).
- `user.service.ts` : extraction de `resolveAdminRoleIds`,
  `patchUsersInTx`, `emitImpactedRoleEvents` ; patch des rôles sous
  transaction.
- `user.module.ts` : imports repliés sur `InfrastructureModule` (déjà
  exporté par celui-ci).

Refs #2738

Co-authored-by: Automata <automata@shikanime.studio>
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
Change-Id: I3bd632f95dd466e585698eba738efcd86a6a6964
@shikanime
shikanime force-pushed the pr/zone-migration branch 3 times, most recently from 8e0d53c to 59df05e Compare October 1, 2026 15:15
shikanime added a commit that referenced this pull request Oct 1, 2026
Extrait du module zone (#2487) : la bascule de routage nginx vit
independamment du code NestJS et peut etre revue, mergée ou annulée
seule.

Refs #2486

Co-authored-by: Automata <automata@shikanime.studio>
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
Change-Id: I7285fc2d1279d9e71aea3c42f8d3fada6a6a6964
shikanime added a commit that referenced this pull request Oct 2, 2026
Aligne le module user sur le pattern établi par le module zone (#2487) :
- `user-queries.utils.ts` : suppression du `userSelect`/`UserRecord` morts,
  signatures sur `Prisma.TransactionClient`, `createUser` purement DB (la
  validation du doublon email monte dans le service en `ConflictException`).
- `user.service.ts` : extraction de `resolveAdminRoleIds`,
  `patchUsersInTx`, `emitImpactedRoleEvents` ; patch des rôles sous
  transaction.
- `user.module.ts` : imports repliés sur `InfrastructureModule` (déjà
  exporté par celui-ci).

Refs #2738

Co-authored-by: Automata <automata@shikanime.studio>
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
Change-Id: I3bd632f95dd466e585698eba738efcd86a6a6964
shikanime added a commit that referenced this pull request Oct 2, 2026
Extrait du module zone (#2487) : la bascule de routage nginx vit
independamment du code NestJS et peut etre revue, mergée ou annulée
seule.

Refs #2486

Co-authored-by: Automata <automata@shikanime.studio>
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
Change-Id: I7285fc2d1279d9e71aea3c42f8d3fada6a6a6964
shikanime added a commit that referenced this pull request Oct 2, 2026
Aligne le module user sur le pattern établi par le module zone (#2487) :
- `user-queries.utils.ts` : suppression du `userSelect`/`UserRecord` morts,
  signatures sur `Prisma.TransactionClient`, `createUser` purement DB (la
  validation du doublon email monte dans le service en `ConflictException`).
- `user.service.ts` : extraction de `resolveAdminRoleIds`,
  `patchUsersInTx`, `emitImpactedRoleEvents` ; patch des rôles sous
  transaction.
- `user.module.ts` : imports repliés sur `InfrastructureModule` (déjà
  exporté par celui-ci).

Refs #2738

Co-authored-by: Automata <automata@shikanime.studio>
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
Change-Id: I3bd632f95dd466e585698eba738efcd86a6a6964
@shikanime
shikanime force-pushed the pr/zone-migration branch 2 times, most recently from 28cbe6b to 3df3619 Compare October 2, 2026 11:44
Comment thread apps/server-nestjs/src/modules/events/app-events.service.ts
Comment thread apps/server-nestjs/src/modules/zone/zone.controller.ts Outdated

@StephaneTrebel StephaneTrebel left a comment •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

La migration ne peut pas être acceptée : emitZoneEvent persiste une chaîne vide dans le champ UUID Log.projectId, ce qui transforme chaque mutation de zone réussie en erreur 500 après ses effets de bord. Les paramètres zoneId des écritures ne sont par ailleurs plus validés comme UUID par le contrat ; les deux écarts sont commentés en ligne. Ledger #2486 : 1/3 (tests ajoutés et CI verte, mais fonctionnalité bloquée et aucune documentation dans le diff) ; tous les anciens fils sont résolus, la branche est à 4 commits de main et le pont Keycloak/GitLab doit être livré via #2807 avant la bascule nginx.

shikanime added a commit that referenced this pull request Oct 2, 2026
Aligne le module user sur le pattern établi par le module zone (#2487) :
- `user-queries.utils.ts` : suppression du `userSelect`/`UserRecord` morts,
  signatures sur `Prisma.TransactionClient`, `createUser` purement DB (la
  validation du doublon email monte dans le service en `ConflictException`).
- `user.service.ts` : extraction de `resolveAdminRoleIds`,
  `patchUsersInTx`, `emitImpactedRoleEvents` ; patch des rôles sous
  transaction.
- `user.module.ts` : imports repliés sur `InfrastructureModule` (déjà
  exporté par celui-ci).

Refs #2738

Co-authored-by: Automata <automata@shikanime.studio>
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
Change-Id: I3bd632f95dd466e585698eba738efcd86a6a6964
shikanime added a commit that referenced this pull request Oct 2, 2026
Aligne le module user sur le pattern établi par le module zone (#2487) :
- `user-queries.utils.ts` : suppression du `userSelect`/`UserRecord` morts,
  signatures sur `Prisma.TransactionClient`, `createUser` purement DB (la
  validation du doublon email monte dans le service en `ConflictException`).
- `user.service.ts` : extraction de `resolveAdminRoleIds`,
  `patchUsersInTx`, `emitImpactedRoleEvents` ; patch des rôles sous
  transaction.
- `user.module.ts` : imports repliés sur `InfrastructureModule` (déjà
  exporté par celui-ci).

Refs #2738

Co-authored-by: Automata <automata@shikanime.studio>
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
Change-Id: I3bd632f95dd466e585698eba738efcd86a6a6964
shikanime added a commit that referenced this pull request Oct 2, 2026
Extrait du module zone (#2487) : la bascule de routage nginx vit
independamment du code NestJS et peut etre revue, mergée ou annulée
seule.

Refs #2486

Co-authored-by: Automata <automata@shikanime.studio>
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
Change-Id: I7285fc2d1279d9e71aea3c42f8d3fada6a6a6964

@shikanime shikanime left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict : Commentaire

Migration du module zone vérifiée à la tête 9626bfd4 : les deux constats de la revue du 02/10 sont corrigés (projectId: null persisté via emitAndLog, ParseUUIDPipe sur PUT/DELETE avec test HTTP 400), réponses apportées sur les deux fils. La chaîne de réconciliation (émission → résultats fusionnés → 422 → suppression) respecte l'ordre legacy ; le pont keycloak/gitlab reste porté par #2807 avant la bascule #2770. CI verte à la tête (run 37005627170), scan de sécurité du diff : néant.

✨ La suppression placée derrière la réconciliation (422 avant prisma.zone.delete) reproduit exactement l'ordre du legacy zone/business.ts — la correction vit à la racine du service, pas une garde par route.

StephaneTrebel
StephaneTrebel previously approved these changes Oct 2, 2026

@StephaneTrebel StephaneTrebel left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Les deux constats bloquants sont corrigés : les journaux de zone portent désormais projectId null et les paramètres zoneId sont validés avant Prisma, avec les tests HTTP associés. Ledger #2486 : 2/3 (documentation absente du diff) ; fils résolus et CI verte sur cette tête, le pont Keycloak/GitLab #2807 reste le prérequis de la bascule #2770.

@StephaneTrebel StephaneTrebel left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approbation renouvelée après la mise à jour de tête : les correctifs de journalisation et de validation UUID restent présents. CI verte et aucun fil ouvert ; #2807 reste requis avant la bascule #2770.

shikanime and others added 5 commits October 2, 2026 17:09
Co-authored-by: Automata <automata@shikanime.studio>
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
Change-Id: I2f7a4c98661c6c054213ef5b2ba5dec26a6a6964

Co-authored-by: Automata <automata@shikanime.studio>
Co-authored-by: Automata <automata@shikanime.studio>
Co-authored-by: Automata <automata@shikanime.studio>
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
Change-Id: I551760c6cea6ac8d75d0b10b89764f426a6a6964
@cloud-pi-native-sonarqube

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

built refactor Refactor code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants