# local/ — pipeline de données local

> Ce dossier **n'est pas versionné** (exclu via `.gitignore`).
> Il contient les données personnelles, les fichiers d'import et les scripts
> de pipeline locaux.

---

## Structure

```
local/
├── datasets/               ← inbox : déposer ici les exports HRV Elite
│   ├── Juju/
│   │   ├── resting/        ← enregistrements repos (5 min allongé)
│   │   ├── orthostatic/    ← test orthostatique (allongé → debout)
│   │   ├── coherence/      ← séances de cohérence cardiaque
│   │   ├── hrr/            ← récupération post-effort
│   │   ├── drift/          ← dérive cardiaque (effort constant)
│   │   └── vo2max/         ← estimation VO2max (repos)
│   └── Nana/
│       └── ...             ← même structure
│
├── processed/              ← fichiers déplacés après import en base
│   ├── Juju/
│   │   └── resting/
│   │       └── 2026-05-27 07-52-36.txt
│   └── Nana/
│       └── ...
│
├── logs/
│   └── import_log.csv      ← trace de chaque import (fichier, statut, date)
│
├── main_init_db.py         ← initialiser toutes les tables PostgreSQL
├── main_save_to_db.py      ← ETL : datasets/ → base de données → processed/
├── main_report.py          ← tableaux de reporting (pd.Styler → HTML)
└── main_visualize.py       ← graphiques et dashboards
```

---

## Prérequis

```bash
# Activer l'environnement virtuel (depuis la racine du projet)
source .venv/bin/activate

# Vérifier que python-dotenv est installé
pip install python-dotenv   # si pas déjà présent
```

Le fichier `.env` à la racine du projet doit contenir :

```
DB_HOST=...
DB_PORT=5432
DB_NAME=...
DB_USER=...
DB_PASSWORD=...
```

---

## Workflow typique

### 1. Initialiser la base (une seule fois)

```bash
python local/main_init_db.py
```

Pour tout supprimer et recréer (⚠️ efface toutes les données) :

```bash
python local/main_init_db.py --reset
```

### 2. Déposer des fichiers HRV Elite

Copier les exports `.txt` dans le bon dossier utilisateur / protocole :

```
local/datasets/Juju/resting/2026-05-27 07-52-36.txt
local/datasets/Nana/coherence/2026-05-26 19-10-00.txt
```

### 3. Importer en base

```bash
# Un utilisateur, un protocole
python local/main_save_to_db.py --user Juju --protocol resting

# Un utilisateur, tous les protocoles
python local/main_save_to_db.py --user Nana

# Tous les utilisateurs, tous les protocoles
python local/main_save_to_db.py
```

Les fichiers traités sont déplacés dans `processed/<user>/<protocol>/`.
Un log est ajouté dans `logs/import_log.csv`.

### 4. Visualiser et reporter

```bash
# Tableaux de reporting (export HTML)
python local/main_report.py --user Juju --protocol resting --last 10

# Graphiques et dashboards
python local/main_visualize.py --user Nana --protocol hrr
```

---

## Format des fichiers HRV Elite

HRV Elite exporte un fichier `.txt` avec **un intervalle RR par ligne**
(valeurs en millisecondes) :

```
823
810
798
815
...
```

Le nom du fichier doit contenir la date au format `YYYY-MM-DD` (ou
`YYYY-MM-DD HH-MM-SS`) pour que la date de session soit extraite
automatiquement. Exemple : `2026-05-27 07-52-36.txt`.
