# Datachecker

Outil de contrôle livrables FTTH.

Les formats actuellement acceptés sont

* Format MN 1.12
* Format Netgeo 2.2


## Démarrage

Ouvrir une fenêtre de commande dans le répertoire de l'application, et lancer:

	set FLASK_APP=index.py
	flask run
	
Le serveur est alors disponible à l'adresse suivante: [http://127.0.0.1:5000](http://127.0.0.1:5000)

## Fonctionnement général

Les tests se font en trois temps:

1. Chargement des fichiers: on contrôle la présence des fichiers attendus, leur format, leur type de géométrie.
2. Contrôle de la structure: on vérifie la structure des données, comme la présence des champs obligatoires, le type de données...etc.
3. Validation métier: contrôles complémentaires sur la cohérence des données.

> Une erreur critique au cours d'une de ces étapes interrompt les tests.

## Schémas

Les fichiers de configuration des schémas sont dans le sous-dossier `schemas`

Le fichier `models.py` contient la définition des objets attendus, dont le nom du fichier contenant les données, et la structure des données attendues.
Le fichier `validator.py` contient les fonctions de contrôle métier, et d'éventuelles modifications au chargement des données et au contrôle de la structure.

## Tests effectués

> Une liste plus détaillée est donnée dans le readme de chaque schéma.

* **Chargement des données**

  * Présence des fichiers attendus
  * Format des fichiers
  * Type de géométrie
  * Projection (à venir)

* **Structure**

  * Les coordonnées des entités sont dans la zone d'emprise autorisée
  * Les champs attendus sont présents
  * Les champs obligatoires sont renseignés
  * Type des données (entiers, décimaux, dates...)
  * Les champs ne dépassent pas la longueur autorisée
  * Contrôle des valeurs autorisées
  
* **Validation Métier**

  * Contrôle des doublons dans les PK
  * Contrôle des cardinalités
  * Contrôle des doublons graphiques
  * Autres contrôles liés au schéma.


