@likewatt/models-front 1.104.0 → 1.106.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +122 -122
- package/dist/common/Comments.types.d.ts +20 -0
- package/dist/core/SiteConstants.d.ts +10 -3
- package/dist/core/SiteConstants.js +10 -3
- package/dist/site/OpenDataProfile.types.d.ts +22 -61
- package/dist/site/OpenDataProfile.types.js +0 -72
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,122 +1,122 @@
|
|
|
1
|
-
# @likewatt/models
|
|
2
|
-
|
|
3
|
-
Package privé contenant les modèles TypeScript FRONTEND partagés pour les applications Likewatt.
|
|
4
|
-
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npm install @likewatt/models-fronted
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## Description
|
|
12
|
-
|
|
13
|
-
Ce package exporte les modèles de données TypeScript utilisés dans l'écosystème Likewatt, incluant :
|
|
14
|
-
|
|
15
|
-
- **Entités principales** : `Site`, `Scenario`, `User`, `License`, `CollectiveSite`, `Invitation`, `ScenarioDefaultValue`
|
|
16
|
-
- **Entités TypeORM** : `Analysis`, `Optimization`, `WebhookOutput`, historiques (Co2, Enedis, FCR, Okwind, Pvgis, Spot, Tempo)
|
|
17
|
-
- **Modèles internes** : Paramètres énergétiques (batteries, PV, éolien, hydrogène, stockage thermique, etc.)
|
|
18
|
-
- **Types frontend** : Types TypeScript pour l'interface utilisateur
|
|
19
|
-
- **Énumérations** : Types énumérés partagés
|
|
20
|
-
|
|
21
|
-
## Structure
|
|
22
|
-
|
|
23
|
-
- `src/core/` : Entités principales et modèles internes
|
|
24
|
-
- `src/frontend/` : Types TypeScript pour le frontend
|
|
25
|
-
- `dist/` : Build compilé (CommonJS)
|
|
26
|
-
|
|
27
|
-
## Technologies
|
|
28
|
-
|
|
29
|
-
- TypeScript 5.x
|
|
30
|
-
- TypeORM 0.3.x
|
|
31
|
-
- Mongoose 8.x
|
|
32
|
-
- NestJS decorators (Swagger, Mongoose)
|
|
33
|
-
- Class Validator
|
|
34
|
-
|
|
35
|
-
## Scripts disponibles
|
|
36
|
-
|
|
37
|
-
```bash
|
|
38
|
-
npm run build # Compile le projet TypeScript
|
|
39
|
-
npm run format # Formate le code avec Prettier
|
|
40
|
-
npm run lint # Lint et fixe le code avec ESLint
|
|
41
|
-
npm run lint:quick # Lint sans auto-fix
|
|
42
|
-
npm run release # Crée une release automatique (conventional commits)
|
|
43
|
-
npm run release:minor # Crée une release minor
|
|
44
|
-
npm run release:major # Crée une release major
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Convention de commit
|
|
48
|
-
|
|
49
|
-
Le projet utilise **Husky** et **Commitlint** pour enforcer les conventions de commit.
|
|
50
|
-
|
|
51
|
-
### Format requis
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
<type>(<scope>): <subject>
|
|
55
|
-
|
|
56
|
-
<body>
|
|
57
|
-
|
|
58
|
-
<footer>
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### Types autorisés
|
|
62
|
-
|
|
63
|
-
- `feat`: Nouvelle fonctionnalité
|
|
64
|
-
- `fix`: Correction de bug
|
|
65
|
-
- `docs`: Documentation
|
|
66
|
-
- `style`: Formatage, point-virgules manquants, etc.
|
|
67
|
-
- `refactor`: Refactoring du code
|
|
68
|
-
- `perf`: Amélioration des performances
|
|
69
|
-
- `test`: Ajout de tests
|
|
70
|
-
- `build`: Changements du système de build
|
|
71
|
-
- `ci`: Changements CI/CD
|
|
72
|
-
- `chore`: Tâches de maintenance
|
|
73
|
-
- `revert`: Revert d'un commit précédent
|
|
74
|
-
|
|
75
|
-
### Exemples
|
|
76
|
-
|
|
77
|
-
```bash
|
|
78
|
-
feat(user): add authentication endpoint
|
|
79
|
-
fix(scenario): correct energy calculation
|
|
80
|
-
docs(readme): update installation instructions
|
|
81
|
-
refactor(battery): simplify params validation
|
|
82
|
-
ci(pipeline): add automatic versioning
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
### Impact sur le versioning
|
|
86
|
-
|
|
87
|
-
- `feat`: incrémente la version **minor** (1.0.0 → 1.1.0)
|
|
88
|
-
- `fix`: incrémente la version **patch** (1.0.0 → 1.0.1)
|
|
89
|
-
- `BREAKING CHANGE` dans le footer : incrémente la version **major** (1.0.0 → 2.0.0)
|
|
90
|
-
|
|
91
|
-
## Release et versioning
|
|
92
|
-
|
|
93
|
-
Le package utilise `standard-version` pour le versioning sémantique basé sur les commits conventionnels.
|
|
94
|
-
|
|
95
|
-
### Release automatique
|
|
96
|
-
|
|
97
|
-
Chaque push sur la branche `main` déclenche automatiquement :
|
|
98
|
-
1. Installation des dépendances
|
|
99
|
-
2. Build du projet
|
|
100
|
-
3. Analyse des commits pour déterminer le type de version (patch/minor/major)
|
|
101
|
-
4. Génération du CHANGELOG
|
|
102
|
-
5. Publication sur le registry NPM privé
|
|
103
|
-
|
|
104
|
-
### Release manuelle
|
|
105
|
-
|
|
106
|
-
Via Bitbucket Pipelines, possibilité de forcer un type de release :
|
|
107
|
-
- `patch` : Correctifs (1.0.0 → 1.0.1)
|
|
108
|
-
- `minor` : Nouvelles fonctionnalités (1.0.0 → 1.1.0)
|
|
109
|
-
- `major` : Breaking changes (1.0.0 → 2.0.0)
|
|
110
|
-
- `prepatch`, `preminor`, `premajor`, `prerelease` : Versions de pré-release
|
|
111
|
-
|
|
112
|
-
## Configuration
|
|
113
|
-
|
|
114
|
-
- **Compilation** : ES2019, CommonJS, avec decorators experimentaux
|
|
115
|
-
- **Output** : `dist/index.js` (main), `dist/index.d.ts` (types)
|
|
116
|
-
- **Registry** : NPM privé Likewatt
|
|
117
|
-
|
|
118
|
-
## Confidentialité
|
|
119
|
-
|
|
120
|
-
Ce package est privé et ne doit pas être partagé en dehors de Likewatt.
|
|
121
|
-
|
|
122
|
-
|
|
1
|
+
# @likewatt/models
|
|
2
|
+
|
|
3
|
+
Package privé contenant les modèles TypeScript FRONTEND partagés pour les applications Likewatt.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @likewatt/models-fronted
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Description
|
|
12
|
+
|
|
13
|
+
Ce package exporte les modèles de données TypeScript utilisés dans l'écosystème Likewatt, incluant :
|
|
14
|
+
|
|
15
|
+
- **Entités principales** : `Site`, `Scenario`, `User`, `License`, `CollectiveSite`, `Invitation`, `ScenarioDefaultValue`
|
|
16
|
+
- **Entités TypeORM** : `Analysis`, `Optimization`, `WebhookOutput`, historiques (Co2, Enedis, FCR, Okwind, Pvgis, Spot, Tempo)
|
|
17
|
+
- **Modèles internes** : Paramètres énergétiques (batteries, PV, éolien, hydrogène, stockage thermique, etc.)
|
|
18
|
+
- **Types frontend** : Types TypeScript pour l'interface utilisateur
|
|
19
|
+
- **Énumérations** : Types énumérés partagés
|
|
20
|
+
|
|
21
|
+
## Structure
|
|
22
|
+
|
|
23
|
+
- `src/core/` : Entités principales et modèles internes
|
|
24
|
+
- `src/frontend/` : Types TypeScript pour le frontend
|
|
25
|
+
- `dist/` : Build compilé (CommonJS)
|
|
26
|
+
|
|
27
|
+
## Technologies
|
|
28
|
+
|
|
29
|
+
- TypeScript 5.x
|
|
30
|
+
- TypeORM 0.3.x
|
|
31
|
+
- Mongoose 8.x
|
|
32
|
+
- NestJS decorators (Swagger, Mongoose)
|
|
33
|
+
- Class Validator
|
|
34
|
+
|
|
35
|
+
## Scripts disponibles
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm run build # Compile le projet TypeScript
|
|
39
|
+
npm run format # Formate le code avec Prettier
|
|
40
|
+
npm run lint # Lint et fixe le code avec ESLint
|
|
41
|
+
npm run lint:quick # Lint sans auto-fix
|
|
42
|
+
npm run release # Crée une release automatique (conventional commits)
|
|
43
|
+
npm run release:minor # Crée une release minor
|
|
44
|
+
npm run release:major # Crée une release major
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Convention de commit
|
|
48
|
+
|
|
49
|
+
Le projet utilise **Husky** et **Commitlint** pour enforcer les conventions de commit.
|
|
50
|
+
|
|
51
|
+
### Format requis
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
<type>(<scope>): <subject>
|
|
55
|
+
|
|
56
|
+
<body>
|
|
57
|
+
|
|
58
|
+
<footer>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Types autorisés
|
|
62
|
+
|
|
63
|
+
- `feat`: Nouvelle fonctionnalité
|
|
64
|
+
- `fix`: Correction de bug
|
|
65
|
+
- `docs`: Documentation
|
|
66
|
+
- `style`: Formatage, point-virgules manquants, etc.
|
|
67
|
+
- `refactor`: Refactoring du code
|
|
68
|
+
- `perf`: Amélioration des performances
|
|
69
|
+
- `test`: Ajout de tests
|
|
70
|
+
- `build`: Changements du système de build
|
|
71
|
+
- `ci`: Changements CI/CD
|
|
72
|
+
- `chore`: Tâches de maintenance
|
|
73
|
+
- `revert`: Revert d'un commit précédent
|
|
74
|
+
|
|
75
|
+
### Exemples
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
feat(user): add authentication endpoint
|
|
79
|
+
fix(scenario): correct energy calculation
|
|
80
|
+
docs(readme): update installation instructions
|
|
81
|
+
refactor(battery): simplify params validation
|
|
82
|
+
ci(pipeline): add automatic versioning
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Impact sur le versioning
|
|
86
|
+
|
|
87
|
+
- `feat`: incrémente la version **minor** (1.0.0 → 1.1.0)
|
|
88
|
+
- `fix`: incrémente la version **patch** (1.0.0 → 1.0.1)
|
|
89
|
+
- `BREAKING CHANGE` dans le footer : incrémente la version **major** (1.0.0 → 2.0.0)
|
|
90
|
+
|
|
91
|
+
## Release et versioning
|
|
92
|
+
|
|
93
|
+
Le package utilise `standard-version` pour le versioning sémantique basé sur les commits conventionnels.
|
|
94
|
+
|
|
95
|
+
### Release automatique
|
|
96
|
+
|
|
97
|
+
Chaque push sur la branche `main` déclenche automatiquement :
|
|
98
|
+
1. Installation des dépendances
|
|
99
|
+
2. Build du projet
|
|
100
|
+
3. Analyse des commits pour déterminer le type de version (patch/minor/major)
|
|
101
|
+
4. Génération du CHANGELOG
|
|
102
|
+
5. Publication sur le registry NPM privé
|
|
103
|
+
|
|
104
|
+
### Release manuelle
|
|
105
|
+
|
|
106
|
+
Via Bitbucket Pipelines, possibilité de forcer un type de release :
|
|
107
|
+
- `patch` : Correctifs (1.0.0 → 1.0.1)
|
|
108
|
+
- `minor` : Nouvelles fonctionnalités (1.0.0 → 1.1.0)
|
|
109
|
+
- `major` : Breaking changes (1.0.0 → 2.0.0)
|
|
110
|
+
- `prepatch`, `preminor`, `premajor`, `prerelease` : Versions de pré-release
|
|
111
|
+
|
|
112
|
+
## Configuration
|
|
113
|
+
|
|
114
|
+
- **Compilation** : ES2019, CommonJS, avec decorators experimentaux
|
|
115
|
+
- **Output** : `dist/index.js` (main), `dist/index.d.ts` (types)
|
|
116
|
+
- **Registry** : NPM privé Likewatt
|
|
117
|
+
|
|
118
|
+
## Confidentialité
|
|
119
|
+
|
|
120
|
+
Ce package est privé et ne doit pas être partagé en dehors de Likewatt.
|
|
121
|
+
|
|
122
|
+
|
|
@@ -1,15 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Commentaires libres saisis par l'utilisateur, indexés par emplacement dans
|
|
3
|
+
* l'application.
|
|
4
|
+
*
|
|
5
|
+
* La signature d'index n'est pas une commodité : le front génère des clés
|
|
6
|
+
* dynamiquement, une par technologie du mix (`PV_EnergeticMix_${techName}`), et
|
|
7
|
+
* la liste des technologies n'est pas connue à la compilation. Le schéma
|
|
8
|
+
* Mongoose côté `likewatt-models` est passé en `strict: false` pour la même
|
|
9
|
+
* raison ; ce typage s'aligne dessus.
|
|
10
|
+
*
|
|
11
|
+
* Les clés ci-dessous sont celles effectivement utilisées aujourd'hui, gardées
|
|
12
|
+
* explicites à titre de documentation. Elles ne sont pas exhaustives et le
|
|
13
|
+
* typage ne les contraint pas : en ajouter une n'est jamais un changement
|
|
14
|
+
* cassant.
|
|
15
|
+
*/
|
|
1
16
|
export interface Comments {
|
|
17
|
+
[key: string]: string | undefined;
|
|
18
|
+
ConsumerEnergyBalance?: string;
|
|
2
19
|
CostPerMonth?: string;
|
|
3
20
|
DailyProfile?: string;
|
|
4
21
|
EnergyBalance?: string;
|
|
5
22
|
LineBalanceSheet?: string;
|
|
6
23
|
LoadCurve?: string;
|
|
24
|
+
Report?: string;
|
|
7
25
|
ScenarioTable?: string;
|
|
26
|
+
TechModeling?: string;
|
|
8
27
|
TotalCost?: string;
|
|
9
28
|
TotalEnergy?: string;
|
|
10
29
|
Grid_EnergeticMix?: string;
|
|
11
30
|
LineBalanceSheetFromPopUp?: string;
|
|
12
31
|
Opex?: string;
|
|
32
|
+
/** Le mix global. Les mix par technologie sont sous `PV_EnergeticMix_<techName>`. */
|
|
13
33
|
PV_EnergeticMix?: string;
|
|
14
34
|
TechSummary?: string;
|
|
15
35
|
VanFromPopUp?: string;
|
|
@@ -409,9 +409,16 @@ export declare const SiteConstants: {
|
|
|
409
409
|
readonly HYBRID: "HYBRIDE";
|
|
410
410
|
readonly STRASBOURG: "STRASBOURG";
|
|
411
411
|
/**
|
|
412
|
-
* Courbe de charge reconstituée depuis
|
|
413
|
-
*
|
|
414
|
-
*
|
|
412
|
+
* Courbe de charge reconstituée depuis l'Open Data Enedis : moyenne des
|
|
413
|
+
* 500 courbes fictives du secteur, re-datée sur une année civile. Aucune
|
|
414
|
+
* mise à l'échelle — le niveau est celui du secteur.
|
|
415
|
+
*
|
|
416
|
+
* Distincte de `PROFILE`, qui reste le flux des fichiers de coefficients.
|
|
417
|
+
* Les deux partagent le même onglet côté front, mais surtout pas le même
|
|
418
|
+
* traitement : `normalizeDataSourceTab` doit mapper `OPENDATA` vers l'onglet
|
|
419
|
+
* `PROFILE`, sans confondre les deux valeurs stockées.
|
|
420
|
+
*
|
|
421
|
+
* Détails de la récupération dans `Site.openDataProfile`.
|
|
415
422
|
*/
|
|
416
423
|
readonly OPENDATA: "OPENDATA";
|
|
417
424
|
};
|
|
@@ -77,9 +77,16 @@ exports.SiteConstants = {
|
|
|
77
77
|
HYBRID: 'HYBRIDE',
|
|
78
78
|
STRASBOURG: 'STRASBOURG',
|
|
79
79
|
/**
|
|
80
|
-
* Courbe de charge reconstituée depuis
|
|
81
|
-
*
|
|
82
|
-
*
|
|
80
|
+
* Courbe de charge reconstituée depuis l'Open Data Enedis : moyenne des
|
|
81
|
+
* 500 courbes fictives du secteur, re-datée sur une année civile. Aucune
|
|
82
|
+
* mise à l'échelle — le niveau est celui du secteur.
|
|
83
|
+
*
|
|
84
|
+
* Distincte de `PROFILE`, qui reste le flux des fichiers de coefficients.
|
|
85
|
+
* Les deux partagent le même onglet côté front, mais surtout pas le même
|
|
86
|
+
* traitement : `normalizeDataSourceTab` doit mapper `OPENDATA` vers l'onglet
|
|
87
|
+
* `PROFILE`, sans confondre les deux valeurs stockées.
|
|
88
|
+
*
|
|
89
|
+
* Détails de la récupération dans `Site.openDataProfile`.
|
|
83
90
|
*/
|
|
84
91
|
OPENDATA: 'OPENDATA',
|
|
85
92
|
},
|
|
@@ -25,62 +25,15 @@ export type EnedisOpenDataProfileType = 'RES1' | 'RES11' | 'RES2' | 'PRO1' | 'PR
|
|
|
25
25
|
*
|
|
26
26
|
* Union plate plutôt que produit (catégorie × segment × code) parce que le
|
|
27
27
|
* catalogue Enedis est creux : `ENT1` n'a pas la tranche 50-120 kVA alors que
|
|
28
|
-
* `ENT3` a 36-120, et les codes NAF diffèrent d'un segment à l'autre.
|
|
29
|
-
* `ENEDIS_OPENDATA_CATALOG` pour construire des listes en cascade sans jamais
|
|
30
|
-
* proposer une combinaison inexistante.
|
|
31
|
-
*/
|
|
32
|
-
export type EnedisOpenDataProfile = 'pro-naf3600' | 'pro-naf3700' | 'pro-naf5510' | 'pro-naf5610' | 'pro-naf6831' | 'pro-naf7010' | 'pro-naf8411' | 'pro-naf8413' | 'pro-naf8790' | 'ent-naf10' | 'ent-naf55' | 'ent-naf3600' | 'ent-naf4711' | 'ent-naf7010' | 'ent-naf8411' | 'res1-3-6' | 'res11-6-9' | 'res11-9-18' | 'res2-3-6' | 'res2-6-9' | 'res2-9-12' | 'pro1-0-6' | 'pro1-6-12' | 'pro1-12-sup' | 'pro2-0-6' | 'pro2-6-12' | 'pro2-12-24' | 'pro2-24-sup' | 'ent1-36-50' | 'ent1-120-250' | 'ent1-250-sup' | 'ent3-36-120' | 'ent3-120-250' | 'ent3-250-sup';
|
|
33
|
-
/**
|
|
34
|
-
* Catalogue réel des 34 datasets exploitables, pour bâtir des listes en cascade.
|
|
35
|
-
*
|
|
36
|
-
* Confronté au portail le 2026-08-19 (diff vide). Les 15 variantes `-gan` en sont
|
|
37
|
-
* absentes : elles sont titrées « – archives » (ancien modèle GAN, remplacé par
|
|
38
|
-
* diffusion latente).
|
|
39
|
-
*
|
|
40
|
-
* Noter les asymétries, qui sont la raison d'être de cette table : 5510 et 5610
|
|
41
|
-
* n'existent qu'en `PRO`, 4711 qu'en `ENT`, et `ENT1` saute la tranche
|
|
42
|
-
* 50-120 kVA que `ENT3` couvre.
|
|
43
|
-
*/
|
|
44
|
-
export declare const ENEDIS_OPENDATA_CATALOG: {
|
|
45
|
-
readonly NAF: {
|
|
46
|
-
readonly PRO: readonly ["3600", "3700", "5510", "5610", "6831", "7010", "8411", "8413", "8790"];
|
|
47
|
-
readonly ENT: readonly ["10", "55", "3600", "4711", "7010", "8411"];
|
|
48
|
-
};
|
|
49
|
-
readonly PROFILE: {
|
|
50
|
-
readonly RES1: readonly ["3-6"];
|
|
51
|
-
readonly RES11: readonly ["6-9", "9-18"];
|
|
52
|
-
readonly RES2: readonly ["3-6", "6-9", "9-12"];
|
|
53
|
-
readonly PRO1: readonly ["0-6", "6-12", "12-sup"];
|
|
54
|
-
readonly PRO2: readonly ["0-6", "6-12", "12-24", "24-sup"];
|
|
55
|
-
readonly ENT1: readonly ["36-50", "120-250", "250-sup"];
|
|
56
|
-
readonly ENT3: readonly ["36-120", "120-250", "250-sup"];
|
|
57
|
-
};
|
|
58
|
-
};
|
|
59
|
-
/**
|
|
60
|
-
* Bornes réelles de chaque plage de puissance souscrite, en kVA, indexées par la
|
|
61
|
-
* valeur `powerRange` du slug.
|
|
28
|
+
* `ENT3` a 36-120, et les codes NAF diffèrent d'un segment à l'autre.
|
|
62
29
|
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
* `label` reprend **verbatim** la chaîne du champ `plage_ps` d'Enedis, à titre
|
|
69
|
-
* indicatif ; l'affichage reste libre côté front, qui dispose de `min`/`max`
|
|
70
|
-
* pour composer le sien.
|
|
71
|
-
*
|
|
72
|
-
* Provenance : les 13 valeurs distinctes du champ `plage_ps` du dataset
|
|
73
|
-
* `courbes-de-charges-fictives-caracteristiques`. Dix s'apparient directement aux
|
|
74
|
-
* plages non-`sup` des slugs ; les trois restantes (`]12-36]`, `]24-36]`,
|
|
75
|
-
* `]250-25000]`) s'apparient sans ambiguïté aux trois `-sup` par leur borne basse.
|
|
76
|
-
* La borne 25 000 est corroborée par le nom du fichier source côté Enedis,
|
|
77
|
-
* `ENT3-250-25000.csv`.
|
|
30
|
+
* Pour bâtir des listes en cascade, appeler `GET /profile/opendata/catalog` sur
|
|
31
|
+
* la gateway : elle dérive l'arbre de l'enum et reste donc la seule source de
|
|
32
|
+
* vérité. Ne pas en tenir une copie ici — les deux paquets sont versionnés
|
|
33
|
+
* séparément, et une divergence se manifesterait par un secteur sélectionnable
|
|
34
|
+
* qui renvoie un 404 Enedis.
|
|
78
35
|
*/
|
|
79
|
-
export
|
|
80
|
-
min: number;
|
|
81
|
-
max: number;
|
|
82
|
-
label: string;
|
|
83
|
-
}>;
|
|
36
|
+
export type EnedisOpenDataProfile = 'pro-naf3600' | 'pro-naf3700' | 'pro-naf5510' | 'pro-naf5610' | 'pro-naf6831' | 'pro-naf7010' | 'pro-naf8411' | 'pro-naf8413' | 'pro-naf8790' | 'ent-naf10' | 'ent-naf55' | 'ent-naf3600' | 'ent-naf4711' | 'ent-naf7010' | 'ent-naf8411' | 'res1-3-6' | 'res11-6-9' | 'res11-9-18' | 'res2-3-6' | 'res2-6-9' | 'res2-9-12' | 'pro1-0-6' | 'pro1-6-12' | 'pro1-12-sup' | 'pro2-0-6' | 'pro2-6-12' | 'pro2-12-24' | 'pro2-24-sup' | 'ent1-36-50' | 'ent1-120-250' | 'ent1-250-sup' | 'ent3-36-120' | 'ent3-120-250' | 'ent3-250-sup';
|
|
84
37
|
/**
|
|
85
38
|
* Trace de la récupération d'une courbe de charge depuis l'Open Data Enedis.
|
|
86
39
|
* Écrit par le back, jamais par le front.
|
|
@@ -98,19 +51,27 @@ export interface OpenDataProfile {
|
|
|
98
51
|
/** Slug du dataset Data Fair, clé externe immuable. */
|
|
99
52
|
datasetSlug: string;
|
|
100
53
|
/**
|
|
101
|
-
* Bornes de la fenêtre réellement
|
|
54
|
+
* Bornes de la fenêtre réellement publiée par Enedis — 2023-11-01 → 2024-10-29.
|
|
55
|
+
* Traçabilité et attribution Etalab. Ce n'est **pas** la période de l'étude.
|
|
56
|
+
*/
|
|
57
|
+
sourcePeriodStart?: Date | string;
|
|
58
|
+
sourcePeriodEnd?: Date | string;
|
|
59
|
+
/**
|
|
60
|
+
* Bornes de l'année civile servie, toujours 1er janvier → 31 décembre.
|
|
102
61
|
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
* raisonnent en années civiles doivent en tenir compte.
|
|
62
|
+
* C'est la période de l'étude, et celle que les composants raisonnant en
|
|
63
|
+
* années civiles doivent utiliser. Figée à la création du projet.
|
|
106
64
|
*/
|
|
107
65
|
periodStart?: Date | string;
|
|
108
66
|
periodEnd?: Date | string;
|
|
109
67
|
retrievedAt?: Date | string;
|
|
110
68
|
/** Nombre de courbes agrégées pour produire la moyenne (500 nominalement). */
|
|
111
69
|
curveCount?: number;
|
|
112
|
-
/**
|
|
70
|
+
/**
|
|
71
|
+
* Consommation annuelle du secteur, en kWh. Niveau livré, non surchargeable.
|
|
72
|
+
* Ordre de grandeur : l'écart intra-secteur mesuré va de 1 à 24.
|
|
73
|
+
*/
|
|
113
74
|
referenceAnnualConsumptionKwh?: number;
|
|
114
|
-
/**
|
|
115
|
-
|
|
75
|
+
/** Puissance souscrite déduite, en kVA, arrondie au palier normalisé. */
|
|
76
|
+
deducedSubscribedPowerKva?: number;
|
|
116
77
|
}
|
|
@@ -1,74 +1,2 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ENEDIS_OPENDATA_POWER_RANGES = exports.ENEDIS_OPENDATA_CATALOG = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Catalogue réel des 34 datasets exploitables, pour bâtir des listes en cascade.
|
|
6
|
-
*
|
|
7
|
-
* Confronté au portail le 2026-08-19 (diff vide). Les 15 variantes `-gan` en sont
|
|
8
|
-
* absentes : elles sont titrées « – archives » (ancien modèle GAN, remplacé par
|
|
9
|
-
* diffusion latente).
|
|
10
|
-
*
|
|
11
|
-
* Noter les asymétries, qui sont la raison d'être de cette table : 5510 et 5610
|
|
12
|
-
* n'existent qu'en `PRO`, 4711 qu'en `ENT`, et `ENT1` saute la tranche
|
|
13
|
-
* 50-120 kVA que `ENT3` couvre.
|
|
14
|
-
*/
|
|
15
|
-
exports.ENEDIS_OPENDATA_CATALOG = {
|
|
16
|
-
NAF: {
|
|
17
|
-
PRO: [
|
|
18
|
-
'3600',
|
|
19
|
-
'3700',
|
|
20
|
-
'5510',
|
|
21
|
-
'5610',
|
|
22
|
-
'6831',
|
|
23
|
-
'7010',
|
|
24
|
-
'8411',
|
|
25
|
-
'8413',
|
|
26
|
-
'8790',
|
|
27
|
-
],
|
|
28
|
-
ENT: ['10', '55', '3600', '4711', '7010', '8411'],
|
|
29
|
-
},
|
|
30
|
-
PROFILE: {
|
|
31
|
-
RES1: ['3-6'],
|
|
32
|
-
RES11: ['6-9', '9-18'],
|
|
33
|
-
RES2: ['3-6', '6-9', '9-12'],
|
|
34
|
-
PRO1: ['0-6', '6-12', '12-sup'],
|
|
35
|
-
PRO2: ['0-6', '6-12', '12-24', '24-sup'],
|
|
36
|
-
ENT1: ['36-50', '120-250', '250-sup'],
|
|
37
|
-
ENT3: ['36-120', '120-250', '250-sup'],
|
|
38
|
-
},
|
|
39
|
-
};
|
|
40
|
-
/**
|
|
41
|
-
* Bornes réelles de chaque plage de puissance souscrite, en kVA, indexées par la
|
|
42
|
-
* valeur `powerRange` du slug.
|
|
43
|
-
*
|
|
44
|
-
* Nécessaire parce que trois plages sont notées `-sup` dans les slugs sans que la
|
|
45
|
-
* borne haute y figure : le front ne peut pas la deviner. Elle est bornée, pas
|
|
46
|
-
* infinie — `12-sup` s'arrête à 36 kVA, `24-sup` à 36 également, `250-sup` à
|
|
47
|
-
* 25 000.
|
|
48
|
-
*
|
|
49
|
-
* `label` reprend **verbatim** la chaîne du champ `plage_ps` d'Enedis, à titre
|
|
50
|
-
* indicatif ; l'affichage reste libre côté front, qui dispose de `min`/`max`
|
|
51
|
-
* pour composer le sien.
|
|
52
|
-
*
|
|
53
|
-
* Provenance : les 13 valeurs distinctes du champ `plage_ps` du dataset
|
|
54
|
-
* `courbes-de-charges-fictives-caracteristiques`. Dix s'apparient directement aux
|
|
55
|
-
* plages non-`sup` des slugs ; les trois restantes (`]12-36]`, `]24-36]`,
|
|
56
|
-
* `]250-25000]`) s'apparient sans ambiguïté aux trois `-sup` par leur borne basse.
|
|
57
|
-
* La borne 25 000 est corroborée par le nom du fichier source côté Enedis,
|
|
58
|
-
* `ENT3-250-25000.csv`.
|
|
59
|
-
*/
|
|
60
|
-
exports.ENEDIS_OPENDATA_POWER_RANGES = {
|
|
61
|
-
'0-6': { min: 0, max: 6, label: ']0-6 kVA]' },
|
|
62
|
-
'3-6': { min: 3, max: 6, label: ']3-6 kVA]' },
|
|
63
|
-
'6-9': { min: 6, max: 9, label: ']6-9 kVA]' },
|
|
64
|
-
'6-12': { min: 6, max: 12, label: ']6-12 kVA]' },
|
|
65
|
-
'9-12': { min: 9, max: 12, label: ']9-12 kVA]' },
|
|
66
|
-
'9-18': { min: 9, max: 18, label: ']9-18 kVA]' },
|
|
67
|
-
'12-24': { min: 12, max: 24, label: ']12-24 kVA]' },
|
|
68
|
-
'12-sup': { min: 12, max: 36, label: ']12-36 kVA]' },
|
|
69
|
-
'24-sup': { min: 24, max: 36, label: ']24-36 kVA]' },
|
|
70
|
-
'36-50': { min: 36, max: 50, label: ']36-50 kVA]' },
|
|
71
|
-
'36-120': { min: 36, max: 120, label: ']36-120 kVA]' },
|
|
72
|
-
'120-250': { min: 120, max: 250, label: ']120-250 kVA]' },
|
|
73
|
-
'250-sup': { min: 250, max: 25000, label: ']250-25000 kVA]' },
|
|
74
|
-
};
|