Projet Kine 2.0

=Le projet en quelques mots=

Le sujet
Ce projet a pour but de reproduire un équipement d'aide à la rééducation de l'oreille interne chez les patients souffrant de troubles (ex : équilibre) déjà présent au cabinet Vestib+, notre client. La solution mise en place doit être peu coûteuse, sans-fil et disponible à distance pour les patients et les kinésithérapeutes du cabinet Vestib+. Nous avons repris un projet INFO5 de 2019 et notre solution se décompose en 4 parties :
 * Une interface Kiné (Vestib+ Kiné) codée à l'aide du framework Angular (v.8) permettant à des kinésithérapeutes de programmer la rééducation de leurs patients. Elle permet également aux professionnels de santé de suivre l’évolution de leurs patients.
 * Une interface Patient (Vestib+) codée à l'aide du framework Angular (v.8) permettant à des patients de réaliser les exercices programmés par leur kinésithérapeute à la maison via le casque connecté en BLE (Bluetooth Low Energy) sur leur application.
 * Un serveur codé en Node.js et lié à une base de données MongoDB (via mongoose) qui sert essentiellement d'intermédiaire entre les front-ends et la base de données pour le passage des requêtes mais également pour le lancement de Socket.io qui est utilisé par le chat de nos applications.
 * Un casque connecté codé en Arduino (proche du C++) composé d'une batterie, une carte ESP32, un module BLE (Bluetooth Low Energy), un gyroscope/accéléromètre, un boîtier et un bandeau de fixation frontale.

Réalisations demandées
Le cabinet de kinésithérapie Vestib+ voulait tout simplement que nous mettions en production l’application qui avait été développée l’année dernière par le précédent groupe d’INFO5. Cela impliquait plusieurs développements :
 * Ajout de fonctionnalités de base manquantes
 * Établissement d’une communication bluetooth entre le casque connecté fait par les IESE et l’interface Patient
 * Déploiement des deux interfaces web, Kiné et Patient
 * Production de documentation

Réalisations effectuées

 * Refonte ergonomique et graphique
 * Ajout de fonctionnalités de base et optionnelles
 * Communication entre le casque connecté et l’interface Patient
 * Correction de bugs
 * Restructuration du code
 * Mise en place du déploiement
 * Production de documentations

=L'équipe et leurs rôles=


 * BARDOU Eva : chef de projet et développeuse full-stack sur les deux interfaces, était principalement chargée de superviser le projet en s’assurant que le groupe avance bien et qu’il n’y avait de souci pour personne. Elle a veillé à ce que l’organisation du projet et du groupe suive le bon chemin du début à la fin du projet. Elle a également développé des fonctionnalités critiques sur l’interface Kiné comme sur l’interface Patient et activement participé à la résolution des bugs sur les deux interfaces en fin de projet.
 * DEVOS Xavier : SCRUM Master, développeur full-stack sur l’interface Patient et responsable de la documentation de l’interface Patient, s’est occupé de présider les Daily Meetings et les rétrospectives de fin de sprint. Il a réalisé des petits développements sur l’interface Patient principalement au niveau du front-end et quelques fois au niveau de la logique et a participé à la résolution de bugs sur cette même interface. Il a également rédigé la totalité de la documentation technique de l’interface Patient.
 * HOUBRON Adrian : développeur full-stack sur l’interface Patient et responsable de la documentation du serveur et de l’interface Kiné, a réalisé des petits développements sur l’interface Patient principalement au niveau du front-end et quelques fois au niveau de la logique et a participé à la résolution de bugs sur cette même interface. Il a également rédigé la totalité de la documentation technique du serveur et de l’interface Kiné.
 * JAN Léo : responsable du Git et développeur full-stack sur les deux interfaces, avait pour rôle de s’assurer de la bonne utilisation du repository Git. Il a usé de son expérience pour réaliser les fonctionnalités restantes de l’interface Kiné et grandement participé à la production de code pour la partie Exercices de l’interface Patient. Il a également résolu de nombreux bugs sur les deux interfaces.
 * PELISSON Antoine : développeur du code du casque BLE et responsable de la documentation de déploiement, a été le seul à toucher au code du casque de rééducation sans lequel le projet ne pourrait pas fonctionner. Suite à ça, il s’est penché sur la production d’une feuille de route (documentation) permettant à notre client et ses patients d’effectivement pouvoir utiliser notre projet depuis n’importe quel ordinateur.

=Gestion de projet=

Choix des outils

 * Gitlab : pour l'implémentation, le versionning et le deploiement. Ainsi que la répartition et la gestion des tâches.
 * Drive : pour le travail en collaboration et le partage de documents supplémentaires.
 * Slack : pour la communication au sein du groupe.
 * VSCode : pour que la totalité du groupe code avec le même IDE.
 * Discord : pour les appels en vocal lors du confinement (Covid-19) mis en place par le gouvernement.

=Manuel d'installation= Si de futurs développeurs sont amenés à reprendre ce projet, ils peuvent trouver le manuel d’installation du projet en local pour le développement au format Markdown à ce lien : Manuel d'installation développeur - README.md

Notre projet GitLab n’étant pas exposé au public, si vous souhaitez obtenir une autorisation de consultation, n’hésitez pas à nous contacter à l’adresse mail suivante : eva.bardou38(at)gmail(dot).com

=Documentations développeur=

Documentation technique de l'interface Kiné
Vous pouvez retrouver la documentation technique de l’interface Kiné, à destination de futurs développeurs, à ce lien : KC2.0 - Documentation technique de l'interface Kiné.pdf

Documentation technique de l'interface Patient
Vous pouvez retrouver la documentation technique de l’interface Patient, à destination de futurs développeurs, à ce lien : KC2.0 - Documentation technique de l'interface Patient.pdf

Documentation de l'API
Vous pouvez retrouver les instructions de lancement de la documentation technique de l’API qui alimente notre application, à destination de futurs développeurs, à ce lien : Instructions de lancement - Documentation technique API - README.md

Notre projet GitLab n’étant pas exposé au public, si vous souhaitez obtenir une autorisation de consultation, n’hésitez pas à nous contacter à l’adresse mail suivante : eva.bardou38(at)gmail(dot).com

Cette documentation est générée à l’aide de l’outil apiDoc à l’aide des commentaires présents dans le code de notre API. C’est une documentation interactive qui s’affiche sur une page web (voir capture d’écran ci-après).

=SCRUM - Rétrospective des sprints=

Sprint 0 - Du 28/01/2020 au 02/02/2020
 Tâches à faire   Backlog 
 * Choix du projet et formation de l'équipe
 * Rencontre avec notre tuteur Sylvain Toru
 * Découverte du projet
 * Mise en place de l'organisation et des règles de fonctionnement de l'équipe (méthode Agile, conventions de nommage, Git workflow, ...)
 * Préparation des issues pour le sprint 1

Pas de backlog pour le sprint 0.

 Tâches effectivement réalisées  Toutes

 Retrospective 

Nous sommes maintenant bien organisés pour commencer le projet correctement. Nous espérons que ces deux séances passées à nous organiser permettront de faciliter notre avancée dans la réalisation. A priori le fait de nous être bien organisés dès le départ nous permettra de ne pas trop nous disperser tout au long du projet et de respecter nos deadlines.

Sprint 1 - Du 03/02/2020 au 09/02/2020
 Tâches à faire 
 * Réussir à installer et faire fonctionner l'application sur chaque ordinateur du groupe
 * Récupérer les informations envoyées par bluetooth
 * Liéer les informations bluetooth avec les exercices
 * Créer un exécutable pour lancer l'application facilement
 * Faire une réunion avec le cabinet de Kine pour établir un cahier des charges

 Backlog 

Pas de backlog au début du sprint.

 Tâches effectivement réalisées 
 * Découverte du code
 * Mise à jour de angular 6 à 8
 * Réussir à installer et faire fonctionner l'application sur chaque ordinateur du groupe
 * Récupérer les informations envoyées par bluetooth
 * Liéer les informations bluetooth avec les exercices
 * Créer un exécutable pour lancer l'application facilement ==> CANCELED
 * Faire une réunion avec le cabinet de Kine pour établir un cahier des charges
 * Concertation pour la refont des 2 interfaces
 * Refont du design des pages "connexion" et "inscription"
 * fixer des bugs mineurs

 Retrospective 
 * Pour le sprint 1, nous n'avons pas réussi à lier les informations reçues par bluetooth avec l'application. Cette tâche est donc reportée au sprint 2.
 * Le reste des tâches ont été réalisées. Nous avons même rajouté des issues pendant le sprint étant donné que nous sommes au début du projet.

Sprint 2 - Du 10/02/2020 au 16/02/2020
 Tâches à faire 
 * Formation initiale sur Angular
 * Finir de lier les données bluetooth avec les exercices
 * Vérifier les conditions de RGPD pour les infos des patients et modifier notre site en fonction
 * Développer un système d'authentification mail/mdp pour améliorer la sécurité côté patient
 * Refaire le design de l'interface kine + responsive
 * Refaire le design de l'interface patient + responsive
 * Refaire la liste des patients côté kiné
 * Modifier les barres de navigation pour chaque interface
 * Modifier la page liée aux exercices pour chaque interface

 Backlog 
 * Ajouter un tableau de bord sur les deux interfaces (récap + message pour l'interface Kiné et exercices + messages pour l'interface Patient)
 * Notifier le kiné d’un nouveau message sur l’appli avec une alerte
 * Suppression de la page menu sur l'interface patient

 Tâches effectivement réalisées 
 * Formation initiale sur Angular
 * Recherche d'informations concernant la RGPD
 * Développer un système d'authentification mail/mdp pour améliorer la sécurité côté patient
 * Refaire la liste des patients côté kiné
 * Modifier les barres de navigation pour chaque interface (en cours, fait que sur Kiné pour l'instant)
 * Refaire le design de l'interface kine + responsive (en cours)

 Retrospective 
 * Pour le sprint 2, nous n'avons toujours pas réussi à lier les informations reçues par bluetooth avec l'application. Pour le sprint 3 nous allons essayer de lier le capteur avec l'application via le câble USB, si cela fonctionne on devrait réussir à connecter le capteur avec l'application via la clef USB bluetooth.
 * Nous n'avons pas pu réaliser toutes les tâches attribuées à ce sprint car les recherches pour résoudre le problème du bluetooth nous a pris beaucoup de temps.

Sprint 3 - Du 17/02/2020 au 23/02/2020
 Tâches à faire   Backlog 
 * Lire les informations du capteur avec l'application (via câble USB ou bluetooth)
 * Modifier notre site en fonction de RGPD
 * Refaire le design de l'interface kine + responsive
 * Refaire le design de l'interface patient + responsive
 * Modifier la page liée aux exercices pour chaque interface
 * Ajouter un tableau de bord sur les deux interfaces (récap + message pour l'interface Kiné et exercices + messages pour l'interface Patient)
 * Notifier le kiné d’un nouveau message sur l’appli avec une alerte
 * Suppression de la page menu sur l'interface patient

 Tâches effectivement réalisées 
 * Lire les informations du capteur avec l'application (via bluetooth BLE)
 * Modifier notre site en fonction de RGPD
 * Refaire le design de l'interface kine + responsive : 75%
 * Refaire le design de l'interface patient + responsive : 30%
 * Modifier la page liée aux exercices pour chaque interface
 * Modifications des routes et des noms de components pour rendre le code plus clair et propre
 * Correction de bugs côté Kiné
 * Système d'envoi de mail pour la création ou l'oubli de mot de passe

 Retrospective 
 * On a pris du retard (maladies + bug) qu'il faudra rattraper pendant le sprint 4.

Sprint 4 - Du 02/03/2020 au 08/03/2020
 Tâches à faire 
 * Finir le design des 3 dernières page côté kiné
 * Continuer et finir le design côté patient
 * Check toutes les routes côté patient pour faire une issues par chaque page
 * Adapter correctement aux exos les données reçu par bluetooth
 * Développement d'un chat de discussion entre kiné et patient
 * Ajouter un tableau de bord sur les deux interfaces (récap + message pour l'interface Kiné et exercices + messages pour l'interface Patient)
 * Suppression de la page menu sur l'interface patient

 Backlog 
 * Créer des scénarios pour faire une démo complète
 * Mettre en production

 Tâches effectivement réalisées 
 * Finir le design des 3 dernières page côté kiné
 * Continuer et finir le design côté patient : il manque plus qu'une page (fini ce we)
 * Check toutes les routes côté patient pour faire une issues par chaque page
 * Adapter correctement aux exos les données reçu par bluetooth
 * Développement d’une messagerie entre kiné et patient : bien avancée (fini ce we ou lundi)
 * Suppression de la page menu sur l'interface patient
 * Création de scénarii de démo
 * Recherche de bug
 * Bug fix

 Retrospective 
 * On a bien avancé cette semaine, Les fonctionnalités principales sont développées. Cependant on a encore des tâches à finir ce week-end pour rattraper notre retard et être opérationnel pour la démo client de mardi prochain.

Sprint 5 - Du 09/03/2020 au 15/03/2020
 Tâches à faire 
 * Préparer démo & réunion client
 * Réunion Vestib+
 * Éventuelles fonctionnalités à rajouter suite à la réunion avec Vestib+
 * Commencer à voir pour la mise en production
 * Possibilité d’adapter la vitesse limite (exercices) quand on programme un session
 * Ajouter un tableau de bord sur les deux interfaces
 * Recherche de bug
 * Bug fix

 Backlog 
 * Mettre en production
 * Recherche de bug
 * Bug fix
 * Création de scénarii pour la soutenance finale

 Tâches effectivement réalisées 
 * Préparer démo & réunion client
 * Réunion Vestib+
 * Programmer plusieurs date d’un coup
 * Temps d’affichage du mot
 * Modification des exercices de type canal
 * Session entrainement
 * Commencer à voir pour la mise en production
 * Possibilité d’adapter la vitesse limite (exercices) quand on programme un session
 * Recherche de bug
 * Bug fix

 Retrospective  Suite à la réunion avec le client, beaucoup d’amélioration ont été proposé mais nous n’aurons pas le temps de tout réaliser d’ici la fin du projet.

Sprint 6 - Du 16/03/2020 au 20/03/2020
 Tâches à faire 
 * Mettre en production
 * Documentation pour mettre l'application en déploiement
 * Documentation technique sur interface kiné + patient
 * Indiquer combien d’exo il nous reste à faire
 * Ajouter les liens videos pour tuto
 * Suppression d’un kiné (avec redirection des patients à un autre kiné)
 * Remplir les mots dans le dico
 * Ajouter les 2 tableaux de bord (côté kiné & patient)
 * validation de la création d’un kiné
 * Recherche de bug
 * Bug fix
 * Préparation de la soutenance finale
 * Rapport de management

 Backlog 

 Tâches effectivement réalisées 
 * Mettre en production : en cours, marche sur une VM à peu près
 * Documentation technique sur interface kiné + patient : complètes mais à peaufiner
 * Indiquer combien d’exo il nous reste à faire
 * Suppression d’un kiné (avec redirection des patients à un autre kiné)
 * Remplir les mots dans le dico
 * Ajouter les 2 tableaux de bord (côté kiné & patient)
 * validation de la création d’un kiné
 * Recherche de bug
 * Bug fix
 * Rapport de management

 Retrospective  Ce sprint a été un peu particulier car nous avons du faire du télétravail suite à la crise du COVID-19. Cependant cela nous a permis d'être encore plus efficace que prévu.

=Répartition des heures= Vous pouvez retrouver la répartition horaire du travail au sein de notre groupe à ce lien.

=Fiche de suivi=