chore: arborescence du monorepo EnerVision
Pose les dossiers des sept domaines de la stack (backend, frontend, base, ETL, infra, CI/CD, monitoring) avec un README de cadrage par domaine. Seul apps/backend est initialise, les autres font l'objet d'un ticket dedie. Le squelette Angular n'est pas versionne a la main : apps/frontend porte la commande ng new a lancer.
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.py]
|
||||
indent_size = 4
|
||||
max_line_length = 100
|
||||
|
||||
[*.{tf,tfvars}]
|
||||
indent_size = 2
|
||||
|
||||
[Makefile]
|
||||
indent_style = tab
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
# Python
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
.venv/
|
||||
venv/
|
||||
.pytest_cache/
|
||||
.mypy_cache/
|
||||
.ruff_cache/
|
||||
.coverage
|
||||
coverage.xml
|
||||
htmlcov/
|
||||
dist/
|
||||
build/
|
||||
*.egg-info/
|
||||
|
||||
# Node / Angular
|
||||
node_modules/
|
||||
.angular/
|
||||
apps/frontend/dist/
|
||||
apps/frontend/.angular/
|
||||
npm-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# Terraform
|
||||
.terraform/
|
||||
.terraform.lock.hcl
|
||||
*.tfstate
|
||||
*.tfstate.*
|
||||
*.tfplan
|
||||
crash.log
|
||||
override.tf
|
||||
override.tf.json
|
||||
*_override.tf
|
||||
*_override.tf.json
|
||||
|
||||
# Airflow
|
||||
etl/airflow/logs/
|
||||
airflow.db
|
||||
airflow-webserver.pid
|
||||
standalone_admin_password.txt
|
||||
|
||||
# Environnement et secrets
|
||||
.env
|
||||
.env.*
|
||||
!.env.example
|
||||
*.pem
|
||||
*.key
|
||||
secrets/
|
||||
|
||||
# Donnees locales
|
||||
data/
|
||||
*.sqlite3
|
||||
monitoring/grafana/data/
|
||||
monitoring/prometheus/data/
|
||||
|
||||
# IDE et OS
|
||||
.idea/
|
||||
.vscode/
|
||||
*.swp
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
@@ -1 +1,64 @@
|
||||
# ProjetPiscine_EnerVision
|
||||
# EnerVision
|
||||
|
||||
Monorepo de la plateforme EnerVision : collecte, stockage, analyse et restitution de
|
||||
series temporelles energetiques, deployee sur une machine on-premise.
|
||||
|
||||
## Stack cible
|
||||
|
||||
| Domaine | Technologie | Emplacement | Etat |
|
||||
|------------|-------------------------------------|---------------------|---------------|
|
||||
| Backend | FastAPI, Python 3.14 | `apps/backend` | Initialise |
|
||||
| Frontend | Angular, Node 24 LTS | `apps/frontend` | A initialiser |
|
||||
| Base | PostgreSQL + TimescaleDB | `db` | A initialiser |
|
||||
| ETL | Apache Airflow | `etl/airflow` | A initialiser |
|
||||
| Infra | Terraform | `infra/terraform` | A initialiser |
|
||||
| CI/CD | GitHub Actions | `.github/workflows` | A initialiser |
|
||||
| Monitoring | Prometheus, Grafana, Alertmanager | `monitoring` | A initialiser |
|
||||
|
||||
Seul le backend est initialise a ce stade. Les autres dossiers portent l'arborescence et
|
||||
un README de cadrage, leur contenu fait l'objet d'un ticket dedie.
|
||||
|
||||
## Arborescence
|
||||
|
||||
```
|
||||
.
|
||||
├── apps/
|
||||
│ ├── backend/ API FastAPI
|
||||
│ └── frontend/ Application Angular
|
||||
├── db/
|
||||
│ ├── init/ Bootstrap PostgreSQL + TimescaleDB
|
||||
│ ├── migrations/ Migrations SQL versionnees
|
||||
│ └── seeds/ Jeux de donnees de reference
|
||||
├── etl/airflow/
|
||||
│ ├── dags/ DAGs d'ingestion et d'agregation
|
||||
│ ├── plugins/ Operateurs et hooks maison
|
||||
│ ├── include/ Requetes SQL et ressources des DAGs
|
||||
│ └── tests/ Tests d'integrite des DAGs
|
||||
├── infra/terraform/
|
||||
│ ├── modules/ Modules reutilisables
|
||||
│ └── environments/ Racines Terraform, une par environnement
|
||||
├── monitoring/
|
||||
│ ├── prometheus/ Collecte et regles d'alerte
|
||||
│ ├── grafana/ Provisioning et dashboards
|
||||
│ └── alertmanager/ Routage des alertes
|
||||
├── docs/ ADR et vues d'architecture
|
||||
└── scripts/ Outillage local
|
||||
```
|
||||
|
||||
## Demarrage
|
||||
|
||||
Prerequis : uv, Docker. Le poste doit disposer de Python 3.14, que `uv` installe seul.
|
||||
|
||||
```bash
|
||||
make install # dependances du backend
|
||||
make dev # API sur http://localhost:8000, docs sur /docs
|
||||
make check # lint + typage + tests
|
||||
```
|
||||
|
||||
`make help` liste les cibles disponibles.
|
||||
|
||||
## Conventions
|
||||
|
||||
- Branches : `feat/`, `fix/`, `chore/`, `docs/` suivi d'un libelle court.
|
||||
- Commits : Conventional Commits, portee = dossier de premier niveau concerne.
|
||||
- Toute decision structurante donne lieu a un ADR dans `docs/adr`.
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
# Frontend EnerVision
|
||||
|
||||
Le squelette applicatif n'est pas versionne a la main : il est genere par Angular CLI.
|
||||
|
||||
## Initialisation
|
||||
|
||||
Depuis `apps/` :
|
||||
|
||||
```bash
|
||||
npx --yes @angular/cli@latest new frontend \
|
||||
--directory frontend \
|
||||
--style=scss \
|
||||
--routing \
|
||||
--ssr=false \
|
||||
--package-manager=npm \
|
||||
--skip-git
|
||||
```
|
||||
|
||||
Le dossier `apps/frontend` doit etre vide (hors ce README) avant de lancer la commande.
|
||||
|
||||
## Apres generation
|
||||
|
||||
1. Pointer l'API dans `src/environments/` sur `http://localhost:8000/api/v1`.
|
||||
2. Ajouter le proxy de developpement (`proxy.conf.json`) vers le backend.
|
||||
3. Verifier que `npm start` sert bien sur le port 4200 attendu par `docker-compose.yml`.
|
||||
4. Ajouter le `Dockerfile` multi-stage (build Angular puis service statique nginx).
|
||||
@@ -0,0 +1,10 @@
|
||||
# Base de donnees
|
||||
|
||||
PostgreSQL avec l'extension TimescaleDB. Non initialise, voir le ticket dedie.
|
||||
|
||||
- `init` : scripts de bootstrap joues au premier demarrage du conteneur.
|
||||
- `migrations` : migrations SQL versionnees.
|
||||
- `seeds` : jeux de donnees de reference.
|
||||
|
||||
Les migrations du schema applicatif expose par l'API vivent dans
|
||||
`apps/backend/alembic`, pas ici.
|
||||
@@ -0,0 +1,4 @@
|
||||
# Documentation
|
||||
|
||||
- `adr` : decisions d'architecture, une par fichier, numerotees et immuables.
|
||||
- `architecture` : schemas et vues d'ensemble.
|
||||
@@ -0,0 +1,9 @@
|
||||
# ETL
|
||||
|
||||
Orchestration Apache Airflow : ingestion des mesures, agregations continues,
|
||||
controles de qualite. Non initialise, voir le ticket dedie.
|
||||
|
||||
- `airflow/dags` : DAGs.
|
||||
- `airflow/plugins` : operateurs et hooks maison.
|
||||
- `airflow/include` : requetes SQL et ressources referencees par les DAGs.
|
||||
- `airflow/tests` : tests d'integrite des DAGs.
|
||||
@@ -0,0 +1,6 @@
|
||||
# Infrastructure
|
||||
|
||||
Provisionnement Terraform de la machine on-premise. Non initialise, voir le ticket dedie.
|
||||
|
||||
- `terraform/modules` : modules reutilisables.
|
||||
- `terraform/environments/<env>` : racines Terraform, une par environnement.
|
||||
@@ -0,0 +1,10 @@
|
||||
# Monitoring
|
||||
|
||||
Prometheus, Grafana et Alertmanager. Non initialise, voir le ticket dedie.
|
||||
|
||||
- `prometheus` : configuration de collecte et regles d'alerte.
|
||||
- `grafana/provisioning` : sources de donnees et fournisseurs de dashboards.
|
||||
- `grafana/dashboards` : dashboards versionnes au format JSON.
|
||||
- `alertmanager` : routage et inhibition des alertes.
|
||||
|
||||
Le backend expose deja ses metriques sur `/metrics` au format Prometheus.
|
||||
@@ -0,0 +1,3 @@
|
||||
# Scripts
|
||||
|
||||
Outillage local du monorepo. Les taches courantes passent par le `Makefile` racine.
|
||||
Reference in New Issue
Block a user