Aller au contenu

Cave - Collection de vins

La rubrique Cave permet de gérer une collection de vins dégustés, avec tous les domaines de référence associés.

Domaines

Domaines de référence

Domaine Description Chemin API Page web
Appellation Appellations vinicoles (Champagne, Bordeaux, Bourgogne…) /appellation /appellation/list
Couleur Couleurs de vin (Blanc, Rouge, Rosé) /couleur /couleur/list
Type de vin Types de vin (Brut, Blanc de blancs, Rosé…) /type-vin /type-vin/list
Cépage Cépages (Chardonnay, Pinot noir, Pinot meunier…) /cepage /cepage/list
Contenant Contenants avec volume en cl (Bouteille, Magnum…) /contenant /contenant/list
Circonstance Circonstances de dégustation (Anniversaire, Mariage…) /circonstance /circonstance/list
Maison Maisons vinicoles avec site web /maison /maison/list
Nom de vin Noms de vins associés à une maison /vin-nom /vin-nom/list
Tag vin Tags libres pour les vins /vin-tag /vin-tag/list

Domaine principal

Domaine Description Chemin API Page web
Vin Fiche complète d'un vin dégusté /vin /vin/list

Fonctionnalités

Chaque domaine dispose de :

  • CRUD : création, lecture, modification, suppression (unitaire et globale)
  • Recherche paginée : GET /{domain}/search?page=0&size=10&q=
  • Export JSON : GET /{domain}/export
  • Import JSON : POST /{domain}/import
  • Export CSV : GET /{domain}/export/csv
  • Import CSV : POST /{domain}/import/csv
  • Impression : GET /{domain}/print?mode=filtered|all
  • Interface web : liste, fiche, création, modification

Fiche Vin

La fiche d'un vin contient :

  • Référence : appellation, couleur, type de vin, maison, nom du vin, contenant
  • Géographie : année, commune, région
  • Cépages : liste des cépages avec pourcentage d'assemblage
  • Circonstances : liste des circonstances de dégustation
  • Tags : tags libres
  • Dégustation : commentaires, accords mets & vins
  • Photos : stockage de photos associées

Contrat API Import / Export

Domaine Export JSON Import JSON Export CSV Import CSV
Appellation GET /appellation/export POST /appellation/import GET /appellation/export/csv POST /appellation/import/csv
Couleur GET /couleur/export POST /couleur/import GET /couleur/export/csv POST /couleur/import/csv
Type de vin GET /type-vin/export POST /type-vin/import GET /type-vin/export/csv POST /type-vin/import/csv
Cépage GET /cepage/export POST /cepage/import GET /cepage/export/csv POST /cepage/import/csv
Contenant GET /contenant/export POST /contenant/import GET /contenant/export/csv POST /contenant/import/csv
Circonstance GET /circonstance/export POST /circonstance/import GET /circonstance/export/csv POST /circonstance/import/csv
Maison GET /maison/export POST /maison/import GET /maison/export/csv POST /maison/import/csv
Nom de vin GET /vin-nom/export POST /vin-nom/import GET /vin-nom/export/csv POST /vin-nom/import/csv
Tag vin GET /vin-tag/export POST /vin-tag/import GET /vin-tag/export/csv POST /vin-tag/import/csv
Vin GET /vin/export POST /vin/import — —

Architecture

Backend (data-server)

data-server/src/main/java/fr/tiogars/data/cave/
├── appellation/   # Appellations vinicoles
├── cepage/        # Cépages
├── circonstance/  # Circonstances de dégustation
├── contenant/     # Contenants
├── couleur/       # Couleurs de vin
├── maison/        # Maisons vinicoles
├── typevin/       # Types de vin
├── vin/           # Vins dégustés (domaine principal)
├── vinnom/        # Noms de vins
└── vintag/        # Tags de vins

Chaque sous-domaine suit le même pattern : - controllers/ — contrôleurs REST (un par opération) - entities/ — entités JPA - forms/ — formulaires de création/import - menu/ — contribution au menu (rubrique Cave) - models/ — modèles de réponse (DTOs) - repositories/ — repositories Spring Data JPA - services/ — services métier (un par opération)

Gateway (data-gateway)

Les routes Cave sont exposées via GatewayRoutesConfiguration : /appellation, /couleur, /circonstance, /contenant, /type-vin, /cepage, /maison, /vin-nom, /vin-tag, /vin

Frontend (data-web)

data-web/src/
├── services/
│   ├── appellationApi.ts
│   ├── cepageApi.ts
│   ├── circonstanceApi.ts
│   ├── contenantApi.ts
│   ├── couleurApi.ts
│   ├── maisonApi.ts
│   ├── typeVinApi.ts
│   ├── vinApi.ts
│   ├── vinNomApi.ts
│   └── vinTagApi.ts
└── pages/
    ├── appellation/    # List, Create, Detail, Edit
    ├── cepage/
    ├── circonstance/
    ├── contenant/
    ├── couleur/
    ├── maison/
    ├── typeVin/
    ├── vin/
    ├── vinNom/
    └── vinTag/

Tests

Des tests d'intégration sont disponibles pour : - AppellationApiIntegrationTest - ContenantApiIntegrationTest - MaisonApiIntegrationTest - VinApiIntegrationTest