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 possible.
  7. Commande : Affichage du prix total des commandes, du nombre d’articles.
  8. Lors de l’affichage du détails d’une commande : affichage du nom de l’article, du nombre d’article, du prix unitaire et du prix total de ces articles 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étails 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éclinaison, 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é dans la liste déroulante si une autre déclinaison a déjà été sélectionnée]{.modif}
  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 resté identique)

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

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

  1. VISUALISATION de données sur les stocks pour l’administrateur

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 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é à 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 par articles (faire la vérification coté serveur, faire le calcul grâce à du SQL, un message flash clair s’affiche lorsque ce quota est atteint)

  5. afficher * le nombre de commentaire(s) de l’utilisateur * le nombre de commentaire(s) total pour l’article * le nombre de commentaire(s) total validé(s) * le nombre de commentaire(s) de l’utilisateur validé(s) => faire ce calcul en SQL dans le contrôleur pour toutes ces valeurs

  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. Quota de commentaire pour un article : Lors de l’ajout d’un commentaire calculer le nombre de commentaire, faire ce calcul en SQL dans le contrôleur puis afficher un message flash si ce quota est atteint très visible.]{.modif}

  9. 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 )

  10. (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.

  11. (ADMIN) Liste des articles : afficher le nombre de commentaires total et le nombre de commentaires “validés”(lus) des clients. ******

  12. (ADMIN) liste des commentaires : l’administrateur voir si il y a de nouveaux commentaires parmi tous les commentaires d’un article (l’administrateur peut distinguer les commentaires “valider” (lus) et non “valider” avec des couleurs de fond différentes) ; les réponses de l’administrateur ont aussi une couleur de fond différentes.

  13. (ADMIN) l’administrateur peut répondre à un commentaire

  14. [(ADMIN) La réponse de l’administrateur se trouve sous le commentaire du client : insérer correctement les réponses de l’administrateur derrière un commentaire

  15. (ADMIN) liste des commentaires : l’administrateur peut supprimer certains avis (commentaires) (dans la liste des commentaires)

  16. (ADMIN) l’administrateur peut “valider” des commentaires (“valider” permet d’indiquer que les commentaires ont été lus par l’administrateur

  17. (ADMIN) Affichage liste des commentaires : les commentaires sont correctement ordonnées : Afficher en premier les commentaires non “validés” (non lus) des clients dans un ordre chronologique temporel inverse puis les commentaires validés (lus) dans un ordre chronologique (temporel inverse). Les réponses de l’administrateur sont affichés à la suite d’un commentaire

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

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

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

  18. VISUALISATION de données sur les commentaires pour les catégories (ou type d’article) : * tableau avec le nombre de notes, la note moyenne et le nombre de commentaires dans chaque catégorie (ou type d’article) * graphique avec la note moyenne/catégorie d’article (ou type d’article) * graphique avec le nombre de commentaires(s) par catégorie (ou type d’article) * graphique avec le nombre de note(s) par catégorie (ou type d’article)

  19. VISUALISATION de données : interface plus évoluée * si on clique sur une catégorie (ou type d’article) ou on sélectionne une catégorie dans une liste déroulante * afficher dans la page * tableau avec le nombre de notes, la note moyenne et le nombre de commentaires uniquement pour chaque article de cette catégorie (ou type d’article) * graphique avec la note moyenne/article uniquement pour chaque article de cette catégorie (ou type d’article) * graphique avec le nombre de commentaires(s) par article uniquement pour chaque article de cette catégorie * graphique avec le nombre de note(s) par article uniquement pour chaque article de cette catégorie

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




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

  2. afficher le nombre d’adresses de l’utilisateur “valide” (utilisable) 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 et un message “flash” s’affiche lorsque le maximum de 4 adresses valides est atteint)

  4. Si l’utilisateur crée une adresse, cette adresse devient adresse “favorite” sinon c’est la dernière utilisée qui est “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 suppression/modification adresses : Conserver uniquement les adresses utilisées dans les commandes (factures) même si on modifie ou supprime l’une de ces adresses

  10. Proposer par défaut la dernière adresse utilisée comme adresse de livraison dans les listes déroulantes des adresses lors du passage d’une commande(l’adresse devient “favorite”).

  11. Si on supprime l’adresse “favorite”, l’adresse valide qui a la date de commande la plus récente qui devient “favorite”.

  12. Vérifier que le code postal est composé de 5 chiffres coté serveur, afficher un message flash qui signal l’erreur si le code postal n’est pas composé de 5 chiffre (faire la vérification coté serveur avec du python ou du SQL)

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

    Interface Administrateur ; ( bask-office )

  14. (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 sur adresses (utiliser les 2 chiffres de gauches du code postal )
  2. VISUALISATION de données : interface plus évoluée



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. Dans la liste d’envie (“wishlist”), un article ne peut pas être ajouté 2 fois, le client peut supprimer un article ou ajouter depuis cette liste l’article dans le panier.
  3. Si l’article est commandé il est retiré de cette liste (“wishlist”) dans la base de données.
  4. L’affichage des articles dans la liste d’envie est décroissant et dépend de l’ordre d’ajout (date et heure)
  5. Pouvoir avec l’interface fournie, monter/descendre les articles dans la “wishlist” dans cette liste
  6. en cliquant sur l’article, afficher en vert au dessus de la liste le nombre de personne qui ont ajouté cet article dans leur wishlist, le nombre d’article que vous avez déjà dans votre wishlist de cette catégorie (ou type d’article)

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 consultation 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
  6. en cliquant sur l’article de la liste de l’historique, afficher en vert au dessus le nom de l’article, combien de personnes ont cet article dans leur historique. Afficher le nombre de clic sur cet d’article depuis qu’il existe.

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

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

  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