# Mise en production PNC - schéma `foncier_poc`

Ce prototype est configuré pour que tous les objets métier utilisés par l’application soient dans le schéma PostgreSQL/PostGIS :

```text
foncier_poc
```

## 1. Tables sources attendues

Les tables sources déposées dans la base `pnc` doivent être dans le même schéma :

```text
foncier_poc.fichier_foncier
foncier_poc.bdnb
```

- `fichier_foncier` : table parcellaire Fichiers fonciers / Cerema `pnb10_parcelle`.
- `bdnb` : polygones BDNB avec au minimum `geom`, `batiment_construction_id`, `code_commune_insee`, `hauteur`, `altitude_sol`.

## 2. Objets créés par les scripts

Les scripts SQL créent uniquement des vues, vues matérialisées, tables de référence et index dans `foncier_poc`.

Objets principaux :

```text
foncier_poc.ref_communes_aula
foncier_poc.v_batiments_historique
foncier_poc.v_batiments_historique_bdnb_ff
foncier_poc.v_territoires
foncier_poc.v_communes
foncier_poc.v_controle_bdnb_ff
foncier_poc.v_controle_bdnb_ff_par_commune
```

Pour la production avec BDNB, la vue recommandée pour l’application est :

```env
FONCIER_BUILDINGS_VIEW=v_batiments_historique_bdnb_ff
FONCIER_BDNB_VIEW=v_batiments_historique_bdnb_ff
```

## 3. Fichier `.env`

Le fichier `.env` contient les identifiants de connexion et ne doit pas être partagé ni versionné.

Exemple minimal :

```env
PGHOST=adresse_du_serveur
PGPORT=5432
PGDATABASE=pnc
PGUSER=utilisateur_app
PGPASSWORD=mot_de_passe
PGSSLMODE=disable

FONCIER_SCHEMA=foncier_poc
FONCIER_BUILDINGS_VIEW=v_batiments_historique_bdnb_ff
FONCIER_TERRITORIES_VIEW=v_territoires
FONCIER_GEOM_COL=geom
FONCIER_COUNT_COL=
FONCIER_BDNB_VIEW=v_batiments_historique_bdnb_ff
FONCIER_BDNB_HEIGHT_COL=hauteur_m
FONCIER_BDNB_YEAR_COL=annee_apparition
FONCIER_DEFAULT_LEVEL=commune
FONCIER_START_YEAR=1970
FONCIER_END_YEAR=2025
```

## 4. Ordre conseillé dans pgAdmin

1. Déposer/importer `foncier_poc.fichier_foncier`.
2. Déposer/importer `foncier_poc.bdnb`.
3. Exécuter :

```sql
-- Préparation FF à la parcelle
-- fichier : sql/10_setup_fichiers_fonciers_pnb10.sql

-- Croisement BDNB x FF et vue bâtimentaire finale
-- fichier : sql/11_bdnb_x_fichiers_fonciers.sql
```

4. Vérifier :

```sql
SELECT * FROM foncier_poc.v_controle_bdnb_ff;

SELECT *
FROM foncier_poc.v_controle_bdnb_ff_par_commune
ORDER BY nb_batiments_bdnb DESC
LIMIT 20;
```

## 5. Lancement applicatif

Depuis le dossier du projet :

```powershell
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
.\.venv\Scripts\python.exe -m uvicorn app:app --reload
```

Puis ouvrir :

```text
http://127.0.0.1:8000
```

## 6. Contrôle API

```text
http://127.0.0.1:8000/api/health
http://127.0.0.1:8000/api/territoires?niveau=commune
http://127.0.0.1:8000/api/indicators?territoire=CODE_INSEE&niveau=commune
```

`/api/health` doit indiquer `mode: postgis` si le `.env` est bien lu et si la connexion PostgreSQL fonctionne.
