{
  "nom": "ventes",
  "titre": "Ventes et rentabilite d une entreprise de commerce",
  "origine": "donnees synthetiques",
  "licence": "libre de reutilisation — aucune donnee personnelle reelle",
  "graine": 20261007,
  "script": "outils/donnees/ventes.py",
  "separateur": ";",
  "encodage": "UTF-8",
  "tables": {
    "ventes": {
      "granularite": "une ligne par ligne de vente (un produit, un client, une date)",
      "cle": "vente_id",
      "colonnes": {
        "vente_id": "identifiant de la ligne de vente — texte, unique",
        "date": "date de la vente — AAAA-MM-JJ, cle vers calendrier.date",
        "produit_id": "cle vers produits.produit_id",
        "client_id": "cle vers clients.client_id",
        "magasin_id": "cle vers magasins.magasin_id",
        "canal": "magasin | en ligne | telephone",
        "quantite": "nombre d unites vendues — entier strictement positif",
        "prix_unitaire": "prix catalogue applique, en euros",
        "remise_taux": "remise consentie, de 0 a 0,45 — proportion, pas pourcentage",
        "prix_unitaire_net": "prix_unitaire x (1 - remise_taux), arrondi au centime",
        "chiffre_affaires": "prix_unitaire_net x quantite, en euros",
        "cout_total": "cout_unitaire du produit x quantite, en euros"
      }
    },
    "produits": {
      "granularite": "une ligne par reference",
      "cle": "produit_id",
      "colonnes": {
        "produit_id": "identifiant de la reference",
        "libelle": "nom commercial",
        "famille": "famille de produits — dimension d analyse principale",
        "prix_catalogue": "prix de vente conseille, en euros",
        "cout_unitaire": "cout d achat unitaire, en euros",
        "date_lancement": "date de mise au catalogue"
      }
    },
    "clients": {
      "granularite": "une ligne par client",
      "cle": "client_id",
      "colonnes": {
        "client_id": "identifiant du client",
        "nom": "nom de famille — invente",
        "prenom": "prenom — invente",
        "segment": "Particulier | Professionnel | Collectivite",
        "region": "region de rattachement",
        "date_inscription": "date de creation du compte client"
      }
    },
    "magasins": {
      "granularite": "une ligne par point de vente",
      "cle": "magasin_id",
      "colonnes": {
        "magasin_id": "identifiant du magasin",
        "libelle": "nom du point de vente",
        "region": "region administrative",
        "type": "magasin | en ligne",
        "surface_m2": "surface en metres carres — VIDE pour la boutique en ligne"
      }
    },
    "calendrier": {
      "granularite": "une ligne par jour, sans trou",
      "cle": "date",
      "colonnes": {
        "date": "jour — AAAA-MM-JJ",
        "annee": "annee sur quatre chiffres",
        "trimestre": "T1 a T4",
        "mois_numero": "1 a 12",
        "mois_nom": "nom du mois en francais, sans accent",
        "annee_mois": "AAAA-MM, pour trier les mois dans l ordre",
        "jour_semaine": "1 (lundi) a 7 (dimanche)",
        "est_week_end": "1 pour samedi et dimanche, 0 sinon"
      }
    }
  },
  "relations": [
    "ventes.produit_id  -> produits.produit_id   (plusieurs a un)",
    "ventes.client_id   -> clients.client_id     (plusieurs a un)",
    "ventes.magasin_id  -> magasins.magasin_id   (plusieurs a un)",
    "ventes.date        -> calendrier.date       (plusieurs a un)"
  ],
  "limites": [
    "Aucun retour ni avoir dans la version propre : les retours apparaissent uniquement comme anomalie A07 de la version brute, sous forme de prix negatif.",
    "Le cout unitaire est fixe dans le temps : pas d inflation d achat, pas de remise fournisseur. Un exercice de marge historique le dira.",
    "Un client n est rattache qu a une region, et elle ne change jamais.",
    "Les quantites sont independantes du stock : ce jeu ne modelise aucune rupture. Le jeu « logistique » s en charge."
  ]
}