# Équivalence avec le POC foncier

Ce document explique comment la structure du POC eau a été alignée sur
celle du POC foncier, et où les deux projets diffèrent volontairement.

## Ce qui a été aligné

| POC foncier                          | POC eau                              |
|---------------------------------------|----------------------------------------|
| `app.py` à la racine, charge `.env`   | idem                                   |
| `requirements.txt`, `README.md`, `.gitignore` | idem                          |
| `data/` (scope + cache)               | idem (`data/scope.json`, `data/cache/`) |
| `docs/`                               | idem (`docs/DONNEES.md`, ce fichier)   |
| `scripts/` (diagnostic / cache)       | `scripts/check_env.py`                 |
| `sql/` (vues + index numérotés)       | `sql/00_...`, `sql/01_...`             |
| Variables d'env `PGHOST`, `PGDATABASE`, `PGUSER`, `PGPASSWORD`, `PGSSLMODE` | mêmes noms |
| Périmètre AULA configurable plutôt que codé en dur (`agency_scope.json` / `FONCIER_*`) | `EAU_EPCI_SCOPE` dans `.env` |
| Esthétique : palette, typographie, cards, ombres, rayons (`static/style.css`) | reprise dans `static/css/style.css` |

## Ce qui a volontairement été conservé différent

- **Framework** : le POC foncier utilise FastAPI, le POC eau reste en
  Flask + Blueprints. Les deux frameworks font le même travail ; migrer
  vers FastAPI n'aurait rien apporté à la demande (organisation des
  fichiers / esthétique) et aurait pris le risque de casser des
  requêtes SQL qui n'ont pas pu être testées ici faute d'accès à la
  base réelle.
- **`routes/` + `services/`** : le POC foncier concentre presque toute
  sa logique dans un unique `app.py` de 1500+ lignes, avec des couches
  `backend/`, `external/` et `open_data/` qui se recoupent en partie.
  Le découpage `routes/` (endpoints Flask) + `services/` (accès BDD)
  déjà en place côté eau est plus lisible : il a été conservé et
  simplement complété (`config.py`, `services/db.py`).
- **Templates Jinja vs page statique unique** : le foncier sert un seul
  `static/index.html` monté via FastAPI `StaticFiles`. Le POC eau garde
  `templates/base.html` + `templates/dashboard.html` (Flask/Jinja), ce
  qui est l'approche Flask idiomatique et n'a pas besoin de changer.
- **Narration en 4 sections avec points de navigation** (rétrospective /
  état / anticiper / trajectoire) plutôt que le scroll continu à
  chapitres du foncier : structure déjà fonctionnelle, non modifiée
  pour ne pas casser les 20 fichiers `static/js/indicators/*.js` qui en
  dépendent. Seule l'esthétique (couleurs, typographie, rayons,
  ombres) a été reprise du foncier.

## Où sont passées les listes d'EPCI codées en dur ?

Avant, la liste `('CA de Béthune-Bruay, Artois-Lys Romane','CC du
Ternois', 'CC des Sept Vallées')` était recopiée dans une quinzaine de
requêtes SQL à travers `services/*.py`. Elle est maintenant définie une
seule fois dans `.env` (`EAU_EPCI_SCOPE`), lue par `config.py`, et
injectée dans les requêtes via `services/db.py::scope_clause()`. Pour
changer le périmètre AULA, il suffit de modifier `.env` — aucun fichier
Python à toucher.
