Thème du projet : site de e-commerce



Groupe de projet

Formation des groupes de projet avec un référent : groupe de 3/4 personnes dans chaque groupe de TP

Créer un groupe et indiquer les membres dans ce document (pour l’affectation des salles)


Affectation d’un sujet par l’enseignant : de 1 de 16


Il est possible de proposer une idée mais l’article doit pouvoir se décliner (taille, couleur … différentes : l’article doit posséder une déclinaison ou une variation) sous réserve que ça ne ressemble pas trop à un sujet existant.

Semaine 1 / 2 : livrable 1

prise en main du projet :

Base de données :



livrable 1 :

exemple de modification :
exemple de fichier PDF (format A4) avec un MCD qui sera imprimé
exemple de fichier PDF (format A4) avec un MLD qui sera imprimé



La qualité du jeu de test est vraiment prise en compte, nombre de colonnes pour les articles, les types d’articles, le nombre d’articles. Le tout devant ressembler à quelque chose dans laquelle un client pourrait se projeter. (Minimum 15 articles et 4 types d’articles (15 photos différentes minimum, pas de photos identiques pour un article sinon malus, les photos doivent être réalistes et attractives))


Application Flask


Créer un compte Sur l’hébergeur pythonanywhere et héberger votre application.


Votre application doit permettre :


étape 1 :

Un sujet va vous être imposé avec des noms d’articles à respecter.

Mais vous pouvez proposer un type d’article et des exemples d’articles avec l’accord de l’enseignant.


Site de vente

Structure de base : application sur laquelle l’utilisateur peut se créer un compte, se connecter et se déconnecter

La base de données dispose de plusieurs tables :

utilisateur (id_utilisateur, login, email, nom, password, role) 
commande (id_commande, date_achat, #utilisateur_id, #etat_id)
ligne_commande ( #commande_id , #article_id , prix, quantite)
ligne_panier (#utilisateur_id , #article_id, quantite, date_ajout)
etat (id_etat, libelle )





Affectation des sujets :

IMPORTANT : Derrière le numéro du sujet, respecter :


sujet 1 : meuble/materiau

meuble materiau(chene, pin -ou- modele unique) type_meuble fournisseur marque …..
exemple - exemple2


sujet 2 : vetement/taille

vetement taille(taille unique -ou- XS,S,M,L,XL…) type_vetement couleur fournisseur marque ….. exemple


sujet 3: velo/taille

velo taille(taille unique -ou- XS,S,M,L,XL… ) couleur fournisseur type_velo ….. exemple


sujet 4: ski/longueur

ski longueur(longueur unique -ou- 150,160…) type_ski modèle fabricant fournisseur ….. exemple


sujet 5: chaussure/couleur

chaussure pointure(36,38…) ou produit nettoyant ; type_chaussure fournisseur marque couleur ….. exemple ou exemple

sujet 6: telephone/couleur

telephone couleur(bleu noie…) modele categorie fournisseur marque ….. exemple exemple


sujet 7: casque/taille

casque taille(XS,S,M,L,XL…) type_casque couleur taille fabricant fournisseur …..

exemple


sujet 8: lunette/couleur

lunette couleur(bleu noir…) taille indice_protection categorie(soleil protection vue enfant) fournisseur marque ….. exemple


sujet 9: peinture/couleur

peinture couleur(bleu noir… vert) volume_pot(0.5L 1L …) categorie(intérieur bois extérieur métal) fournisseur marque ….. exemple


sujet 10: gant/taille

gant taille(6,7,8,9,10…) ou taille unique type_gant(jardinage ski hiver mode) fournisseur marque ….. exemple


sujet 11: câble/longueur

cable longueur(50cm , 1m , 1m50 ,…) ou taille unique type_prise(usb jack hdmi …) fournisseur marque …..


sujet 12: clé usb(cle_usb)/capacité

cle_usb capacité (8GO , 16 G0 , …) ou capacité unique type_port( usb C, USB classique, mini …) fournisseur marque …..


sujet 13: jean/taille

jean taille(W29 W31 W33… L32 (taille américaine)) coupe_jean couleur fournisseur marque ….. exemple


sujet 14: parfum/volume

parfum volume(50ml 100ml) genre(homme femme mixte ) fournisseur marque ….. exemple


sujet 15: linge/coloris

linge coloris( voir exemple), taille, type_linge(serviette bain, drap … ) fournisseur marque ….. exemple


sujet 16: boisson (eau ou jus de fruit)/arome ou conditionnement ou fruit

boisson conditionnement( voir exemple le catalogue celtic), arome (sans arome, orange, citron …) conteneur (verre, plastique(PET), brique carton, aluminium), type_eau(petillante, plate, aromatisé …) fournisseur marque ….. exemple - exemple2


sujet 17: equipement de sport/ taille

equipement_sport couleur( voir exemple , sélectionner les couleurs), type_sport fournisseur marque …..



autre idée - autre idée - autre idée




livrable 2 : site de e-commerce minimum fonctionnel



Livrable 2 : Ce livrable est composé d’un fichier archive (.zip ou .tar.gz) qui contient le dossier de votre projet (ne pas oublier le fichier SQL (jeu de test) qui est dans le même dossier que le fichier app.py)

Cette partie est à rendre sur moodle


partie python et sql

Il devrait être possible de tester votre application sur l’hébergeur pythonanywhere


livrable 3 : travail personnel dans le groupe

Un petit bonus est donné à ceux qui ont une à deux semaine d’avance dans leur rendu et leur présentation.


Lors des SAE vous définirez et vous m’informerez de la partie de chaque étudiant dans le groupe


tâche par étudiant (1 tâche par étudiant)

modifier le modèle logique de données de façon à ce que votre application puisse réaliser une des tâches suivantes




Boutique du client ( front-office : boutique du client, vue pour faire les commandes )

  1. Affichage du nombre de déclinaison(s) des articles qui en possèdent plusieurs dans la boutique (front-office :vue pour faire les commandes) ; faire ce calcul dans une requête SQL pour extraire les données (sans boucle en python pour ajouter des données).
  2. Affichage du stock restant avec une ou plusieurs déclinaisons de l’article (dans le front-office : boutique du client)
  3. Lors de l’ajout d’un article dans le panier, le client passe par une interface supplémentaire pour saisir la propriété (choisir la déclinaison) sauf si il n’y a qu’une seule déclinaison (propriété) pour un article. La quantité de chaque déclinaison est affichée dans cette interface.
  4. Le stock se décrémente lorsque l’on ajoute un/des articles dans le panier, la suppression d’articles du panier re-incrémente le stock avec une ou plusieurs déclinaisons de l’article.
  5. Affichage du prix total de la commande en cours (panier) en tenant compte des déclinaisons.
  6. Affichage de la(les) déclinaison(s) dans le panier (propriété : taille, couleur …) de l’article choisi si il y en a plusieurs possibles.
  7. Commande : affichage du prix total des commandes, du nombre d’articles.
  8. Lors de l’affichage du détail d’une commande : affichage du nom de l’article, du nombre d’articles, du prix unitaire et du prix total de cet (ces) article(s) mais surtout de la déclinaison si il y en a une.

Interface Administrateur ( bask-office )

  1. (ADMIN) Pour l’administrateur : Interface pour consulter toutes les commandes, valider les commandes, consulter le détail des commandes avec la déclinaison des articles
  2. (ADMIN) Pour l’administrateur : Interface qui affiche un tableau avec les articles (nom, identifiant), le nombre de déclinaisons, le stock restant de chaque article ; mettre en valeur les articles à ré-approvisionner : un message s’affiche si une déclinaison est en rupture de stock (=0). Ce tableau dispose de bouton de modifier, ajouter voir supprimer le stock des articles. Si un article a été commandé, il n’est plus possible de le supprimer.
  3. (ADMIN) Interface pour compléter le stock des articles en fonction de la déclinaison (taille, couleur …).
  4. (ADMIN) Interface pour ajouter/modifier/supprimer de nouvelle déclinaison.
  5. (ADMIN) Gestion de 2 déclinaisons . Chaque déclinaison possède 2 propriétés différentes.
  6. (ADMIN) Gestion de la “taille unique” ou “couleur unique”, lors de la sélection de cette propriété, il n’est plus possible d’en sélectionner une autre. Cette propriété n’est pas proposée dans la liste déroulante si une autre déclinaison a déjà été sélectionnée.
  7. (ADMIN) Pour les plus à l’aise : Gestion de la suppression/modification de déclinaisons déjà commandés : Si on supprime ou on modifie un article une déclinaison déjà achetée on fait une copie et qui devient “non utilisable” de la déclinaison, et on crée une nouvelle déclinaison. (la facture du produit acheté doit rester identique).


Interface Administrateur, visualisation de données ( bask-office )

  1. VISUALISATION de données sur les stocks pour l’administrateur
  2. Attention à la qualité du jeu de test pour cette partie.

Remarque : pour simplifier le problème, lorsque l’identifiant de la taille ou la couleur (ou autre déclinaison) est “1”, la taille ou la couleur est considérée comme ‘unique’




Boutique du client ( front-office : boutique du client, vue pour faire les commandes )

  1. Afficher le nombre de commentaires (avis) et la note moyenne (uniquement si ces données existent sinon ne rien afficher) pour chaque article ; faire ce calcul dans une requête SQL pour extraire les données (sans boucle en python pour ajouter des données).

    Détails d’un Article pour le client (vue pour saisir les commentaires) :

  2. Seule un client qui a acheté un article peut donner un avis dessus (ajouter des commentaires) ou mettre une note.

  3. Les commentaires sont liés à l’utilisateur (afficher le pseudo de chaque utilisateur devant chaque commentaire ainsi que l’identifiant du commentaire (id)). L’utilisateur peut ajouter et supprimer uniquement ses commentaires mais l’édition pour les modifier n’est pas obligatoire ; afficher le login ou pseudo de l’utilisateur avant le commentaire.

  4. L’utilisateur ne peut saisir que 3 commentaires (quota) par article (faire la vérification coté serveur, faire le calcul grâce à du SQL, un message flash ( très visible ) s’affiche lorsque ce quota est atteint)

  5. Afficher (dans la vue qui affiche le détail d’un article en cliquant dessus)

  6. l’utilisateur ne peut saisir que une note par article ou la modifier

  7. Afficher la note moyenne de l’article en tenant compte des autres notes (les notes des autres clients) ; faire le calcul grâce à du SQL.

  8. Afficher dans un ordre chronologique (temporel inverse) les commentaires des clients et insérer correctement les réponses de l’administrateur derrière un commentaire.


Interface Administrateur ( bask-office )

  1. (ADMIN) Liste des articles : l’administrateur peut voir si il y a de nouveaux commentaires sur un article dans la liste des articles et leurs nombres.
  2. (ADMIN) Liste des articles : afficher le nombre de commentaires total et le nombre de commentaires “validés”(lus) des clients.
  3. (ADMIN) Liste des commentaires : l’administrateur peut voir si il y a de nouveaux commentaires parmi tous les commentaires d’un article (l’administrateur peut distinguer les commentaires “validés” (lus sur fond jaune) et les commentaires “non”validés" (sur fond blanc) ; les réponses de l’administrateur (sur fond vert).
  4. (ADMIN) L’administrateur peut répondre à un commentaire.
  5. (ADMIN) liste des commentaires : l’administrateur peut supprimer certains avis (commentaires) (dans la liste des commentaires)
  6. (ADMIN) L’administrateur peut “valider” des commentaires (“valider” permet d’indiquer que les commentaires ont été lus par l’administrateur.
  7. (ADMIN) Affichage liste des commentaires : les commentaires sont correctement ordonnés :

Interface Administrateur, visualisation de données ( bask-office )

Rappel : la catégorie ou le type d’article sont les valeurs dans le filtre

  1. VISUALISATION de données sur les commentaires pour les catégories (ou type d’article) :
  2. VISUALISATION de données : interface plus évoluée
  3. Attention à la qualité du jeu de test pour cette partie.



Boutique du client ( front-office : boutique du client, vue pour faire les commandes )

  1. Afficher dans “mes coordonnées” un tableau d’adresse.

  2. Afficher le nombre d’adresses de l’utilisateur “valides” (utilisables) et le nombre d’adresses total de l’utilisateur

  3. L’utilisateur peut utiliser et créer au maximum 4 adresses “fonctionnelles” (valides), il peut les modifier (la vérification est faite coté serveur (en SQL) et un message “flash” s’affiche lorsque le maximum de 4 adresses valides est atteint)

  4. Gestion de l’adresse favorite

  5. le client peut consulter ses commandes avec les adresses de livraison et facturation.

  6. si l’adresse de facturation est la même que l’adresse de livraison, indiquer à l’utilisateur que ce sont les mêmes adresses

  7. Le client peut faire l’ajout/la modification/la suppression d’une adresse.

  8. Vérifier coté serveur (avec du SQL) que l’utilisateur connecté possède bien cette adresse lors de l’ajout/modification/suppression d’une adresse, indiquer par un message flash très visible orange le problème.

  9. Gestion avancée de la suppression/modification d’adresses : Conserver uniquement les adresses utilisées dans les commandes (factures) même si on modifie ou supprime l’une de ces adresses

  10. Vérifier que le code postal est composé de 5 chiffres côté serveur, afficher un message flash qui signale l’erreur si le code postal n’est pas composé de 5 chiffre lors de la création d’une adresse ; les données saisies sont ré-affichées dans le formulaire en cas d’erreur (faire la vérification coté serveur avec du python ou du SQL)

  11. Interface pour ajouter/modifier les informations de l’utilisateur (nom, login, email).

Interface Administrateur ( bask-office )

  1. (ADMIN) si l’administrateur consulte une commande, il peut voir l’adresse d’expédition et l’adresse de facturation



Interface Administrateur, visualisation de données ( bask-office )

Attention à la qualité du jeu de test pour cette partie.

  1. VISUALISATION de données avec les adresses (utiliser les 2 chiffres de gauches du code postal )
  2. VISUALISATION de données : interface plus évoluée
  3. Attention à la qualité du jeu de test pour cette partie.



Boutique du client ( front-office : boutique du client, vue pour faire les commandes )

Difficulté 1 : La liste d’envie est composée par les articles sélectionnés par le “💛”

  1. Ajout/suppression des articles dans la wishlist en cliquant sur “💛”

  2. Si l’article est commandé, il est retiré de cette liste (“wishlist”) dans la base de données.

  3. L’affichage des articles dans la liste d’envie est décroissant et dépend de l’ordre d’ajout (date et heure)

  4. Affichage du nombre d’article(s) dans la liste d’envie (“wishlist”) et du nombre d’article(s) dans l’historique d’un client. Utiliser du SQL pour faire ce calcul.

  5. Pouvoir avec l’interface fournie, monter/descendre les articles dans la “wishlist” dans cette liste

  6. Uniquement si on clique sur l’article, afficher en vert au dessus de la liste le nombre de client(s) autre que vous qui ont ajouté cet article dans leur wishlist sinon afficher “Vous êtes le seul à avoir cet article dans votre wishlist” ; Utiliser du SQL pour faire ce calcul.

  7. Uniquement si on clique sur l’article, afficher en bleu au dessus de la liste le nombre d’article(s) autre(s) que celui là que vous avez déjà dans votre wishlist et qui sont de la même catégorie que cet article (ou type d’article) ; Utiliser du SQL pour faire ce calcul.

rappel : la catégorie ou le type d’article sont les valeurs dans le filtre

Difficulté 2 : l’historique est défini par les articles consultés (on clique sur la photo de l’article)

  1. affichage de l’historique dans l’ordre de consultation
  2. L’historique n’est composé que de 6 articles différents maximum (on ne stocke que 6 articles au maximum dans la table “historique” de la base de données), les 6 derniers consultés. (faire ce calcul en SQL dans le contrôleur )
  3. Le nombre de consultations d’un article est stocké dans un numérique.
  4. Les articles des historiques sont retirés au bout de 1 mois.
  5. Pas de doublon dans l’historique

Interface Administrateur, visualisation de données ( bask-office )

  1. VISUALISATION de données sur les wishlist pour les catégories (ou types d’article) :
  2. VISUALISATION de données : interface plus évoluée
  3. Attention à la qualité du jeu de test pour cette partie.



Chaque étudiant doit réaliser une(des) requêtes sur les données de sa partie, et réaliser un graphique (dataviz) qui serait un support de décision, la qualité du jeu de test livré est prise en compte.


Livrable 3 (oral en TP):



Pour le dernier livrable, la date de rendu est prise en compte. Une petite partie de la note prend en compte que le travail est été fait quelques jours avant la deadline (date limite) et si la présentation a été effectué avant ou après la deadline (date limite)

oral anglais (voir avec Mme Couturier)

idée sur des coefficients des évaluations et livrables (approximatif) en 2022

annexes