🎯 Marketplace pilotes de drone
Contexte
Le module Marketplace permet de connecter les besoins des agriculteurs, exprimés dans CerOps, avec les pilotes de drone capables de réaliser les missions.
La marketplace est une application web séparée, accessible uniquement aux pilotes de drone.
Les agriculteurs n’y ont pas accès.
Les missions sont créées automatiquement dans la marketplace à partir des demandes de survol faites dans CerOps.
Le rôle de la marketplace est de :
- exposer ces missions aux pilotes
- permettre leur sélection et planification
- gérer l’exécution et la livraison des résultats
Stack technique retenue
- Frontend : Next.js + TailwindCSS + shadcn/ui
- Backend : Fastify + oRPC
- Base de données : PostgreSQL + Prisma
- Auth : Better-Auth
- Runtime : Bun
- Paiement : Stripe
- Cartographie : Map (OSM ou équivalent)
- Notifications : système backend (push/email)
Objectif
Permettre :
- aux agriculteurs (via CerOps) de faire des demandes de survol
- de transformer ces demandes en missions exploitables
- de les proposer aux pilotes adaptés à leur matériel
- de permettre aux pilotes de sélectionner, planifier et exécuter ces missions
- de centraliser la livraison des données collectées
Ce module résout le problème de mise en relation entre :
- un besoin agronomique
- et une capacité technique (drone + capteurs)
Utilisateurs concernés
- Pilote de drone (principal)
- Admin (gestion plateforme)
- Backend CerOps (source des missions)
Fonctionnalités (User Stories)
- En tant que pilote, je veux voir les missions disponibles autour de moi afin de choisir celles qui m’intéressent
- En tant que pilote, je veux filtrer les missions compatibles avec mon matériel afin de ne voir que celles que je peux réaliser
- En tant que pilote, je veux voir toutes les missions disponibles afin d’identifier des opportunités d’investissement matériel
- En tant que pilote, je veux accepter une mission afin de la réserver
- En tant que pilote, je veux planifier une mission dans une plage horaire flexible afin de m’adapter à la météo
- En tant que pilote, je veux uploader les résultats du survol afin de livrer la mission
- En tant que système, je veux matcher les missions avec les capacités des pilotes afin de proposer les missions pertinentes
- En tant que plateforme, je veux gérer le paiement de manière sécurisée afin de garantir la transaction
Données manipulées
Entités principales
Mission
- id
- exploitationId
- parcelleIds[]
- localisation (géométrie)
- surfaceTotale
- typeMission
- capteursRequis[]
- plageTemporelle
- prix
- statut
- piloteId (optionnel)
- createdAt
- updatedAt
Pilote
- id
- nom / société
- zoneIntervention
- drones[]
- capteurs[]
- certifications[]
- disponibilite
- scoreInterne
- historiqueMissions
Capteur
- id
- nom
- type (multispectral, thermique, RGB, etc.)
- capabilities[]
Livraison (Deliverable)
- id
- missionId
- fichiers[]
- commentaire
- createdAt
Paiement
- id
- missionId
- montant
- statut (pre_authorized, captured, refunded)
- stripePaymentId
Relations
- 1 Mission → N Parcelles
- 1 Mission → 1 Pilote
- 1 Pilote → N Missions
- 1 Mission → 1 Livraison
- 1 Mission → 1 Paiement
API / Interfaces
Endpoints principaux
Missions
GET /missionsGET /missions/:idPOST /missions/:id/acceptPOST /missions/:id/schedulePOST /missions/:id/uploadPOST /missions/:id/cancel
Pilotes
GET /pilotes/mePUT /pilotes/me
Matching
GET /missions?compatible=true
Paiement
POST /payments/createPOST /payments/capture
Inputs / outputs
Entrées
- mission créée depuis CerOps
- acceptation par pilote
- planning
- fichiers upload
Sorties
- liste des missions
- missions compatibles / non compatibles
- détails mission
- statut mission
- livrables
Écrans / UX
Dashboard pilote
- liste des missions disponibles
- filtre :
- missions compatibles
- toutes les missions
- indicateur de compatibilité (OK / non compatible + raison)
Vue carte
- affichage des missions comme des “points” (type Airbnb)
- localisation exacte
- possibilité de cliquer pour voir le détail
Détail mission
- parcelles concernées
- surface
- type de mission
- capteurs requis
- plage temporelle
- prix
- statut
- compatibilité avec le matériel
Acceptation mission
- bouton “Accepter”
- passage du statut à
reserved
Planification
- sélection d’un créneau dans la plage définie
- suggestion météo (visuelle uniquement)
Upload livrables
- upload fichiers libres (vidéo, images, etc.)
- ajout commentaire texte
- validation livraison
Cas limites
Offline
- la marketplace est une app web → pas de support offline prévu
Erreurs
- paiement échoué
- upload échoué
- mission déjà réservée
- conflit d’acceptation simultanée
Données manquantes
- mission sans capteur précis
- localisation incomplète → non autorisé en MVP
Concurrence
- plusieurs pilotes tentent d’accepter en même temps → le premier valide la mission
Annulation
- un pilote peut annuler
- impact sur score interne
- mission remise en
published
Critères d’acceptation
- Le fonctionnement marketplace est défini
- La séparation CerOps / marketplace est claire
- Les missions sont créées depuis CerOps
- Le matching capteur → mission est documenté
- Le système d’acceptation de mission est défini
- La planification avec plage horaire est décrite
- L’intégration Stripe est définie (pré-autorisation + capture)
- Les écrans principaux sont décrits
- Le système de visibilité missions compatibles / toutes missions est défini
- Les cas limites sont identifiés
- Les statuts de mission sont définis
Dépendances
- Backend CerOps → création des missions
- Mobile CerOps → création des demandes
- Backend marketplace → gestion missions
- Stripe → paiement
- Drone → exécution terrain
- Imagerie → analyse des données (hors marketplace)
MVP vs Post-MVP
MVP
- Création automatique de missions depuis CerOps
- Liste des missions
- Vue carte + liste
- Filtre missions compatibles
- Acceptation mission (first come, first served)
- Planification avec plage horaire
- Suggestion météo visuelle
- Upload fichiers + commentaire
- Paiement Stripe (pré-autorisation + capture)
- Score interne pilote
- Annulation + republication
Post-MVP
- Matching intelligent avancé (IA)
- Système de recommandation missions
- Optimisation des tournées pilotes
- Pricing dynamique avancé
- Historique détaillé des performances pilotes
- Système de réputation visible
- Notifications avancées temps réel
- Intégration météo intelligente (auto-planification)
- Analyse automatique des livrables