{"id":19830571,"url":"https://github.com/ansforge/eval-carbone-sih","last_synced_at":"2026-02-09T12:35:15.211Z","repository":{"id":233498182,"uuid":"768100771","full_name":"ansforge/Eval-Carbone-SIH","owner":"ansforge","description":null,"archived":false,"fork":false,"pushed_at":"2024-10-10T09:04:39.000Z","size":1680,"stargazers_count":2,"open_issues_count":1,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-06T15:06:27.467Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ansforge.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-06T13:23:27.000Z","updated_at":"2024-10-10T09:04:44.000Z","dependencies_parsed_at":"2024-05-21T14:58:26.096Z","dependency_job_id":"773a5a79-e7a5-4c69-8d46-ef816f18a05f","html_url":"https://github.com/ansforge/Eval-Carbone-SIH","commit_stats":null,"previous_names":["ansforge/eval-carbone-sih"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansforge%2FEval-Carbone-SIH","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansforge%2FEval-Carbone-SIH/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansforge%2FEval-Carbone-SIH/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansforge%2FEval-Carbone-SIH/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ansforge","download_url":"https://codeload.github.com/ansforge/Eval-Carbone-SIH/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251898496,"owners_count":21661837,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-12T11:24:12.293Z","updated_at":"2026-02-09T12:35:10.172Z","avatar_url":"https://github.com/ansforge.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EvalCarbone SIH\n\n## Prérequis\n\n- Ansible\n- Docker CE\n- NodeJs\n\n## Installation locale\n\n- `yarn`\n- `npx husky init`\n- `cp .env .env.local` (remplir les variables affectées par \"A_REMPLIR\")\n- `yarn start:db` (il se peut que le container Kafka ne se lance pas du premier coup, le relancer)\n- `yarn load_referentiels`\n- `yarn dev`\n\n## NumEcoEval\n\n- [Le code source](https://gitlab-forge.din.developpement-durable.gouv.fr/pub/numeco/m4g/numecoeval)\n- [Swagger api-rest-referentiels](http://localhost:18080/swagger-ui/index.html)\n- [Swagger api-rest-expositiondonneesentrees](http://localhost:18081/swagger-ui/index.html)\n- [Swagger api-event-calculs](http://localhost:18085/swagger-ui/index.html)\n\n## Installation OVH\n\n\u003eDemander à Nathalie Baudiniere pour avoir accès à la VM OVH, il faudra donner une clé SSH publique.\n\nPour se connecter sur la VM OVH :\n\n- `ssh ubuntu@eval-carbone-sih.esante.gouv.fr`\n\nTout se fait avec les recettes Ansible se trouvant dans `/infra`.\\\nRécupérer le fichier `.env.prod` sur la machine en question.\nPuis :\n\n- `ansible-galaxy collection install community.docker`\n- `yarn deploy:backend` (joué la première fois ou lors d'une mise à jour)\n- `yarn deploy:reverse-proxy` (joué la première fois ou lors d'une mise à jour)\n  - Les fichiers crt et key peuvent être récupérés sur la VM ou en demandant à Nathalie Baudiniere\n- `yarn deploy:referential` (joué la première fois ou lors d'une mise à jour)\n\n## Procédure de secours pour relancer les conteneurs\n\nEn étant connecté sur la VM OVH avec `ssh`, il suffit de lancer les commandes suivantes :\n```\n# se placer dans le bon répertoire\ncd /home/ubuntu/\n\n# relancer le reverse proxy (nginx)\ndocker compose --file docker-compose-reverse-proxy.yml up -d --force-recreate\n\n# relancer les conteneurs du front NumEcoEval\ndocker compose --file docker-compose-front.yml --env-file .env.prod --env-file .env.version up -d --force-recreate\n\n# relancer les conteneurs du backend NumEcoEval\ndocker compose up -d --force-recreate\n```\n\n### Schéma de la production\n\n```mermaid\nC4Context\ntitle EvalCarbone SIH\n\nPerson(dsi, \"DSI hospitalier\")\n\nBoundary(ovh, \"VM OVH\") {\n  Boundary(reverse-proxy, \"Reverse proxy\") {\n    Container(reverse-proxy, \"Reverse proxy\", \"Nginx\")\n  }\n\n  Boundary(eval-carbone-sih, \"EvalCarbone SIH\") {\n    Container(front, \"Frontend\", \"NextJs\")\n  }\n\n  Boundary(num-eco-eval, \"NumEcoEval\") {\n    ContainerDb(db, \"Database\", \"PostgreSQL\")\n    Container(expositiondonneesentrees, \"api-rest-expositiondonneesentrees\", \"Java\")\n    Container(referentiels, \"api-rest-referentiels\", \"Java\")\n    Container(donneesentrees, \"api-event-donneesentrees\", \"Java\")\n    Container(calculs, \"api-event-calculs\", \"Java\")\n    Container(kafka, \"Kafka\", \"kafka\")\n    Container(zookeeper, \"Zookeeper\", \"zookeeper\")\n  }\n}\n\nBiRel(dsi, reverse-proxy, \"\")\n\nBiRel(kafka, zookeeper, \"\")\n\nRel(expositiondonneesentrees, db, \"write\")\n\nBiRel(front, db, \"write and read\")\nBiRel(reverse-proxy, front, \"\")\nRel(front, expositiondonneesentrees, \"use\", \"Lancer le calcul et ajouter les équipements physiques\")\n```\n\n## Configuration GitHub \n\nLa clé SSH privée (créée plus haut) doit être mise sur GitHub dans les [settings](https://github.com/ansforge/Eval-Carbone-SIH/settings/secrets/actions).\n\n## Configuration Plage\n\nPlage est le service d'authentification.\n\n- [Documentation pour créer un compte de test](https://atih.atlassian.net/wiki/spaces/PUBLIC/pages/2979692685/Plage)\n- [Documentation technique](https://atih.atlassian.net/wiki/external/YjE4MTQzOGU0YTNmNDFjNDg3MDcxMjY4NThkMzYzNGE)\n\n## Les référentiels\n\nA savoir lors d'une mise à jour des référentiels au format CSV :\n\n- Les identifiants doivent être exactement les même, aucune typo (majuscule, caractère accentué,…), pas d'espaces en trop…\n- Séparateur \";\"\n- Écrire les (types) équipements dans le même ordre\n\n## Points d'attention pour le futur\n\n- La mise à jour de NumEcoEval peut être douloureuse parce que\n  - la plupart des appels se font directement sur la base de données (suppression, modification...) car les routes n'existent pas\n  - il se peut que la base de données aura changé donc il faudra réécrire le front\n- Idéalement, il faudrait utiliser le SaaS du Ministère de la Transition Ecologique (qui n'est pas encore en ligne à ce jour) et retirer la brique NumEcoEval mais voir le point numéro 1\n- Avoir un système de monitoring de la base de données pour pouvoir la mettre à l'échelle s'il y a trop de données et pourrait faire ralentir l'application à long terme\n- La base de données doit avoir un système de sauvegarde régulier au cas où la VM d'OVH doit être reconstruite\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fansforge%2Feval-carbone-sih","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fansforge%2Feval-carbone-sih","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fansforge%2Feval-carbone-sih/lists"}