Skip to content

TsEnumGenerator ​

Console .NET qui écrit les énumérations TypeScript du frontend à partir des enums C# du backend, par réflexion. Le C# est la source unique ; le fichier produit est versionné et vérifié par l'intégration continue.

TechnologieC# .NET 9, console
Point d'entréeTsEnumGenerator/Program.cs
Référence projetdotnet/backend — pour réfléchir sur ses enums
Sortievue/src/config/generated/enums.ts
Hors solutionLe projet n'est pas listé dans Superviseur.sln

Exécution ​

powershell
./scripts/generate-ts-enums.ps1                                    # chemin de sortie résolu par le script
dotnet run --project dotnet/tools/TsEnumGenerator -- <chemin.ts>   # chemin explicite

Mécanismes non évidents ​

La liste des enums exposés est écrite à la main ​

Le tableau exported de Program.cs énumère les 12 types repris : ZoneStatus, PanelType, IncidentScope, CommandScope, PanelConnectionState, ConnectionType, EventType, LogSeverity, PanelAddressing, ModbusReadFunction, IncidentEncoding, SeverityFamily. Ajouter un enum au backend ne l'expose pas : il faut l'ajouter à ce tableau.

La valeur d'un membre est son nom, pas son entier ​

C'est la forme sérialisée par JsonStringEnumConverter côté backend. Le TypeScript produit est un objet as const doublé d'un type d'union — pas un enum TypeScript.

L'intégration continue échoue si le fichier est périmé ​

Le job Backend-Build de ci.yml relance le générateur puis compare avec git diff --exit-code. Un enum modifié sans régénération fait rougir la CI, avec pour seul message de demander la régénération.

Contraintes actives ​

ContrainteConséquence si elle est ignorée
vue/src/config/generated/enums.ts ne s'édite jamais à la mainL'édition est perdue à la prochaine génération, et la CI la signale entre-temps
Le projet référence le backend entierLe compiler exige que le backend compile
GenerateDocumentationFile est à falseOutil de build interne, exclu de l'analyse de qualité et de la documentation

Documentation Technique