Thème
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.
| Technologie | C# .NET 9, console |
| Point d'entrée | TsEnumGenerator/Program.cs |
| Référence projet | dotnet/backend — pour réfléchir sur ses enums |
| Sortie | vue/src/config/generated/enums.ts |
| Hors solution | Le 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 expliciteMé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
| Contrainte | Conséquence si elle est ignorée |
|---|---|
vue/src/config/generated/enums.ts ne s'édite jamais à la main | L'édition est perdue à la prochaine génération, et la CI la signale entre-temps |
| Le projet référence le backend entier | Le compiler exige que le backend compile |
GenerateDocumentationFile est à false | Outil de build interne, exclu de l'analyse de qualité et de la documentation |