Conception - Recommandation intelligente de films

From air
Jump to navigation Jump to search

Voici la fiche de conception du projet 'Recommandation intelligente de films'.

Page d'accueil du projet

Équipe

  • Rachex Coralie (Chef de projet - Scrum Master)
  • Niogret Edwin
  • Hattinguais Julian
  • Navarro Elsa
  • Dunand Quentin

Schéma de la structure de l'application

La partie back-end de l'application sera répartie sur deux serveurs Amazon, l'un pour notre base de données et l'autre pour notre API. Notre serveur de fichier est logé sur le même serveur que l'API car nous disposons uniquement de deux comptes Amazon AWT avec la version d’essai gratuite encore active. A l'avenir il faudrait reloger ce serveur de fichier sur un serveur propre et répliquer les serveurs pour mieux résister à la charge et aux pannes.

ConceptionSysteme.png

Choix des langages de programmation

  • Python : pour le back-end
  • AngularJS : pour le front-end
  • MySql : pour la base de données

Choix technologiques

  • TensorFlow : librairie open source pour l'apprentissage automatique, utilisant des graphiques de flux de données.
  • Keras : librairie de réseaux neuronaux de haut niveau, écrite en Python et capable de fonctionner au dessus de TensorFlow.
  • Flask : framework open-source de développement web en Python.

API en back-end

Pour utiliser pleinement l'API, il faut que l'utilisateur soit connecté car les données enregistrées en BD sont associées à l'id de l'utilisateur. Ceci permet à chaque utilisateur d'avoir ses données propres et de les conserver entre deux connexions.

Routes
Requête Route Description Permission
POST /auth/signup Création d'un compte utilisateur
POST /auth/login Connexion d'un utilisateur
/auth/logout Déconnexion d'un utilisateur
POST /api/updateMovies Met à jours la liste des films annotés par l'utilisateur L'utilisateur doit être connecté
GET /api/likedMovies/<string:opinion> Récupère en base de données, la liste des films que l'utilisateur à aimé si opinion="liked", pas aimé si opinion="disliked" ou alors tous les films si opinion="all". L'utilisateur doit être connecté
POST /api/likedMovie/<int:idMovie>/<int:isLiked> Ajoute en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié L'utilisateur doit être connecté
PUT /api/likedMovie/<int:idMovie>/<int:isLiked> Met à jours en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié L'utilisateur doit être connecté
DELETE /api/likedMovie/<int:idMovie> Supprime de la base de données, le film d'idMovie=idTMDB associé à l'utilisateur L'utilisateur doit être connecté
POST /api/train Lance l'entrainement du modèle avec les films annotés par l'utilisateur, présents en base de données. L'utilisateur doit être connecté
GET /api/prediction Lance une prédiction à partir du modèle de l'utilisateur et retourne une liste de recommandation de films. L'utilisateur doit être connecté
POST /api/popularity Lance la recherche de popularité sur Twitter et retourne une liste de films ordonnée par popularité décroissante et une seconde liste ordonnée par avis décroissant L'utilisateur doit être connecté