Vivadacs Mobile
Saisie terrain & export CSV
Intitulé du projet
Messon Joëlle (projet individuel)
Vivadacs Mobile : Saisie terrain & export CSV
1 Contexte
1.1 Parties prenantes
- Porteuse du projet : Joelle Messon (étudiante ingénieure agronome - salariée de la coopérative Vivadour, en charge de l’expérimentation agronomique).
- Commanditaire / encadrant : Arnaud Elger et Christophe Laplanche (enseignants encadrants AgroToulouse)
- Utilisateurs cibles : expérimentateurs, techniciens terrain, stagiaires et alternants réalisant des relevés sur parcelles dans le cadre de l’expérimentation
1.2 Historique
Vivadacs est un essai qui vise à comparer 3 systèmes des cultures (labour, travail simplifié, semis direct) sur une même parcelle. Le suivi d’indicateurs sur 5 ans est nécessaire (annexe 8 indicateurs Vivadacs).
En expérimentation agronomique, la saisie terrain est souvent réalisée sur papier, puis ressaisie manuellement. Cela peut entraîner :
- un temps important de consolidation,
- des erreurs de saisie,
- des formats hétérogènes,
- des difficultés pour comparer les modalités
Dans le cadre du diplôme, un projet individuel de conception numérique est demandé, avec programmation et utilisation de GitHub.
1.3 Finalité
Développer un dispositif numérique permettant de
2 Cahier des charges
2.1 Livrable
2.1.1 Composants
- Interface web polyvalente (ordinateur/mobile/tablette) de saisie de relevés terrain
- Fichier d’échange : .csv. En entrée : base de données des indicateurs à collecter sur le terrain. En sortie : export des valeurs des relevés terrain effectués.
-
Ecriture du code dans Visual Studio Code qui déverse dans GitHub. VS Code est un IDE (Environnement de Développement Intégré) qui a servi de "quartier général" pour structurer mon travail grâce à plusieurs fonctionnalités :
- Gestion du projet : Il m’a permis d'organiser l’arborescence (app.py, dossiers templates et static)
- Terminal intégré : C'est directement depuis VS Code que j’ai lancé les commandes d'installation (pip install flask pandas) et démarrer l’application (python app.py)
- Assistance au code : Coloration syntaxique pour le HTML/Jinja et Python, et auto-complétions qui évite les erreurs de frappe dans les fonctions Pandas ou Flask
- Débogage : Visualiser immédiatement les erreurs retournées dans la console lors des tests
- Dépôt GitHub : code, documentation
2.1.2 Fonctions
Côté interface web
- Créer un relevé = un passage terrain.
-
Saisir les données minimales :
- date/heure
- essai (défaut : Vivadacs)
- modalité (texte libre)
- observateur (texte libre)
- Saisir les indicateurs
- Afficher la liste des relevés, modifier et supprimer.
- Enregistrer et exporter l’ensemble des relevés dans un fichier Excel
Côté VSCode
- Générer un .csv avec onglet Données : colonnes, indicateurs, valeurs
Le code Python, via le framework Flask, crée et gère le serveur web. VS Code prête sa console (le terminal) pour exécuter le script Python.
Lorsque ce script est exécuté, Flask ouvre un connecteur sur l’ordinateur (port 5000) et se met à "écouter" les requêtes HTTP (comme l'affichage de la page ou la soumission du formulaire) envoyées par le navigateur internet.
2.1.3 Attributs
Attributs de données
- 1 ligne = 1 relevé dans le fichier .csv
- Colonnes = indicateurs
- Traçabilité : identifiant relevé unique + date/heure
Attributs de qualité de saisie
- Champs obligatoires : date/heure, essai, modalité, observateur
- Champs numériques acceptant vide → export en valeur manquante (null)
Indicateurs ciblés
| Indicateur | Description |
|---|---|
vitesse_infiltration_beerkan_mm_h | Vitesse d’infiltration de l’eau (Beerkan) en unité mm/h |
classement_structure_indice | Classement structure (test bêche) indice noté de 1 à 5 |
vers_terre_abondance_nb_m2 | Abondance totale des vers de terre (OPVT) en unité nb/m² |
vers_terre_biomasse_g_m2 | Biomasse totale des vers de terre (OPVT) en unité g/m² |
biomasse_couvert_kg_ms_ha | Biomasse du couvert en unité kg MS/ha |
etat_surface_note et etat_surface_commentaire | État de surface noté de 1 à 5 + commentaire |
Architecture de l’application mobile VIVADACS-Mobile

Capture d’écran de l’application Vivadacs Mobile.
Explication des briques et rôles respectifs :
- Navigateur Web : C'est l'interface de l'utilisateur. Il envoie des requêtes. Ex : le fait de cliquer sur le bouton « Modifier »
- Serveur Web (app.py avec Flask) : C'est le « cerveau ». Il intercepte les requêtes du navigateur via les routes (ex: @app.route('/edit/<id>')), décide de la logique à appliquer, appelle Pandas pour manipuler les fichiers, et fusionne le tout avec les templates HTML.
- Brique Données (Dossier data/ avec Pandas) : Rôle de stockage. Pandas simule une base de données relationnelle en lisant, filtrant (sélection d'un ID) et écrivant directement dans les fichiers .csv.
- Brique Présentation (Dossier templates/ et static/) : Rôle d'affichage. Les fichiers HTML contiennent la structure de la page et des variables dynamiques (les boucles {% for %}) que Flask va remplacer par les vraies valeurs avant d'envoyer la page finale propre au navigateur.
Analyse comparative
- Excel sur mobile : permet de saisir mais risque d’erreur important, validation limitée
- Formulaires type Google Forms : très robustes, mais moins adaptés à une structure « sur mesure » Vivadacs, non personnalisable à la marque Vivadour, davantage adapté pour des questionnaires d’enquêtes
Le projet apporte une solution spécifique à Vivadacs, avec un schéma fixe, traçabilité et export standardisé.
3 Organisation
3.1 Tâches
Tâche 1 – Analyse des besoins et rédaction du cahier des charges
Production : Fiche projet complétée (sections 1 et 2). Niveau de réalisation mesurable : document rédigé et validé par l'encadrant.
Tâche 2 – Mise en place de l'environnement de développement
Production : Environnement VS Code opérationnel, dépôt GitHub créé et initialisé, Flask et Pandas installés. Niveau de réalisation : app.py lancé sans erreur, dépôt visible sur GitHub.
Tâche 3 – Développement de la structure de données (fichiers CSV)
Production : Fichiers data/releves.csv et data/indicateurs.csv créés avec le bon schéma de colonnes. Niveau de réalisation : fichiers générés et conformes aux attributs définis en 2.1.3.
Tâche 4 – Développement de l'interface web (formulaire de saisie)
Production : Templates HTML (templates/index.html, templates/edit.html) permettant la saisie, l'affichage, la modification et la suppression d'un relevé. Niveau de réalisation : fonctionnalités CRUD (CREATE, READ, UPDATE et DELETE) testées manuellement sur mobile et ordinateur.
Tâche 5 – Développement du backend Flask (routes et logique)
Production : Fichier app.py avec toutes les routes (/, /new, /edit/<id>, /delete/<id>, /export). Niveau de réalisation : chaque route retourne le bon résultat HTTP, sans erreur console.
Tâche 6 – Développement de la fonction d'export CSV
Production : Route /export générant un fichier .csv téléchargeable, conforme au schéma (1 ligne = 1 relevé, colonnes = indicateurs). Niveau de réalisation : fichier exporté validé sur 3 relevés de test.
Tâche 7 – Tests, validation et corrections
Production : Rapport de test (liste des cas testés, bugs identifiés et corrigés). Niveau de réalisation : tous les cas d'usage définis en 2.1.2 validés sans erreur bloquante.
Tâche 8 – Documentation et finalisation du dépôt GitHub
Production : README.md rédigé (description, installation, utilisation), code commenté, dépôt GitHub à jour. Niveau de réalisation : dépôt privé consultable si partagé via un lien.
3.2 Organigramme de tâches

T3 et T4 peuvent être menées en parallèle après T2.
3.3 Planification
| Tâche | Responsable | Participants | Temps prévu (h) | Échéance | Temps réel (h) | Avancement |
|---|---|---|---|---|---|---|
| T1 – Analyse des besoins | J. Messon | J. Messon | 2 | 30/03/2026 | 2 | 100 % |
| T2 – Environnement de developpement | J. Messon | J. Messon | 3 | 30/04/2026 | 2 | 100 % |
| T3 – Structure de donnees CSV | J. Messon | J. Messon | 2 | 30/04/2026 | 1 | 100 % |
| T4 – Interface web HTML | J. Messon | J. Messon | 4 | 30/05/2026 | 6 | 100 % |
| T5 – Backend Flask (routes) | J. Messon | J. Messon | 4 | 30/05/2026 | 6 | 100 % |
| T6 – Export CSV | J. Messon | J. Messon | 2 | 30/05/2026 | 4 | 100 % |
| T7 – Tests et validation | J. Messon | J. Messon | 3 | 12/06/2026 | 2 | 100 % |
| T8 – Documentation et GitHub | J. Messon | J. Messon | 2 | 12/06/2026 | 2 | 100 % |
4 Matériel, méthodes et ressources
Matériel
- Ordinateur personnel avec VS Code installé
- Smartphone/tablette pour les tests d'interface mobile (navigateur Chrome)
- Données de terrain issues de l'essai Vivadacs : liste des indicateurs agronomiques fournie par Vivadour (fichier data/indicateurs.csv)
Méthodes et outils de développement
- Langage : Python 3
- Framework web : Flask — gestion des routes HTTP, génération dynamique des pages HTML via le moteur de templates Jinja2
- Manipulation de données : Pandas — lecture, filtrage et écriture des fichiers .csv (simulation d'une base de données relationnelle légère)
- Éditeur de code : Visual Studio Code — gestion de l'arborescence du projet (app.py, dossiers templates/ et static/), terminal intégré pour lancer l'application, débogage en temps réel
- Versions : GitHub — suivi des versions du code, dépôt partagé accessible aux encadrants
- Structure MVC simplifiée : séparation entre la logique métier (app.py), le stockage (data/), et la présentation (templates/, static/)
Ressources externes
- Documentation officielle Flask (flask.palletsprojects.com) et Pandas (pandas.pydata.org)
- Intelligence artificielle (Google Gemini / Notion AI) : aide à la résolution de bugs, génération de blocs de code
- Enseignants encadrants : Arnaud Elger et Christophe Laplanche (AgroToulouse) pour la validation méthodologique
- Encadrement professionnel : Joëlle Messon (Vivadour) pour la définition des indicateurs et la validation agronomique
5 Risques
| Problème potentiel | Probabilité (1-3) | Actions pour limiter la probabilité | Impact (1-3) | Actions pour limiter l'impact | Risque (P×I) |
|---|---|---|---|---|---|
| Incompatibilite de l'interface web sur mobile (affichage non responsive) | 2 | Utiliser des balises HTML adaptatives (meta viewport), tester regulierement sur mobile en cours de developpement | 3 | Prevoir une version minimaliste du formulaire, utiliser un framework CSS leger (Bootstrap) | 6 |
| Perte ou corruption des donnees CSV lors de l'export | 2 | Versionner les fichiers de donnees, effectuer des sauvegardes regulieres sur GitHub | 3 | Maintenir un fichier de donnees de test separe, valider le schema CSV a chaque export | 6 |
| Blocage technique sur Flask (erreurs de routes, conflits de dependances Python) | 2 | Utiliser un environnement virtuel Python (venv), consulter la documentation officielle et les ressources IA | 2 | Maintenir une version stable du code sur GitHub, isoler les nouvelles fonctionnalites dans des branches | 4 |
| Depassement de delai (charge de travail parallele) | 2 | Planification hebdomadaire, priorisation des taches critiques (T5 et T6) | 2 | Reduire le perimetre fonctionnel si necessaire (ex. : supprimer le developpement du Frontend) en accord avec l'encadrant | 4 |
| Indicateurs Vivadacs mal definis ou modifies en cours de projet | 1 | Valider la liste des indicateurs avec Vivadour avant le developpement (fichier indicateurs.csv fige) | 3 | Rendre la structure du formulaire parametrable via le fichier CSV d'indicateurs (pas en dur dans le code) | 3 |
| Application inaccessible sur le terrain (pas de connexion reseau) | 1 | Documenter clairement que l'application necessite un reseau local ou une connexion | 2 | Hors perimetre du projet actuel ; noter comme piste d'amelioration future (mode offline) | 2 |