# SAÉ 6 - Évolution d’une application existante

> **La problématique professionnelle est de faire évoluer en équipe une application en suivant une démarche itérative ou incrémentale. En partant d'une application existante et d'un ensemble de nouveaux besoins complexes, l'objectif est de faire évoluer l'application en y intégrant les manques, après avoir étudié les éléments existants en veillant à la conformité réglementaire.**

## Formation initiale

Les Jardins de Cocagne sont réputés pour leurs paniers de produits biologiques distribués localement.
Afin d’améliorer l’efficacité de la distribution, ce projet propose le développement de **deux** applications mobiles : l’une pour les livreurs et l’autre pour les clients finaux.


### Application Livreurs

- Optimiser le suivi des tournées journalières.
- Gérer le récapitulatif des paniers à distribuer pour chaque tournée.
- Faciliter la navigation et la validation des livraisons via des scans de QR codes.


#### 1. Liste des tournées :

- Écran principal affichant les tournées du jour (exemple : Charmes, Épinal, Remiremont).
- Le livreur sélectionne une tournée pour démarrer.

#### 2. Récapitulatif des paniers :

- Deuxième écran listant les paniers à livrer pour la tournée choisie :
- Nombre de paniers simples, familiaux, de fruits, d’œufs, etc.

#### 3. Livraison par dépôt :

- Écran indiquant les informations du premier dépôt :
  - Nom du dépôt
  - Adresse
  - Visualisation de l’itinéraire sur une **carte** interactive.

#### 4. Validation des livraisons :

- Fonction de scan QR code :
   - Le livreur scanne un QR code au dépôt.
   - Scanne ensuite chaque panier à livrer pour valider leur distribution.
   - Une fois validé, le système présente les informations du prochain dépôt.

### Application Clients

- Informer les clients finaux en temps réel lorsque leur panier est livré.

#### 1. Notifications :

- Lorsqu’un livreur scanne un panier pour un dépôt, les clients reçoivent une notification confirmant que leur panier a été livré.

#### 2. Informations du panier :

- Accès aux détails du panier : type et composition du panier (légumes présents).
- Historique des livraisons.

### Spécifications techniques :

- **Langages** : Flutter, React Native, Kotlin ou Swift
- Le rendu final devra être un paquet installable, pas un environnement de test tel qu'Expo Go
- Dépôt Git : Dés le début du projet, communiquez l'emplacement de votre dépôt. Un suivi régulier sera fait.

- **Fonctionnalités principales :**
  - Gestion des tournées (API backend pour synchronisation des données).
  - GPS et cartes pour afficher les itinéraires.
  - Scanners QR code pour valider les livraisons.

- **Fonctionnalités principales :**
  - Notifications en temps réel. Même lorsque l'application est fermée.
  - Accès à un tableau de bord des livraisons.

---

## Apprentis

Créer une application mobile qui utilise des technologies natives ou cross-platform.

### Objectifs :

#### 1. Photographier un fruit ou légume :

Permettre à l'utilisateur de capturer la photo d'un fruit ou légume via l'application.

#### 2. Associer des coordonnées GPS :

Utiliser les fonctionnalités de localisation du smartphone pour associer à chaque photo les coordonnées GPS de l'endroit où elle a été prise.

#### 3. Identification par IA :

Intégrer un moteur d'IA pour analyser la photo et identifier la plante avec par ordre préférence :

- Utiliser Tesseract avec un modèle pré-entrainé en local pour la reconnaissance, ou
- Exploiter une API que vous avez développé et que vous hébergez

Les Jardins de Cocagne ne souhaitent pas utiliser d'API tierces.

#### 4. Affichage des résultats :

Afficher sur l'**écran d'accueil** une liste récapitulative des plantes identifiées, chaque entrée contenant :

- Une miniature de la photo
- Les coordonnées GPS
- La date et l'heure de capture
- Le nom de la plante identifiée
- Le degré de confiance du modèle IA (en %).

### Contraintes :

- **Langages :** Flutter, React Native, Kotlin ou Swift
- Le rendu final devra être un paquet installable, pas un environnement de test tel qu'Expo Go
- Dépôt Git : Dés le début du projet, communiquez l'emplacement de votre dépôt. Un suivi régulier sera fait.
- Volume horaire par étudiant : **18 heures**

## Groupes

### Formation initiale

Groupe | Dépôt
---    |---
PHILIPPON-CHAMPROUX Florentin ; RATTI Martin |https://github.com/flo0s/Cocagne-Mobile-APP
MATEJKA Milan ; MAURICE Simon | https://github.com/VoidOma/SAE6_MATEJKA_MAURICE
ALVARIZA BILLAR Felipe ; KANY Thomas | https://github.com/tureisss/SAE6---Evolution-d-une-application-existante
DUBREUIL Eliot ; ERRAES Mehdi ; MEHIAOUI Mohamed | https://gitlab.univ-lorraine.fr/erraes5u/sae6
MERIMI Ayat | https://github.com/merimia/SAE6_MERIMI
HERRY Elwyn ; HERRY	Matteo | https://github.com/ElwynHerry/Herry_Matteo_Herry_Elwyn_Sae6
GAILLIEGUE Ewan ; VINCENT Teo | https://github.com/EwanGailliegue/SAE6-mobile-app
MEHRAZ Chayimaa ; RIFI ZAYNAB | https://github.com/Zineb-rf/jardins-cocagne-MEHRAZ-RIFI-sae6
ALGUL Sefer ; GRANDGIRARD Louis  | https://gitlab.univ-lorraine.fr/algul12u/sae-6
COGNET Mattheo ; BECERRA BARBA Erik | https://github.com/MattheoCo/ApplicationJardinCocagne

### Apprentis  (6 groupes)

Groupe | Dépôt
---    |---
COLIN Gabin ; DE RYCKE Leanne | https://gitlab.univ-lorraine.fr/derycke4u/sae6-colin-derycke
DESERT Romain ; NIRRENGARTEN Tom | https://github.com/Rom444d/SAE-6
GIL Jérémie ; PETRAZOLLER Johan | https://github.com/LeviLout/Jardin_Cocagne_GIL_PETRAZOLLER
NGUYEN Quang-Liem ; RALLI	Clément | https://github.com/JustL0ading/NGUYEN-RALLI-SAE6
DUFOUR Louise ; MARTIN Mathis |
ROBAIL Alexandre |https://github.com/Alx1618/SAE6_ROBAIL


## Web Service

Pour les groupes dont le web service de la SAÉ 5 est non fonctionnel ou incomplet vous pouvez utilisez ce web service. L'inconvénient est qu'il est en lecture seul car partagé et ouvert au public.

Liste des distributions de la semaine 6.

```
GET https://api.neotech.fr/distribution
```

Pour voir la documentation OpenAPI : https://rest.wiki/?https://api.neotech.fr#


Dépôts

```
GET https://api.neotech.fr/depot
```


Préparation

```
GET https://api.neotech.fr/preparation
```


Tournées

```
GET https://api.neotech.fr/tournee
```

Itineraires

```
GET https://api.neotech.fr/itineraire
```

Cette API a été réalisé à l'aide de postgREST une solution qui permet d'exposer une base de données postgreSQL directement en API.

https://docs.postgrest.org/en/v14/index.html

### Pagination 

```
GET https://api.neotech.fr/planning HTTP/1.1

HTTP/1.1 200 OK
Alt-Svc: h3=":443"; ma=2592000
Content-Length: 5090
Content-Location: /planning
Content-Range: 0-99/*
Content-Type: application/json; charset=utf-8
Date: Tue, 17 Feb 2026 18:48:40 GMT
Server: postgrest/14.3
Via: 1.1 Caddy
Connection: close

[
  {
    "id": 1,
    "calendrier_id": 1,
    "jour": "2024-01-09"
  },
```

Seuls les 100 (0-99) premiers enregistrements sont renvoyés sur un total inconnu.

```
GET https://api.neotech.fr/planning HTTP/1.1
Prefer: count=estimated

...
Content-Range: 0-99/600
```

L'API renvoi le nombre total d'enregistrement (une estimation pour les nombres > 1000)

Cette fois ci vous avez le nombre total d'enregistrements en plus de plage 0-99

```
GET https://api.neotech.fr/planning HTTP/1.1
Prefer: count=estimated
Range-Unit: items
Range: 500-600


Content-Range: 500-599/600

[  
  {  
    "id": 501,  
    "calendrier_id": 3,  
    "jour": "2026-01-08"  
  },
```