Table of Contents

Projet de boutique en ligne pour JB

Principe

Les utilisateurs se voient crédités d'un nombre donné de points qu'ils achètent au préalable. Des quantités de produits sont mises à disposition. Les utilisateurs “achètent” des produits avec leur points en composant un panier, des paniers de base peuvent être imposés.

Modèle économique

Auto-renouvellement ou non ?

Livraison

Réduction de fidélité

Un pourcentage fixe paramétrable. !!!!Sur quel critère ? C'est toi qui marque les gens comme “fidèles” ?!!!!

Contexte technique / prérequis / limitations

Contexte technique

Elements arrêtés

Réflexions

layout.svg

Opérations externes

Cahier des charges

On distingue plusieurs grandes fonctionnalitées :

Inscription et authentification des utilisateurs

Les inscriptions doivent être confirmées et/ou validées.

La confirmation peut se faire par un challenge email, avec un lien de confirmation cliquable.

La validation se fait par acceptation de l'inscription depuis l'espace admin par la suite (opt-out).

La personne rentre ses infos. Un challenge email lui est envoyé. Les demandes sont listées avec acceptation/rejet (auto au bout de N jours) et liste de lieux de distrib proposés (plus opt d'en ajouter). Un mail est envoyé avec acceptation et lien vers profil.

L'authentification peut se faire par une classique paire email/mot de passe mais la solidité du mot de passe et du transport doivent être éprouvées :

Gestion des produits (admin)

Ajouts / suppression de produits. Les produits sont définis comme suit :

Gestion des paniers de base (admin)

Composition sur le même modèle que les paniers clients. Possibilité de marquer un panier comme actif.

Visualisation du compte client (CNIL)

Modification des infos, consultation du solde de points avec visu de nb de paniers ok et jusqu’à quand.

Composition du panier et "paiement"

Vue “live” du solde restant et des disponibilités produit, avec alerte si un produit passe en rupture au cours de la composition.

Validation de la commande en 2 étapes (CNIL) avec champ pour un petit mot.

Impressions des étiquettes / gestion des livraisons (admin)

Edition d'un pdf pour des grilles d'étiquettes définies (taille de grille) avec infos de livraison.

Marquage des livraisons comme effectuées.

Statistiques

Quantitées, rentrées d'argent … Par semaines / mois / an ?

Technique

Structure BDD

Table des utilisateurs

Table : users

Champ Type Relation Description
user_id USint many carts.user_id
many vouchers.user_id
No utilisateur
user_name varchar(64) Nom
user_email varchar(128)
user_pwh varchar(40) Hash mot de passe avec 2 salt
user_address Text
user_zipcode varchar(5) Code postal
user_town varchar(32) Ville
user_telephones varchar(43) Séparés par des virgules, max 4

Table des lots de points

Table : vouchers

Champ Type Relation Description
voucher_id UMint No de lot de points
user_id USint one users.user_id No utilisateur
voucher_points USint Nombre de points dans le lot
voucher_remaining_points USint
voucher_expires DateTime Date d'expiration

Table des produits

Table : products

Champ Type Relation Description
product_id USint many carts_products.product_id
many basecarts_products.product_id
No produit
product_name varchar(32) Nom produit
product_points USint Cout
product_saleunit varchar(32) UDV
product_minimum_quantity USint Contraintes sur
product_maximum_quantity USint les paniers
product_description Text

Table : products_stocks

Champ Type Relation Description
product_stock_id UMint No lot produit
product_id USint one products.product_id No produit
user_id USint one user.user_id No producteur
product_stock_quantity UMint Quantité
product_stock_remaining_quantity UMint

Une photo pourrais être attachée en utilisant le product_id.

Tables des paniers de base

Table : basecarts

Champ Type Relation Description
basecart_id UTint many basecarts_products.basecart_id No pannier
basecart_name varchar(32) Nom
basecart_enabled UTint Panier actif
basecart_default UTint Panier par défaut

Table : basecarts_products

Champ Type Relation Description
basecart_id UTint one basecarts.basecart_id No pannier de base
product_id USint one products.product_id No produit
basecarts_products_quantity USint Quantité

Tables des panniers

Table : carts

Champ Type Relation Description
cart_id UMint many carts_products.cart_id No pannier
user_id USint one users.user_id No utilisateur
cart_status Enum(current, submitted, handled, dispatched) Satut du pannier :
current : pannier en cours de composition
submitted : commande passée
handled : préparé
dispatched : distribué

Table : carts_products

Champ Type Relation Description
cart_id UMint one carts.cart_id No pannier
product_id USint one products.product_id No produit
cart_product_quantity USint Quantité