From 652fb5df61fe2c0c91474d4bf156c1c679f94e5f Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Fri, 30 Apr 2021 11:53:24 +0200 Subject: [PATCH] add usage events functionnality --- .../functionalities/usage_events_tracking.md | 35 + docs/ecolyo/project_architecture/doctypes.md | 1236 +++++++++-------- mkdocs.yml | 199 +-- 3 files changed, 763 insertions(+), 707 deletions(-) create mode 100644 docs/ecolyo/functionalities/usage_events_tracking.md diff --git a/docs/ecolyo/functionalities/usage_events_tracking.md b/docs/ecolyo/functionalities/usage_events_tracking.md new file mode 100644 index 0000000..bf7be83 --- /dev/null +++ b/docs/ecolyo/functionalities/usage_events_tracking.md @@ -0,0 +1,35 @@ +# Usage events tracking + +This section explains how the application is tracking usage events. Here are the main step: +- All events are stored in the instance db +- A service is responsible of the calculation of ANONYMIZED indicators. These indicators are then sent to a remote docType. + +## Usage events collection + +Here are the list of collected usage event: +| Category | Type | Target | Result | Context | Description | +| -------------- | ------------------------------ | -------------- | ---------- | --------------------- | ---------------------------------------- | +| Connection | ConnectionEvent | | | "desktop" or "mobile" | User connects to the application. | +| Navigation | NavigationEvent | Page | | | User navigates to a targeted page. | +| Konnector | KonnectorConnectEvent | Konnector | | "success" or "error" | User connects a konnector. | +| Konnector | KonnectorRefreshEvent | Konnector | | "success" or "error" | User refreshes a konnector. | +| Challenge | ChallengeLaunchEvent | Challenge id | | | User launches a challenge. | +| Challenge | ChallengeEndEvent | Challenge id | | | User ends a challenge. | +| Duel | DuelLaunchEvent | Duel id | | Challenge id | User launches a duel. | +| Duel | DuelEndEvent | Duel id | | Challenge id | User ends a duel. | +| Quiz | QuizLaunchEvent | Quiz id | | Challenge id | User launches a quiz. | +| Quiz | QuizEndEvent | Quiz id | | Challenge id | User ends a quiz. | +| Exploration | ExplorationLaunchEvent | Exploration id | | Challenge id | User launches an exploration. | +| Exploration | ExplorationEndEvent | Exploration id | | Challenge id | User ends an exploration. | +| Action | ActionChangeEvent | Action id | | Challenge id | User change action's ecogesture. | +| Action | ActionLaunchEvent | Action id | | Challenge id | User launches a action. | +| Action | ActionEndEvent | Action id | | Challenge id | User ends a action. | +| Profile | ProfileSetEvent | | | | User fills in its profile. | +| Consumption | ConsumptionCompareEvent | | | Fluid / TimeStep | User compares its consumption. | +| Consumption | ConsumptionChangeTimeStepEvent | TimeStep | | Fluid | User changes timeStep of its consumption.| +| Consumption | ConsumptionInteracteEvent | | | Fluid / TimeStep | User selects a consumption on the chart. | + +## Usage events aggregator service + + + diff --git a/docs/ecolyo/project_architecture/doctypes.md b/docs/ecolyo/project_architecture/doctypes.md index 8fe946e..7a1df27 100644 --- a/docs/ecolyo/project_architecture/doctypes.md +++ b/docs/ecolyo/project_architecture/doctypes.md @@ -1,608 +1,628 @@ -## Timeseries doctypes - -### Description - -Each fluid has its own doctype wildcard and one doctype per time step. Each available time step for a fluid depends of the available data from the energy provider. Here are the different time step: - -- **half an hour** - use com.grandlyon.\*.minute doctype -- **week** - use com.grandlyon.\*.day doctype -- **day** - use com.grandlyon.\*.day doctype -- **month** - use com.grandlyon.\*.month doctype -- **year** - use com.grandlyon.\*.year doctype - -### Doctype - -Here are the available doctypes: - -| Fluid type | Doctype wildcard | Doctypes | -| ------------------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -| electricity fluid / enedis | **`com.grandlyon.enedis.*`** | **`com.grandlyon.enedis.minute`**<br>**`com.grandlyon.enedis.day`**<br>**`com.grandlyon.enedis.month`**<br>**`com.grandlyon.enedis.year`** | -| gaz fluid / grdf | **`com.grandlyon.grdf.*`** | **`com.grandlyon.grdf.day`**<br>**`com.grandlyon.grdf.month`**<br>**`com.grandlyon.grdf.year`** | -| water fluid / eau du grand lyon | **`com.grandlyon.egl.*`** | **`com.grandlyon.egl.day`**<br>**`com.grandlyon.egl.month`**<br>**`com.grandlyon.egl.year`** | - -### Structure - -| Field | Type | Description | -| ------ | ------ | ---------------------------------------------------------------- | -| load | number | load (in kWh or L) | -| minute | number | minute of the date<br>_set to 0 except for minute serie_ | -| hour | number | hour of the date<br>_set to 0 except for minute and hour series_ | -| day | number | day of the date<br>_set to 1 for month and year series_ | -| month | number | month of the date<br>_set to 1 for year series_ | -| year | number | year of the date | - -### Example - -``` -{ - "load": 770.18, - "minute": 0, - "hour": 0, - "day": 1, - "month": 1, - "year": 2020 -} -``` - -## User profile - -### Description - -This doctype is used to store all information about the user. - -### Doctype - -**`com.grandlyon.ecolyo.profile`** - -### Structure - -| Field | Type | Description | -| ------------------------ | ------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -| id | string | Profile id | -| ecogestureHash | string | Hash used to verify the content of ecogestures | -| challengeHash | string | Hash used to verify the content of challenges | -| duelHash | string | Hash used to verify the content of duels | -| quizHash | string | Hash used to verify the content of quiz | -| explorationHash | string | Hash used to verify the content of exploration | -| isFirstConnection | boolean | Boolean used to inform if the user connects for the first time | -| lastConnectionDate | DateTime | Date of the last user connection | -| haveSeenLastAnalysis | boolean | Boolean used to inform if user has seen the last analysis | -| haveSeenOldFluidModal | Datetime or boolean | Used to inform if user has seen the modal display when his data are too old. Its value is false or a DateTime when he saw it | -| sendAnalysisNotification | boolean | Boolean used to inform if user has seen the analysis notification | -| monthlyAnalysisDate | DateTime | Date of the last monthly analysis | -| profileType | ProfileType | User consumption profile | -| isProfileTypeCompleted | boolean | Check if a user has completed his consumption profile | - -### Example - -``` -{ - "id": "0e016e853592e18155e87b85ce00a33a", - "challengeHash": "4cbcafe514788757c377534f1a407e022c29e38c", - "duelHash": "48371ffabb2853b0503b882f11e1fa8e730bac76", - "ecogestureHash": "9798a0aaccb47cff906fc4931a2eff5f9371dd8b", - "haveSeenLastAnalysis": true, - "haveSeenOldFluidModal": false, - "isFirstConnection": false, - "lastConnectionDate": "2021-03-08T17:33:18.727Z", - "monthlyAnalysisDate": "2021-01-03T00:00:00.000+01:00", - "quizHash": "11372a56c03edef1d6656f8a76d5ec457174f2c1", - "explorationHash": "cdbc7a84d041318253a10b3cc0c02f9020c78c0b", - "sendAnalysisNotification": false, - "profileType": { - "area": "123", - "coldWater": "individual", - "constructionYear": "between_1948_and_1974", - "cookingFluid": 0, - "floor": "not_applicable", - "hasInstalledVentilation": "yes", - "hasReplacedHeater": "yes", - "heating": "individual", - "hotWater": "individual", - "hotWaterEquipment": "solar", - "hotWaterFluid": 0, - "housingType": "individual_house", - "individualInsulationWork": [ - "roof_insulation" - ], - "occupantsNumber": 1, - "outsideFacingWalls": "2", - "warmingFluid": 0 - }, - "isProfileTypeCompleted": true -} -``` - -## Ecogesture - -### Description - -This doctype is used to store ecogestures. - -### Doctype - -**`com.grandlyon.ecolyo.ecogesture`** - -### Structure - -| Field | Type | Description | -| --------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| id | string | ecogesture id | -| shortName | string | short name of the ecogesture | -| longName | string | long name of the ecogesture | -| longDescription | string | long description of the ecogesture | -| usage | Usage | usage of the ecogesture<br><br>_Usage enum:_<br>- _ALL = 0_<br>- _HEATING = 1_<br>- _AIR_CONDITIONING = 2_<br>- _ECS = 3_<br>- _COLD_WATER = 4_<br>- _ELECTRICITY_SPECIFIC = 5_<br>- _COOKING = 6_ | -| fluidTypes | FluidType[] | Array of fluid type on which ecogesture can have an impact<br><br>_FluidType enum:_<br>- _ELECTRICITY = 0_<br>- _WATER = 1_<br>- _GAS = 2_<br>- _MULTIFLUID = 3_ | -| impactLevel | number | impact level of the ecogesture | -| efficiency | number | efficiency of the ecogesture | -| difficulty | number | difficulty of the ecogesture | -| room | Room | room affected by the ecogesture<br><br>_Room enum:_<br>- _ALL = 0_<br>- _BATHROOM = 1_<br>- _KITCHEN = 2_<br>- _LAUNDRY = 3_<br>- _TOILET = 4_ | -| season | Season | season suited to the ecogesture<br><br>_Season enum:_<br>- _NONE = 'Sans saison'_<br>- _WINTER = 'Hiver'_<br>- _SUMMER = 'Eté'_ | -| equipment | boolean | used to know if one or more equipment are affected by the ecogesture | -| equipmentType | EquipmentType[] | equipment affected by the ecogesture<br><br>_EquipmentType enum:_<br>- _AIR_CONDITIONING = 0_<br>- _COMPUTER = 1_<br>- _MICROWAVE = 2_<br>- _OVEN = 3_<br>- _WASHING_MACHINE = 4_<br>- _DISHWASHER = 5_<br>- _COOKING_PLATES = 6_<br>- _DRYER = 7_<br>- _REFREGIRATOR = 8_<br>- _GARDEN = 9_<br>- _WATER_HEATER = 10_<br>- _FAN = 11_<br>- _CURTAIN = 12_<br>- _INTERNET_BOX = 13_<br>- _VENTILATION = 14_<br>- _FREEZER = 15_<br>- _BOILER = 16_<br>- _HYDRAULIC_HEATING = 17_ | -| equipmentInstallation | boolean | used to know if it is required an installation | -| investment | string or null | investment required | -| action | boolean | used to know if the ecogesture is used for action challenge | -| actionName | string or null | action description of the ecogesture | -| actionDuration | number | duration required to do an action challenge | - -### Example - -``` -{ - "shortName": "Déesse des eaux", - "longName": "Je coupe l'eau de la douche pendant que je me savonne.", - "longDescription": "Si vous n’êtes pas frileux, coupez l'eau pendant que vous vous savonnez : l'économie en eau peut aller jusqu'à 50% !", - "usage": 3, - "fluidTypes": [ - 1 - ], - "impactLevel": 5, - "investment": null, - "room": [ - 1 - ], - "difficulty": 1, - "efficiency": 4, - "season": "Sans saison", - "action": true, - "actionDuration": 3, - "actionName": "Je coupe l'eau de la douche pendant que je me savonne.", - "equipment": false, - "equipmentInstallation": true, - "equipmentType": [], - -} -``` - -## Challenge - -### Description - -This doctype is used to store all challenges. - -### Doctype - -**`com.grandlyon.ecolyo.challenge`** - -### Structure - -| Field | Type | Description | -| ------------- | ------ | ------------------------------------------------- | -| \_id | string | challenge id - respect the format _CHALLENGE000X_ | -| title | string | title of the challenge | -| description | string | description of the challenge | -| target | number | The number of stars required to unlock the duel | -| relationships | any | relation to quiz and duel | - -### Example - -``` - { - "_id": "CHALLENGE0001", - "title": "Nicolas Hublot", - "description": "foobar", - "target": 15, - "relationships": { - "quiz": { - "data": { "_id": "QUIZ001", "_type": "com.grandlyon.ecolyo.quiz" } - }, - "exploration": { - "data": { "_id": "EXPLORATION001", "_type": "com.grandlyon.ecolyo.exploration" } - }, - "duel": { - "data": { "_id": "DUEL001", "_type": "com.grandlyon.ecolyo.duel" } - } - } - } -``` - -## User challenge - -### Description - -This doctype is used to store all additionnal information about a challenge started or ended by the user. - -### Doctype - -**`com.grandlyon.ecolyo.userchallenge`** - -### Structure - -| Field | Type | Description | -| ----------- | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| id | string | userChallenge id | -| title | string | userChallenge title | -| state | UserChallengeState | state of the challenge<br><br>UserChallengeState enum<br>- _LOCKED = 0_<br>- _UNLOCKED = 1_<br>- _ONGOING = 2_<br>- _DUEL = 3_<br>- _DONE = 4_ | -| target | number | Number of stars required to unlock the duel | -| progress | ChallengeProgress | Number of stars earned by the user for each challenge<br><br>ChallengeProgress enum<br>- _quizzProgress: number_<br>- _explorationProgress: number_<br>- _actionProgress: number_ | -| quiz | UserQuiz | Complete Quiz object with progress | -| exploration | UserExploration | Complete Exploration object with progress | -| action | UserActionEntity | Complete Action object | -| duel | UserDuelEntity | Complete Duel object with progress included | -| success | UserChallengeSuccess | Success state of the challenge<br><br>UserChallengeSuccess enum<br>- _ONGOING = 0_<br>- _LOST = 1_<br>- _WIN = 2_ | -| startDate | string null | starting date of the the challenge | -| endingDate | string null | ending date of the challenge | - -### Example - -``` -{ - "_id": "eae3a79a05d677a739bdd2b46b009936", - "description": "foobar", - "duel": { - "description": "Je parie un ours polaire que vous ne pouvez pas consommer moins que #CONSUMPTION € en 1 semaine", - "duration": { - "days": 7 - }, - "fluidTypes": [ - 0, - 1, - 2 - ], - "id": "DUEL001", - "startDate": null, - "state": 4, - "threshold": -1, - "title": "Nicolas Hublot", - "userConsumption": 0 - }, - "endingDate": null, - "id": "CHALLENGE0001", - "progress": { - "actionProgress": 0, - "explorationProgress": 0, - "quizProgress": 0 - }, - "quiz": { - "customQuestion": { - "interval": 30, - "period": {}, - "questionLabel": "Quel jour ai-je le plus consommé la semaine dernière ?", - "result": 1, - "timeStep": 20, - "type": 0 - }, - "id": "QUIZ001", - "questions": [ - { - "answers": [ - { - "answerLabel": "Vapeur d'eau", - "isTrue": false - }, - { - "answerLabel": "Fumée", - "isTrue": false - }, - { - "answerLabel": "Gouttelettes d'eau et cristaux de glace", - "isTrue": true - } - ], - "explanation": "Les nuages sont constitués de gouttelettes d'eau et parfois aussi de cristaux de glace", - "questionLabel": "De quoi les nuages sont-ils constitués ?", - "result": 1, - "source": "string" - }, - { - "answers": [ - { - "answerLabel": "86 km", - "isTrue": true - }, - { - "answerLabel": "78 km", - "isTrue": false - }, - { - "answerLabel": "56 km", - "isTrue": false - } - ], - "explanation": "L’aqueduc du Gier est un des aqueducs antiques de Lyon desservant la ville antique de Lugdunum. Avec ses 86 km il est le plus long des quatre aqueducs ayant alimenté la ville en eau, et celui dont les structures sont le mieux conservées. Il doit son nom au fait qu'il puise aux sources du Gier, affluent du Rhône", - "questionLabel": "Quelle longueur faisait l’aqueduc du Gier pour acheminer l’eau sur Lyon à l’époque romaine ?", - "result": 1, - "source": "string" - }, - { - "answers": [ - { - "answerLabel": "Crémieux", - "isTrue": false - }, - { - "answerLabel": "Crépieux-Charmy", - "isTrue": true - }, - { - "answerLabel": "Charly", - "isTrue": false - } - ], - "explanation": "Crépieux-Charmy est le principal champ captant de la Métropole de Lyon", - "questionLabel": "Quelle est le nom du principal champ de captage d’eau potable de la Métropole ?", - "result": 1, - "source": "string" - }, - { - "answers": [ - { - "answerLabel": "Pompe à air", - "isTrue": false - }, - { - "answerLabel": "Pompe à cordes", - "isTrue": true - }, - { - "answerLabel": "Pompe de Cornouailles", - "isTrue": false - } - ], - "explanation": "Mise en fonctionnement en 1856, 3 pompes à vapeur dites de Cornouailles produisent quelque 20 000 m3 d'eau par jour. Ces pompes mesurent 20 m de haut et 13 m de large pour un poids de 200 tonnes. Leur balancier de 35 tonnes s'actionne toutes les 6 secondes, permettant ainsi l'envoi de 600 m3 d'eau par heure.", - "questionLabel": "Quelle type de pompes étaient utilisées à l'usine des eaux de Caluire jusqu'en 1910 ?", - "result": 1, - "source": "string" - } - ], - "result": 5, - "state": 2 - }, - "exploration": { - "id": "EXPLORATION001", - "date": "2021-01-13T17:03:11.964Z", - "description": "Consultez 3 fois Ecolyo", - "ecogesture_id": "", - "fluid_condition": [], - "message_success": "Vous vous êtes connecté 3 fois à Ecolyo", - "progress": 0, - "state": 2, - "target": 3, - "type": 2 - }, - "action": { - "ecogesture": { - "_id": "ECOGESTURE0004", - "_rev": "3-da2ad5c7b81e4260e2254c98ec6ee971", - "_type": "com.grandlyon.ecolyo.ecogesture", - "action": true, - "actionDuration": 3, - "actionName": "Je coupe l'eau de la douche pendant que je me savonne.", - "cozyMetadata": { - "createdAt": "2021-03-08T09:52:41.029Z", - "createdByApp": "Ecolyo", - "createdByAppVersion": "1.0.4", - "metadataVersion": 1, - "updatedAt": "2021-03-08T09:52:41.029Z", - "updatedByApps": [ - { - "date": "2021-03-08T09:52:41.029Z", - "slug": "Ecolyo", - "version": "1.0.4" - } - ] - }, - "difficulty": 1, - "efficiency": 2.5, - "equipment": false, - "equipmentInstallation": true, - "equipmentType": [], - "fluidTypes": [ - 1 - ], - "id": "ECOGESTURE0004", - "impactLevel": 5, - "investment": null, - "longDescription": "Si vous n’êtes pas frileux, coupez l'eau pendant que vous vous savonnez : l'économie en eau peut aller jusqu'à 50% !", - "longName": "Je coupe l'eau de la douche pendant que je me savonne.", - "room": [ - 1 - ], - "season": "Sans saison", - "shortName": "Déesse des eaux", - "usage": 3 - }, - "startDate": "2021-03-09T17:57:44.600Z", - "state": 1 - }, - "startDate": "2021-01-04T00:00:00.000Z", - "state": 3, - "success": 0, - "target": 15, - "title": "Nicolas Hublot" -} -``` - -## Quiz - -### Description - -This doctype is used to store all quiz. - -### Doctype - -**`com.grandlyon.ecolyo.quiz`** - -### Structure - -| Field | Type | Description | -| -------------- | -------------------- | ------------------------------------------- | -| \_id | string | quiz id - respect the format _QUIZ00X_ | -| questions | QuestionEntity[] | Array of questions entities | -| customQuestion | CustomQuestionEntity | Custom question based on user's consumption | - -### Example - -``` -{ - "_id": "QUIZ001", - "questions": [ - { - "questionLabel": "Quelle longueur faisait l’aqueduc du Gier pour acheminer l’eau sur Lyon à l’époque romaine ?", - "answers": [ - { "answerLabel": "86 km", "isTrue": true }, - { - "answerLabel": "78 km", - "isTrue": false - }, - { - "answerLabel": "56 km", - "isTrue": false - } - ], - "explanation": "L’aqueduc du Gier est un des aqueducs antiques de Lyon desservant la ville antique de Lugdunum. Avec ses 86 km il est le plus long des quatre aqueducs ayant alimenté la ville en eau, et celui dont les structures sont le mieux conservées. Il doit son nom au fait qu'il puise aux sources du Gier, affluent du Rhône", - "source": "string" - }, - { - "questionLabel": "Quelle type de pompes étaient utilisées à l'usine des eaux de Caluire jusqu'en 1910 ?", - "answers": [ - { - "answerLabel": "Pompe à cordes", - "isTrue": true - }, - { - "answerLabel": "Pompe de Cornouailles", - "isTrue": false - }, - { - "answerLabel": "Pompe à air", - "isTrue": false - } - ], - "explanation": "Mise en fonctionnement en 1856, 3 pompes à vapeur dites de Cornouailles produisent quelque 20 000 m3 d'eau par jour. Ces pompes mesurent 20 m de haut et 13 m de large pour un poids de 200 tonnes. Leur balancier de 35 tonnes s'actionne toutes les 6 secondes, permettant ainsi l'envoi de 600 m3 d'eau par heure.", - "source": "string" - }, - { - "questionLabel": "Quelle est le nom du principal champ de captage d’eau potable de la Métropole ?", - "answers": [ - { "answerLabel": "Crémieux", "isTrue": false }, - { - "answerLabel": "Crépieux-Charmy", - "isTrue": true - }, - { - "answerLabel": "Charly", - "isTrue": false - } - ], - "explanation": "Crépieux-Charmy est le principal champ captant de la Métropole de Lyon", - "source": "string" - }, - { - "questionLabel": "De quoi les nuages sont-ils constitués ?", - "answers": [ - { "answerLabel": "Vapeur d'eau", "isTrue": false }, - { - "answerLabel": "Fumée", - "isTrue": false - }, - { - "answerLabel": "Gouttelettes d'eau et cristaux de glace", - "isTrue": true - } - ], - "explanation": "Les nuages sont constitués de gouttelettes d'eau et parfois aussi de cristaux de glace", - "source": "string" - } - ], - "customQuestion": { - "questionLabel": "Quel jour ai-je le plus consommé la semaine dernière ?", - "type": 0, - "timeStep": 20, - "interval": 30, - "period": {}, - "singleFluid": true - } - } -``` - -## Exploration - -### Description - -This doctype is used to store all explorations. - -### Doctype - -**`com.grandlyon.ecolyo.exploration`** - -### Structure - -| Field | Type | Description | -| --------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| \_id | string | exploration id - respect the format _EXPLORATION00X_ | -| state | UserExplorationState | State of the exploration<br><br>UserExplorationState enum<br>- _UNLOCKED = 0_<br>- _ONGOING = 1_<br>- _DONE = 2_ | -| description | string | description of the exploration | -| target | number | number of stars required to unlock an exploration | -| type | UserExplorationType | type of the exploration<br><br>UserExplorationType enum<br>- _DECLARATIVE = 0_<br>- _ACTION = 1_<br>- _CONSUMPTION = 2_<br>- _ECOGESTURE = 3_ | -| date | string or null | date of the exploration | -| ecogesture_id | string | ecogesture's id | -| fluid_condition | FluidType[] | Array of fluid type on which an exploration can have an impact<br><br>_FluidType enum:_<br>- _ELECTRICITY = 0_<br>- _WATER = 1_<br>- _GAS = 2_<br>- _MULTIFLUID = 3_ | -| message_success | string | message when exploration is done | - -### Example - -``` - { - "_id": "EXPLORATION001", - "description": "Consultez l'écogeste Chat échaudé", - "target": 1, - "type": 3, - "date": null, - "ecogesture_id": "0032", - "fluid_condition": [], - "message_success": "Vous avez consulté l'écogeste Chat échaudé", - "state": 0, - } -``` - -## Duel - -### Description - -This doctype is used to store all duels. - -### Doctype - -**`com.grandlyon.ecolyo.duel`** - -### Structure - -| Field | Type | Description | -| ----------- | -------- | -------------------------------------- | -| \_id | string | duel id - respect the format _DUEL00X_ | -| title | string | title of the duel | -| description | string | description of the duel | -| duration | Duration | Luxon Duration of the duel | - -### Example - -``` - { - "_id": "DUEL001", - "title": "Nicolas Hublot", - "description": "Je parie un ours polaire que vous ne pouvez pas consommer moins que #CONSUMPTION € en 1 semaine", - "duration": { "days": 7 } - } -``` +## Timeseries doctypes + +### Description + +Each fluid has its own doctype wildcard and one doctype per time step. Each available time step for a fluid depends of the available data from the energy provider. Here are the different time step: + +- **half an hour** - use com.grandlyon.\*.minute doctype +- **week** - use com.grandlyon.\*.day doctype +- **day** - use com.grandlyon.\*.day doctype +- **month** - use com.grandlyon.\*.month doctype +- **year** - use com.grandlyon.\*.year doctype + +### Doctype + +Here are the available doctypes: + +| Fluid type | Doctype wildcard | Doctypes | +| ------------------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | +| electricity fluid / enedis | **`com.grandlyon.enedis.*`** | **`com.grandlyon.enedis.minute`**<br>**`com.grandlyon.enedis.day`**<br>**`com.grandlyon.enedis.month`**<br>**`com.grandlyon.enedis.year`** | +| gaz fluid / grdf | **`com.grandlyon.grdf.*`** | **`com.grandlyon.grdf.day`**<br>**`com.grandlyon.grdf.month`**<br>**`com.grandlyon.grdf.year`** | +| water fluid / eau du grand lyon | **`com.grandlyon.egl.*`** | **`com.grandlyon.egl.day`**<br>**`com.grandlyon.egl.month`**<br>**`com.grandlyon.egl.year`** | + +### Structure + +| Field | Type | Description | +| ------ | ------ | ---------------------------------------------------------------- | +| load | number | load (in kWh or L) | +| minute | number | minute of the date<br>_set to 0 except for minute serie_ | +| hour | number | hour of the date<br>_set to 0 except for minute and hour series_ | +| day | number | day of the date<br>_set to 1 for month and year series_ | +| month | number | month of the date<br>_set to 1 for year series_ | +| year | number | year of the date | + +### Example + +``` +{ + "load": 770.18, + "minute": 0, + "hour": 0, + "day": 1, + "month": 1, + "year": 2020 +} +``` + +## User profile + +### Description + +This doctype is used to store all information about the user. + +### Doctype + +**`com.grandlyon.ecolyo.profile`** + +### Structure + +| Field | Type | Description | +| ------------------------ | ------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| id | string | Profile id | +| ecogestureHash | string | Hash used to verify the content of ecogestures | +| challengeHash | string | Hash used to verify the content of challenges | +| duelHash | string | Hash used to verify the content of duels | +| quizHash | string | Hash used to verify the content of quiz | +| explorationHash | string | Hash used to verify the content of exploration | +| isFirstConnection | boolean | Boolean used to inform if the user connects for the first time | +| lastConnectionDate | DateTime | Date of the last user connection | +| haveSeenLastAnalysis | boolean | Boolean used to inform if user has seen the last analysis | +| haveSeenOldFluidModal | Datetime or boolean | Used to inform if user has seen the modal display when his data are too old. Its value is false or a DateTime when he saw it | +| sendAnalysisNotification | boolean | Boolean used to inform if user has seen the analysis notification | +| monthlyAnalysisDate | DateTime | Date of the last monthly analysis | +| profileType | ProfileType | User consumption profile | +| isProfileTypeCompleted | boolean | Check if a user has completed his consumption profile | + +### Example + +``` +{ + "id": "0e016e853592e18155e87b85ce00a33a", + "challengeHash": "4cbcafe514788757c377534f1a407e022c29e38c", + "duelHash": "48371ffabb2853b0503b882f11e1fa8e730bac76", + "ecogestureHash": "9798a0aaccb47cff906fc4931a2eff5f9371dd8b", + "haveSeenLastAnalysis": true, + "haveSeenOldFluidModal": false, + "isFirstConnection": false, + "lastConnectionDate": "2021-03-08T17:33:18.727Z", + "monthlyAnalysisDate": "2021-01-03T00:00:00.000+01:00", + "quizHash": "11372a56c03edef1d6656f8a76d5ec457174f2c1", + "explorationHash": "cdbc7a84d041318253a10b3cc0c02f9020c78c0b", + "sendAnalysisNotification": false, + "profileType": { + "area": "123", + "coldWater": "individual", + "constructionYear": "between_1948_and_1974", + "cookingFluid": 0, + "floor": "not_applicable", + "hasInstalledVentilation": "yes", + "hasReplacedHeater": "yes", + "heating": "individual", + "hotWater": "individual", + "hotWaterEquipment": "solar", + "hotWaterFluid": 0, + "housingType": "individual_house", + "individualInsulationWork": [ + "roof_insulation" + ], + "occupantsNumber": 1, + "outsideFacingWalls": "2", + "warmingFluid": 0 + }, + "isProfileTypeCompleted": true +} +``` + +## Ecogesture + +### Description + +This doctype is used to store ecogestures. + +### Doctype + +**`com.grandlyon.ecolyo.ecogesture`** + +### Structure + +| Field | Type | Description | +| --------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| id | string | ecogesture id | +| shortName | string | short name of the ecogesture | +| longName | string | long name of the ecogesture | +| longDescription | string | long description of the ecogesture | +| usage | Usage | usage of the ecogesture<br><br>_Usage enum:_<br>- _ALL = 0_<br>- _HEATING = 1_<br>- _AIR_CONDITIONING = 2_<br>- _ECS = 3_<br>- _COLD_WATER = 4_<br>- _ELECTRICITY_SPECIFIC = 5_<br>- _COOKING = 6_ | +| fluidTypes | FluidType[] | Array of fluid type on which ecogesture can have an impact<br><br>_FluidType enum:_<br>- _ELECTRICITY = 0_<br>- _WATER = 1_<br>- _GAS = 2_<br>- _MULTIFLUID = 3_ | +| impactLevel | number | impact level of the ecogesture | +| efficiency | number | efficiency of the ecogesture | +| difficulty | number | difficulty of the ecogesture | +| room | Room | room affected by the ecogesture<br><br>_Room enum:_<br>- _ALL = 0_<br>- _BATHROOM = 1_<br>- _KITCHEN = 2_<br>- _LAUNDRY = 3_<br>- _TOILET = 4_ | +| season | Season | season suited to the ecogesture<br><br>_Season enum:_<br>- _NONE = 'Sans saison'_<br>- _WINTER = 'Hiver'_<br>- _SUMMER = 'Eté'_ | +| equipment | boolean | used to know if one or more equipment are affected by the ecogesture | +| equipmentType | EquipmentType[] | equipment affected by the ecogesture<br><br>_EquipmentType enum:_<br>- _AIR_CONDITIONING = 0_<br>- _COMPUTER = 1_<br>- _MICROWAVE = 2_<br>- _OVEN = 3_<br>- _WASHING_MACHINE = 4_<br>- _DISHWASHER = 5_<br>- _COOKING_PLATES = 6_<br>- _DRYER = 7_<br>- _REFREGIRATOR = 8_<br>- _GARDEN = 9_<br>- _WATER_HEATER = 10_<br>- _FAN = 11_<br>- _CURTAIN = 12_<br>- _INTERNET_BOX = 13_<br>- _VENTILATION = 14_<br>- _FREEZER = 15_<br>- _BOILER = 16_<br>- _HYDRAULIC_HEATING = 17_ | +| equipmentInstallation | boolean | used to know if it is required an installation | +| investment | string or null | investment required | +| action | boolean | used to know if the ecogesture is used for action challenge | +| actionName | string or null | action description of the ecogesture | +| actionDuration | number | duration required to do an action challenge | + +### Example + +``` +{ + "shortName": "Déesse des eaux", + "longName": "Je coupe l'eau de la douche pendant que je me savonne.", + "longDescription": "Si vous n’êtes pas frileux, coupez l'eau pendant que vous vous savonnez : l'économie en eau peut aller jusqu'à 50% !", + "usage": 3, + "fluidTypes": [ + 1 + ], + "impactLevel": 5, + "investment": null, + "room": [ + 1 + ], + "difficulty": 1, + "efficiency": 4, + "season": "Sans saison", + "action": true, + "actionDuration": 3, + "actionName": "Je coupe l'eau de la douche pendant que je me savonne.", + "equipment": false, + "equipmentInstallation": true, + "equipmentType": [], + +} +``` + +## Challenge + +### Description + +This doctype is used to store all challenges. + +### Doctype + +**`com.grandlyon.ecolyo.challenge`** + +### Structure + +| Field | Type | Description | +| ------------- | ------ | ------------------------------------------------- | +| \_id | string | challenge id - respect the format _CHALLENGE000X_ | +| title | string | title of the challenge | +| description | string | description of the challenge | +| target | number | The number of stars required to unlock the duel | +| relationships | any | relation to quiz and duel | + +### Example + +``` + { + "_id": "CHALLENGE0001", + "title": "Nicolas Hublot", + "description": "foobar", + "target": 15, + "relationships": { + "quiz": { + "data": { "_id": "QUIZ001", "_type": "com.grandlyon.ecolyo.quiz" } + }, + "exploration": { + "data": { "_id": "EXPLORATION001", "_type": "com.grandlyon.ecolyo.exploration" } + }, + "duel": { + "data": { "_id": "DUEL001", "_type": "com.grandlyon.ecolyo.duel" } + } + } + } +``` + +## User challenge + +### Description + +This doctype is used to store all additionnal information about a challenge started or ended by the user. + +### Doctype + +**`com.grandlyon.ecolyo.userchallenge`** + +### Structure + +| Field | Type | Description | +| ----------- | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| id | string | userChallenge id | +| title | string | userChallenge title | +| state | UserChallengeState | state of the challenge<br><br>UserChallengeState enum<br>- _LOCKED = 0_<br>- _UNLOCKED = 1_<br>- _ONGOING = 2_<br>- _DUEL = 3_<br>- _DONE = 4_ | +| target | number | Number of stars required to unlock the duel | +| progress | ChallengeProgress | Number of stars earned by the user for each challenge<br><br>ChallengeProgress enum<br>- _quizzProgress: number_<br>- _explorationProgress: number_<br>- _actionProgress: number_ | +| quiz | UserQuiz | Complete Quiz object with progress | +| exploration | UserExploration | Complete Exploration object with progress | +| action | UserActionEntity | Complete Action object | +| duel | UserDuelEntity | Complete Duel object with progress included | +| success | UserChallengeSuccess | Success state of the challenge<br><br>UserChallengeSuccess enum<br>- _ONGOING = 0_<br>- _LOST = 1_<br>- _WIN = 2_ | +| startDate | string null | starting date of the the challenge | +| endingDate | string null | ending date of the challenge | + +### Example + +``` +{ + "_id": "eae3a79a05d677a739bdd2b46b009936", + "description": "foobar", + "duel": { + "description": "Je parie un ours polaire que vous ne pouvez pas consommer moins que #CONSUMPTION € en 1 semaine", + "duration": { + "days": 7 + }, + "fluidTypes": [ + 0, + 1, + 2 + ], + "id": "DUEL001", + "startDate": null, + "state": 4, + "threshold": -1, + "title": "Nicolas Hublot", + "userConsumption": 0 + }, + "endingDate": null, + "id": "CHALLENGE0001", + "progress": { + "actionProgress": 0, + "explorationProgress": 0, + "quizProgress": 0 + }, + "quiz": { + "customQuestion": { + "interval": 30, + "period": {}, + "questionLabel": "Quel jour ai-je le plus consommé la semaine dernière ?", + "result": 1, + "timeStep": 20, + "type": 0 + }, + "id": "QUIZ001", + "questions": [ + { + "answers": [ + { + "answerLabel": "Vapeur d'eau", + "isTrue": false + }, + { + "answerLabel": "Fumée", + "isTrue": false + }, + { + "answerLabel": "Gouttelettes d'eau et cristaux de glace", + "isTrue": true + } + ], + "explanation": "Les nuages sont constitués de gouttelettes d'eau et parfois aussi de cristaux de glace", + "questionLabel": "De quoi les nuages sont-ils constitués ?", + "result": 1, + "source": "string" + }, + { + "answers": [ + { + "answerLabel": "86 km", + "isTrue": true + }, + { + "answerLabel": "78 km", + "isTrue": false + }, + { + "answerLabel": "56 km", + "isTrue": false + } + ], + "explanation": "L’aqueduc du Gier est un des aqueducs antiques de Lyon desservant la ville antique de Lugdunum. Avec ses 86 km il est le plus long des quatre aqueducs ayant alimenté la ville en eau, et celui dont les structures sont le mieux conservées. Il doit son nom au fait qu'il puise aux sources du Gier, affluent du Rhône", + "questionLabel": "Quelle longueur faisait l’aqueduc du Gier pour acheminer l’eau sur Lyon à l’époque romaine ?", + "result": 1, + "source": "string" + }, + { + "answers": [ + { + "answerLabel": "Crémieux", + "isTrue": false + }, + { + "answerLabel": "Crépieux-Charmy", + "isTrue": true + }, + { + "answerLabel": "Charly", + "isTrue": false + } + ], + "explanation": "Crépieux-Charmy est le principal champ captant de la Métropole de Lyon", + "questionLabel": "Quelle est le nom du principal champ de captage d’eau potable de la Métropole ?", + "result": 1, + "source": "string" + }, + { + "answers": [ + { + "answerLabel": "Pompe à air", + "isTrue": false + }, + { + "answerLabel": "Pompe à cordes", + "isTrue": true + }, + { + "answerLabel": "Pompe de Cornouailles", + "isTrue": false + } + ], + "explanation": "Mise en fonctionnement en 1856, 3 pompes à vapeur dites de Cornouailles produisent quelque 20 000 m3 d'eau par jour. Ces pompes mesurent 20 m de haut et 13 m de large pour un poids de 200 tonnes. Leur balancier de 35 tonnes s'actionne toutes les 6 secondes, permettant ainsi l'envoi de 600 m3 d'eau par heure.", + "questionLabel": "Quelle type de pompes étaient utilisées à l'usine des eaux de Caluire jusqu'en 1910 ?", + "result": 1, + "source": "string" + } + ], + "result": 5, + "state": 2 + }, + "exploration": { + "id": "EXPLORATION001", + "date": "2021-01-13T17:03:11.964Z", + "description": "Consultez 3 fois Ecolyo", + "ecogesture_id": "", + "fluid_condition": [], + "message_success": "Vous vous êtes connecté 3 fois à Ecolyo", + "progress": 0, + "state": 2, + "target": 3, + "type": 2 + }, + "action": { + "ecogesture": { + "_id": "ECOGESTURE0004", + "_rev": "3-da2ad5c7b81e4260e2254c98ec6ee971", + "_type": "com.grandlyon.ecolyo.ecogesture", + "action": true, + "actionDuration": 3, + "actionName": "Je coupe l'eau de la douche pendant que je me savonne.", + "cozyMetadata": { + "createdAt": "2021-03-08T09:52:41.029Z", + "createdByApp": "Ecolyo", + "createdByAppVersion": "1.0.4", + "metadataVersion": 1, + "updatedAt": "2021-03-08T09:52:41.029Z", + "updatedByApps": [ + { + "date": "2021-03-08T09:52:41.029Z", + "slug": "Ecolyo", + "version": "1.0.4" + } + ] + }, + "difficulty": 1, + "efficiency": 2.5, + "equipment": false, + "equipmentInstallation": true, + "equipmentType": [], + "fluidTypes": [ + 1 + ], + "id": "ECOGESTURE0004", + "impactLevel": 5, + "investment": null, + "longDescription": "Si vous n’êtes pas frileux, coupez l'eau pendant que vous vous savonnez : l'économie en eau peut aller jusqu'à 50% !", + "longName": "Je coupe l'eau de la douche pendant que je me savonne.", + "room": [ + 1 + ], + "season": "Sans saison", + "shortName": "Déesse des eaux", + "usage": 3 + }, + "startDate": "2021-03-09T17:57:44.600Z", + "state": 1 + }, + "startDate": "2021-01-04T00:00:00.000Z", + "state": 3, + "success": 0, + "target": 15, + "title": "Nicolas Hublot" +} +``` + +## Quiz + +### Description + +This doctype is used to store all quiz. + +### Doctype + +**`com.grandlyon.ecolyo.quiz`** + +### Structure + +| Field | Type | Description | +| -------------- | -------------------- | ------------------------------------------- | +| \_id | string | quiz id - respect the format _QUIZ00X_ | +| questions | QuestionEntity[] | Array of questions entities | +| customQuestion | CustomQuestionEntity | Custom question based on user's consumption | + +### Example + +``` +{ + "_id": "QUIZ001", + "questions": [ + { + "questionLabel": "Quelle longueur faisait l’aqueduc du Gier pour acheminer l’eau sur Lyon à l’époque romaine ?", + "answers": [ + { "answerLabel": "86 km", "isTrue": true }, + { + "answerLabel": "78 km", + "isTrue": false + }, + { + "answerLabel": "56 km", + "isTrue": false + } + ], + "explanation": "L’aqueduc du Gier est un des aqueducs antiques de Lyon desservant la ville antique de Lugdunum. Avec ses 86 km il est le plus long des quatre aqueducs ayant alimenté la ville en eau, et celui dont les structures sont le mieux conservées. Il doit son nom au fait qu'il puise aux sources du Gier, affluent du Rhône", + "source": "string" + }, + { + "questionLabel": "Quelle type de pompes étaient utilisées à l'usine des eaux de Caluire jusqu'en 1910 ?", + "answers": [ + { + "answerLabel": "Pompe à cordes", + "isTrue": true + }, + { + "answerLabel": "Pompe de Cornouailles", + "isTrue": false + }, + { + "answerLabel": "Pompe à air", + "isTrue": false + } + ], + "explanation": "Mise en fonctionnement en 1856, 3 pompes à vapeur dites de Cornouailles produisent quelque 20 000 m3 d'eau par jour. Ces pompes mesurent 20 m de haut et 13 m de large pour un poids de 200 tonnes. Leur balancier de 35 tonnes s'actionne toutes les 6 secondes, permettant ainsi l'envoi de 600 m3 d'eau par heure.", + "source": "string" + }, + { + "questionLabel": "Quelle est le nom du principal champ de captage d’eau potable de la Métropole ?", + "answers": [ + { "answerLabel": "Crémieux", "isTrue": false }, + { + "answerLabel": "Crépieux-Charmy", + "isTrue": true + }, + { + "answerLabel": "Charly", + "isTrue": false + } + ], + "explanation": "Crépieux-Charmy est le principal champ captant de la Métropole de Lyon", + "source": "string" + }, + { + "questionLabel": "De quoi les nuages sont-ils constitués ?", + "answers": [ + { "answerLabel": "Vapeur d'eau", "isTrue": false }, + { + "answerLabel": "Fumée", + "isTrue": false + }, + { + "answerLabel": "Gouttelettes d'eau et cristaux de glace", + "isTrue": true + } + ], + "explanation": "Les nuages sont constitués de gouttelettes d'eau et parfois aussi de cristaux de glace", + "source": "string" + } + ], + "customQuestion": { + "questionLabel": "Quel jour ai-je le plus consommé la semaine dernière ?", + "type": 0, + "timeStep": 20, + "interval": 30, + "period": {}, + "singleFluid": true + } + } +``` + +## Exploration + +### Description + +This doctype is used to store all explorations. + +### Doctype + +**`com.grandlyon.ecolyo.exploration`** + +### Structure + +| Field | Type | Description | +| --------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| \_id | string | exploration id - respect the format _EXPLORATION00X_ | +| state | UserExplorationState | State of the exploration<br><br>UserExplorationState enum<br>- _UNLOCKED = 0_<br>- _ONGOING = 1_<br>- _DONE = 2_ | +| description | string | description of the exploration | +| target | number | number of stars required to unlock an exploration | +| type | UserExplorationType | type of the exploration<br><br>UserExplorationType enum<br>- _DECLARATIVE = 0_<br>- _ACTION = 1_<br>- _CONSUMPTION = 2_<br>- _ECOGESTURE = 3_ | +| date | string or null | date of the exploration | +| ecogesture_id | string | ecogesture's id | +| fluid_condition | FluidType[] | Array of fluid type on which an exploration can have an impact<br><br>_FluidType enum:_<br>- _ELECTRICITY = 0_<br>- _WATER = 1_<br>- _GAS = 2_<br>- _MULTIFLUID = 3_ | +| message_success | string | message when exploration is done | + +### Example + +``` + { + "_id": "EXPLORATION001", + "description": "Consultez l'écogeste Chat échaudé", + "target": 1, + "type": 3, + "date": null, + "ecogesture_id": "0032", + "fluid_condition": [], + "message_success": "Vous avez consulté l'écogeste Chat échaudé", + "state": 0, + } +``` + +## Duel + +### Description + +This doctype is used to store all duels. + +### Doctype + +**`com.grandlyon.ecolyo.duel`** + +### Structure + +| Field | Type | Description | +| ----------- | -------- | -------------------------------------- | +| \_id | string | duel id - respect the format _DUEL00X_ | +| title | string | title of the duel | +| description | string | description of the duel | +| duration | Duration | Luxon Duration of the duel | + +### Example + +``` + { + "_id": "DUEL001", + "title": "Nicolas Hublot", + "description": "Je parie un ours polaire que vous ne pouvez pas consommer moins que #CONSUMPTION € en 1 semaine", + "duration": { "days": 7 } + } +``` + +## Usage event + +### Description + +This doctype is used to store all usage events. + +### Doctype + +**`com.grandlyon.ecolyo.usageevent`** + +### Structure + +| Field | Type | Description | +| ----------- | ---------------- | -------------------------------------- | +| date | DateTime | Date of the event | +| type | UsageEventType | Type of the event | +| target | string | Targeted konnector, page, challenge, quiz, exploration, action or timeStep | +| result | string | Result for KonnectorConnectEvent or KonnectorRefreshEvent.<br>Values: "success" or "error" | +| context | string | Luxon Duration of the duel | \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index a232e41..8d0f937 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,99 +1,100 @@ -site_name: Self Data Grand Lyon - Technical Docs -site_description: Self Data Grand Lyon Project Documentation with Markdown. -site_author: Métropole de Lyon -repo_name: "Clone the Project" -repo_url: "https://forge.grandlyon.com/web-et-numerique/llle_project/self-data-technical-doc" - -theme: - name: "material" - # logo: 'img/self_data_grdlyon.png' - favicon: "img/self_data_grdlyon.png" - palette: - primary: "white" - accent: "red" - -markdown_extensions: - - admonition - - plantuml_markdown: - server: http://www.plantuml.com/plantuml - - attr_list - - pymdownx.emoji - -extra_css: - - "stylesheets/extra.css" - -nav: - - Home: index.md - - Easy Cozy: - - Scripts: easycozy/scripts.md - - Commands: easycozy/commands.md - - Tips: easycozy/tips.md - - Ecolyo: - - Introduction: ecolyo/index.md - - Getting started: - - Setup your environment: ecolyo/getting_started/setup_your_environment.md - - Launch the application on local: ecolyo/getting_started/launch_local_application.md - - Launch a konnector on local: ecolyo/getting_started/launch_local_konnector.md - - Project Architecture: - - Architecture: ecolyo/project_architecture/architecture.md - - Libraries: ecolyo/project_architecture/libraries.md - - Environments: ecolyo/project_architecture/environments.md - - DocTypes: ecolyo/project_architecture/doctypes.md - - Application: - - Description: ecolyo/application/description.md - - Redux: ecolyo/application/redux.md - - Scaffolding: ecolyo/application/scaffolding.md - - Services: ecolyo/application/services.md - - Gitflow: ecolyo/application/gitflow.md - - Deploy: ecolyo/application/deploy.md - - Functionalities: - - Initialization: ecolyo/functionalities/initialization.md - - Consumption: ecolyo/functionalities/consumption.md - - Ecogesture: ecolyo/functionalities/ecogesture.md - - Challenge: ecolyo/functionalities/challenge.md - - Profile Type: ecolyo/functionalities/profile_type.md - - Pilote: - - Pilote - TS - Back: - - Index: pilote/Pilote - TS - Back/index.md - - Application: - - Deploy: pilote/Pilote - TS - Back/application/deploy.md - - Functionalities: - - Routes: pilote/Pilote - TS - Back/functionalities/routes.md - - Getting Started: - - Launch the application on local: pilote/Pilote - TS - Back/getting_started/launch_local_application.md - - Setup your environment: pilote/Pilote - TS - Back/getting_started/setup_your_environment.md - - Project Architecture: pilote/Pilote - TS - Back/project_architecture/architecture.md - - Pilote - TS - Front: - - Index: pilote/Pilote - TS - Front/index.md - - Application: - - Deploy: pilote/Pilote - TS - Front/application/deploy.md - - Functionalities: - - Routes: pilote/Pilote - TS - Front/functionalities/functions.md - - Getting Started: - - Launch the application on local: pilote/Pilote - TS - Front/getting_started/launch_local_application.md - - Pilote - Usager: - - Application: - - Deploy: pilote/Pilote - Usager/application/deploy.md - - Doctypes: pilote/Pilote - Usager/application/doctypes.md - - Gitflow: pilote/Pilote - Usager/application/gitflow.md - - Scaffolding: pilote/Pilote - Usager/application/scaffolding.md - - Services: pilote/Pilote - Usager/application/services.md - - Store: pilote/Pilote - Usager/application/store.md - - Functionalities: - - Appointments: pilote/Pilote - Usager/functionalities/appointments.md - - Contact: pilote/Pilote - Usager/functionalities/contact.md - - Document: pilote/Pilote - Usager/functionalities/document.md - - Settings: pilote/Pilote - Usager/functionalities/setting.md - - Getting Started: - - Launch local doctypes: pilote/Pilote - Usager/getting_started/launch_local_doctypes.md - - Launch local services: pilote/Pilote - Usager/getting_started/launch_local_services.md - - Konnectors: - - Enedis: konnectors/enedis.md - - GRDF: konnectors/grdf.md - - Eau du Grand Lyon: konnectors/egl.md - - Proxy: - - Description: proxy/description.md - - Monitoring: proxy/monitoring.md - - Use cases: - - Enedis: proxy/use_cases/enedis.md - - Grdf Adict: proxy/use_cases/grdfadict.md +site_name: Self Data Grand Lyon - Technical Docs +site_description: Self Data Grand Lyon Project Documentation with Markdown. +site_author: Métropole de Lyon +repo_name: "Clone the Project" +repo_url: "https://forge.grandlyon.com/web-et-numerique/llle_project/self-data-technical-doc" + +theme: + name: "material" + # logo: 'img/self_data_grdlyon.png' + favicon: "img/self_data_grdlyon.png" + palette: + primary: "white" + accent: "red" + +markdown_extensions: + - admonition + - plantuml_markdown: + server: http://www.plantuml.com/plantuml + - attr_list + - pymdownx.emoji + +extra_css: + - "stylesheets/extra.css" + +nav: + - Home: index.md + - Easy Cozy: + - Scripts: easycozy/scripts.md + - Commands: easycozy/commands.md + - Tips: easycozy/tips.md + - Ecolyo: + - Introduction: ecolyo/index.md + - Getting started: + - Setup your environment: ecolyo/getting_started/setup_your_environment.md + - Launch the application on local: ecolyo/getting_started/launch_local_application.md + - Launch a konnector on local: ecolyo/getting_started/launch_local_konnector.md + - Project Architecture: + - Architecture: ecolyo/project_architecture/architecture.md + - Libraries: ecolyo/project_architecture/libraries.md + - Environments: ecolyo/project_architecture/environments.md + - DocTypes: ecolyo/project_architecture/doctypes.md + - Application: + - Description: ecolyo/application/description.md + - Redux: ecolyo/application/redux.md + - Scaffolding: ecolyo/application/scaffolding.md + - Services: ecolyo/application/services.md + - Gitflow: ecolyo/application/gitflow.md + - Deploy: ecolyo/application/deploy.md + - Functionalities: + - Initialization: ecolyo/functionalities/initialization.md + - Consumption: ecolyo/functionalities/consumption.md + - Ecogesture: ecolyo/functionalities/ecogesture.md + - Challenge: ecolyo/functionalities/challenge.md + - Profile Type: ecolyo/functionalities/profile_type.md + - Usage events tracking: ecolyo/functionalities/usage_events_tracking.md + - Pilote: + - Pilote - TS - Back: + - Index: pilote/Pilote - TS - Back/index.md + - Application: + - Deploy: pilote/Pilote - TS - Back/application/deploy.md + - Functionalities: + - Routes: pilote/Pilote - TS - Back/functionalities/routes.md + - Getting Started: + - Launch the application on local: pilote/Pilote - TS - Back/getting_started/launch_local_application.md + - Setup your environment: pilote/Pilote - TS - Back/getting_started/setup_your_environment.md + - Project Architecture: pilote/Pilote - TS - Back/project_architecture/architecture.md + - Pilote - TS - Front: + - Index: pilote/Pilote - TS - Front/index.md + - Application: + - Deploy: pilote/Pilote - TS - Front/application/deploy.md + - Functionalities: + - Routes: pilote/Pilote - TS - Front/functionalities/functions.md + - Getting Started: + - Launch the application on local: pilote/Pilote - TS - Front/getting_started/launch_local_application.md + - Pilote - Usager: + - Application: + - Deploy: pilote/Pilote - Usager/application/deploy.md + - Doctypes: pilote/Pilote - Usager/application/doctypes.md + - Gitflow: pilote/Pilote - Usager/application/gitflow.md + - Scaffolding: pilote/Pilote - Usager/application/scaffolding.md + - Services: pilote/Pilote - Usager/application/services.md + - Store: pilote/Pilote - Usager/application/store.md + - Functionalities: + - Appointments: pilote/Pilote - Usager/functionalities/appointments.md + - Contact: pilote/Pilote - Usager/functionalities/contact.md + - Document: pilote/Pilote - Usager/functionalities/document.md + - Settings: pilote/Pilote - Usager/functionalities/setting.md + - Getting Started: + - Launch local doctypes: pilote/Pilote - Usager/getting_started/launch_local_doctypes.md + - Launch local services: pilote/Pilote - Usager/getting_started/launch_local_services.md + - Konnectors: + - Enedis: konnectors/enedis.md + - GRDF: konnectors/grdf.md + - Eau du Grand Lyon: konnectors/egl.md + - Proxy: + - Description: proxy/description.md + - Monitoring: proxy/monitoring.md + - Use cases: + - Enedis: proxy/use_cases/enedis.md + - Grdf Adict: proxy/use_cases/grdfadict.md -- GitLab