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