# falitianaandriamaherycarles-max/projet-immobilier architecture

> Architecture diagram of the GitHub repository falitianaandriamaherycarles-max/projet-immobilier, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/falitianaandriamaherycarles-max/projet-immobilier
- Repository: https://github.com/falitianaandriamaherycarles-max/projet-immobilier

## Overview

Ce dépôt met en œuvre un pipeline MLOps de prédiction des prix immobiliers DVF : ingestion, nettoyage, préparation des variables, entraînement et évaluation, puis prédiction via une API. DVC versionne les artefacts du pipeline, tandis que l’entraînement trace ses runs dans MLflow et peut publier le modèle sur Hugging Face. Le monitoring compare les données de référence et de production et signale quand un réentraînement est recommandé. Les liens du pipeline suivent les sorties et lectures décrites dans le README et le code échantillonné ; l’accumulation des requêtes de production n’est pas montrée.

Main entry points: [`configs/config.yaml`](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/configs/config.yaml) (Configuration), [`models`](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/tree/master/models) (Modèle entraîné), [`dvc.yaml`](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/dvc.yaml) (Versioning DVC), [`src/api/main.py`](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/api/main.py) (API FastAPI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Préparation DVF"]
  node_ingest["Ingestion<br/>[ingest.py]"]
  node_raw[("Données brutes")]
  node_preprocess["Nettoyage DVF<br/>[preprocess.py]"]
  node_clean[("Données nettoyées")]
  node_features["Variables et split<br/>[build_features.py]"]
  node_featuredata[("Jeux train/test")]
end

subgraph group_ml["Modèle et suivi"]
  node_dvc["Versioning DVC<br/>[dvc.yaml]"]
  node_trainer["Entraînement<br/>[train.py]"]
  node_model["Modèle entraîné"]
  node_mlflow[("Tracking MLflow")]
  node_evaluation["Évaluation<br/>[evaluate.py]"]
  node_evalreport["Métriques d’évaluation"]
end

subgraph group_serving["API de prédiction"]
  node_api["API FastAPI<br/>[main.py]"]
  node_loader["Chargement modèle<br/>[model_loader.py]"]
  node_predictor["Prédicteur immobilier<br/>[predict.py]"]
  node_schemas["Schémas API<br/>[schemas.py]"]
end

subgraph group_monitor["Monitoring et publication"]
  node_monitoring["Rapport de dérive<br/>[drift_report.py]"]
  node_monitor_data[("Données référence/courantes")]
  node_drift_report["Rapport Evidently"]
  node_hf_push["Publication Hub<br/>[push_hf.py]"]
end

node_dvf[("Données DVF")]
node_operator(("Utilisateur"))
node_hf[("Hugging Face Hub")]
node_config["Configuration<br/>[config.yaml]"]

node_dvf -->|"fournit CSV"| node_ingest
node_ingest -->|"écrit brut"| node_raw
node_raw -->|"lu par"| node_preprocess
node_preprocess -->|"écrit nettoyé"| node_clean
node_clean -->|"lu par"| node_features
node_features -->|"écrit jeux"| node_featuredata
node_featuredata -->|"lu par"| node_trainer
node_trainer -->|"sauvegarde"| node_model
node_trainer -->|"trace runs"| node_mlflow
node_featuredata -->|"lu par"| node_evaluation
node_model -->|"chargé par"| node_evaluation
node_evaluation -->|"écrit métriques"| node_evalreport
node_operator -->|"demande prédiction"| node_api
node_api -->|"valide requête"| node_schemas
node_api -->|"obtient prédicteur"| node_loader
node_loader -->|"instancie"| node_predictor
node_predictor -->|"charge artefacts"| node_model
node_api -->|"prédit prix"| node_predictor
node_operator -->|"lance rapport"| node_monitoring
node_monitoring -->|"lit référence/courant"| node_monitor_data
node_monitoring -->|"écrit rapport"| node_drift_report
node_operator -.->|"lance publication"| node_hf_push
node_hf_push -.->|"lit artefacts"| node_model
node_hf_push -.->|"publie fichiers"| node_hf
node_dvc -->|"versionne"| node_raw
node_dvc -->|"versionne"| node_clean
node_dvc -->|"versionne"| node_featuredata
node_dvc -->|"versionne"| node_model
node_config -->|"configure"| node_ingest
node_config -->|"configure"| node_preprocess
node_config -->|"configure"| node_features
node_config -->|"configure"| node_trainer
node_config -->|"configure"| node_evaluation
node_config -->|"configure"| node_monitoring
node_config -->|"configure"| node_hf_push

click node_ingest "https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/data/ingest.py"
click node_raw "https://github.com/falitianaandriamaherycarles-max/projet-immobilier/tree/master/data/raw"
click node_preprocess "https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/data/preprocess.py"
click node_clean "https://github.com/falitianaandriamaherycarles-max/projet-immobilier/tree/master/data/processed"
click node_features "https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/features/build_features.py"
click node_featuredata "https://github.com/falitianaandriamaherycarles-max/projet-immobilier/tree/master/data/features"
click node_dvc "https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/dvc.yaml"
click node_trainer "https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/models/train.py"
click node_model "https://github.com/falitianaandriamaherycarles-max/projet-immobilier/tree/master/models"
click node_evaluation "https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/models/evaluate.py"
click node_evalreport "https://github.com/falitianaandriamaherycarles-max/projet-immobilier/tree/master/reports"
click node_api "https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/api/main.py"
click node_loader "https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/api/model_loader.py"
click node_predictor "https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/models/predict.py"
click node_schemas "https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/api/schemas.py"
click node_monitoring "https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/monitoring/drift_report.py"
click node_monitor_data "https://github.com/falitianaandriamaherycarles-max/projet-immobilier/tree/master/data"
click node_drift_report "https://github.com/falitianaandriamaherycarles-max/projet-immobilier/tree/master/reports"
click node_hf_push "https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/models/push_hf.py"
click node_config "https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/configs/config.yaml"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_ingest,node_raw,node_preprocess,node_clean,node_features,node_featuredata toneBlue
class node_dvc,node_trainer,node_model,node_mlflow,node_evaluation,node_evalreport,node_dvf,node_hf toneAmber
class node_api,node_loader,node_predictor,node_schemas toneMint
class node_monitoring,node_monitor_data,node_drift_report,node_hf_push toneRose
class node_operator toneIndigo
class node_config toneTeal
```

## Components

### Préparation DVF

- [Ingestion](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/data/ingest.py): `src/data/ingest.py`
- [Données brutes](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/tree/master/data/raw): `data/raw`
- [Nettoyage DVF](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/data/preprocess.py): `src/data/preprocess.py`
- [Données nettoyées](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/tree/master/data/processed): `data/processed`
- [Variables et split](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/features/build_features.py): `src/features/build_features.py`
- [Jeux train/test](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/tree/master/data/features): `data/features`

### Modèle et suivi

- [Versioning DVC](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/dvc.yaml): `dvc.yaml`
- [Entraînement](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/models/train.py): `src/models/train.py`
- [Modèle entraîné](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/tree/master/models): `models`
- **Tracking MLflow**
- [Évaluation](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/models/evaluate.py): `src/models/evaluate.py`
- [Métriques d’évaluation](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/tree/master/reports): `reports`

### API de prédiction

- [API FastAPI](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/api/main.py): `src/api/main.py`
- [Chargement modèle](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/api/model_loader.py): `src/api/model_loader.py`
- [Prédicteur immobilier](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/models/predict.py): `src/models/predict.py`
- [Schémas API](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/api/schemas.py): `src/api/schemas.py`

### Monitoring et publication

- [Rapport de dérive](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/monitoring/drift_report.py): `src/monitoring/drift_report.py`
- [Données référence/courantes](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/tree/master/data): `data`
- [Rapport Evidently](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/tree/master/reports): `reports`
- [Publication Hub](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/src/models/push_hf.py): `src/models/push_hf.py`

### Other components

- **Données DVF**
- **Utilisateur**
- **Hugging Face Hub**
- [Configuration](https://github.com/falitianaandriamaherycarles-max/projet-immobilier/blob/master/configs/config.yaml): `configs/config.yaml`

## Connections

- Données DVF → Ingestion: fournit CSV
- Ingestion → Données brutes: écrit brut
- Données brutes → Nettoyage DVF: lu par
- Nettoyage DVF → Données nettoyées: écrit nettoyé
- Données nettoyées → Variables et split: lu par
- Variables et split → Jeux train/test: écrit jeux
- Jeux train/test → Entraînement: lu par
- Entraînement → Modèle entraîné: sauvegarde
- Entraînement → Tracking MLflow: trace runs
- Jeux train/test → Évaluation: lu par
- Modèle entraîné → Évaluation: chargé par
- Évaluation → Métriques d’évaluation: écrit métriques
- Utilisateur → API FastAPI: demande prédiction
- API FastAPI → Schémas API: valide requête
- API FastAPI → Chargement modèle: obtient prédicteur
- Chargement modèle → Prédicteur immobilier: instancie
- Prédicteur immobilier → Modèle entraîné: charge artefacts
- API FastAPI → Prédicteur immobilier: prédit prix
- Utilisateur → Rapport de dérive: lance rapport
- Rapport de dérive → Données référence/courantes: lit référence/courant
- Rapport de dérive → Rapport Evidently: écrit rapport
- Utilisateur → Publication Hub: lance publication
- Publication Hub → Modèle entraîné: lit artefacts
- Publication Hub → Hugging Face Hub: publie fichiers
- Versioning DVC → Données brutes: versionne
- Versioning DVC → Données nettoyées: versionne
- Versioning DVC → Jeux train/test: versionne
- Versioning DVC → Modèle entraîné: versionne
- Configuration → Ingestion: configure
- Configuration → Nettoyage DVF: configure
- Configuration → Variables et split: configure
- Configuration → Entraînement: configure
- Configuration → Évaluation: configure
- Configuration → Rapport de dérive: configure
- Configuration → Publication Hub: configure
