Skip to content

Commit

Permalink
Merge pull request #21 from altazion/Ajout-Doc-UnifiedStock
Browse files Browse the repository at this point in the history
Ajout doc unified stock
  • Loading branch information
FlorianPrudence authored Dec 5, 2024
2 parents c4babb8 + e8cb9e6 commit 5919145
Show file tree
Hide file tree
Showing 20 changed files with 139 additions and 44 deletions.
4 changes: 3 additions & 1 deletion orchestrator/delivery-optimizer/casutilisation.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,6 @@ Le diagramme de séquence ci-dessous présente un exemple d’intégration typiq

![Diagramme de séquence cas d'utilisation module DO](img/DiagrammeSequenceDO.png)

De la même façon, si les données d’Articles et de StockOrigins sont régulièrement synchronisée via un import complet, il est possible de ne pas supprimer les commandes dans le module une fois qu’elles sont traitées. En effet, dans la mesure où les Articles et StockOrigins doivent uniquement contenir les commandes en cours, les commandes déjà traitées seront ainsi supprimées durant l’import.
De la même façon, les commandes peuvent être supprimées de plusieurs façon :
- Via l'utilisation des points API de Delivery Optimizer de suppression unitaire des commandes au fur et à mesure.
- Via le point API de synchronisation complète des commandes à déclencher à interval régulier.
10 changes: 10 additions & 0 deletions orchestrator/delivery-optimizer/commandes.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,16 @@ Le contenu de la commande se trouve dans le champ __details__. Il s'agit d'un ta

La méthode renvoie un booléen pour indiquer le succès de l'opération.

## Replacement de toutes les commandes

__PATCH : {tenantId}/orders__

Cette fonction reçoit un tableau d'objets de type __Order__ (en format JSON dans le body de la requête). Elle permet de remplacer __toutes__ les commandes contenues dans les __Articles__ et __StockOrigins__ par celles envoyées dans le body.

Un paramètre "isFull" peut-être passé dans la requête. Dans le cas d'une valeur à "true", la fonction va également supprimer __toutes__ les commandes précédemment enregistrées dans __l'intégralité__ des __Articles__ et __StockOrigins__.

__Attention :__ Cette méthode n'est à utiliser que si vous avez besoin de réinitialiser les commandes dans Delivery Optimizer. De plus, le passage du paramètre isFull à "true" peut entrainer des lenteurs importantes sur la base. Cette méthode est donc à utiliser avec précaution et en dehors des heures de traffic importants.

## Suppression d'une commande

__DELETE : {tenantId}/order/byid/{idCommande}__
Expand Down
20 changes: 14 additions & 6 deletions orchestrator/delivery-optimizer/cycledeviedonnees.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,24 +29,32 @@ __POST : {tenantId}/articles/importfull__

Ce point API permet l'import des articles dans la base via un tableau d'objets Article passé dans le body en format JSON.

__Ces points API sont utilisés par les sources d'approvisionnement d'Altazion pour envoyer les données calculés vers Delivery Optimizer.__
Ces points API sont utilisés par les sources d'approvisionnement d'Altazion pour envoyer les données calculées vers Delivery Optimizer.

Si vous utilisez Unified Stock les stocks (liste de __ArticleStock__) ne sont pas envoyées par les Sources d'Approvisionnement mais par le module de traitement des stocks plus tard dans le processus via le point API "Mise à jour des stocks dans les Articles" détaillé plus bas.

## Upsert des StockOrigins et des Articles dans le module

En complément des imports totaux qui nettoient la base avant d’insérer les données importées, il est possible de pousser des fichiers de mise à jour des Articles et StockOrigins. Ces points API servent à mettre à jour les éléments déjà en base et à ajouter ceux contenu dans le JSON qui ne s’y trouvaient pas auparavant (upsert).

Le produit Altazion OMS Unified Stock permettent d’automatiser la procédure lorsque des deltas de stocks sont reçus.

__PUT : {tenantId}/stock-origins__

Ce point API permet l’upsert des origines de stock dans la base via un tableau d'objets StockOrigin passé dans le body en format JSON.
Ce point API permet l’upsert des origines de stock dans la base via un tableau d'objets __StockOrigin__ passé dans le body en format JSON.

__PUT : {tenantId}/articles__

Ce point API permet l'upsert des articles dans la base via un tableau d'objets Article passé dans le body en format JSON.
Ce point API permet l'upsert des articles dans la base via un tableau d'objets __Article__ passé dans le body en format JSON.

Ces points API sont utilisés par les Sources d'Approvisionnement pour envoyer les disponibilités recalculées au long de la journée lorsque vous n'utilisez pas Unified Stock.

## Mise à jour des stocks dans les Articles

Ce point API permet de remplacer les stocks de plusieurs articles. Pour cela il est nécessaire de passer un dictionnaire contenant la référence de l'article en clef et sa liste d'__ArticleStock__ en valeur dans le body de la requête. Ce dictionnaire devra être formaté en JSON.

__PATCH : {tenantId}/articles/artstocks__

Le point est disponible dans la partie Articles du swagger :

![SwaggerUI du point API de remplacement des stocks](img/ArtStocksSwaggerUI.png)

## Ajout/Remplacement des commandes dans les Articles et les StockOrigins
Cette fonctionnalité API est utilisée par Unified Stock pour l'envoie des disponibilités recalculées en temps réel à Delivery Optimizer après la réception de stock mis à jour.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified orchestrator/delivery-optimizer/img/DOWelcomePage.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified orchestrator/delivery-optimizer/img/SwaggerUI.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 5 additions & 5 deletions orchestrator/delivery-optimizer/presentationmodule.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
# Présentation du module

## Généralités
Le module Delivery Optimizer (DO) intervient dans le cadre du commerce unifié et permet aux origines de stocks (magasins, fournisseurs, stock propre, etc..) participantes d'expédier des articles aux clients finaux depuis leurs stocks. Ceci permet de disposer de stocks totaux plus importants ainsi que des possibilités d'expéditions plus intéressantes.
Le module Delivery Optimizer (DO) intervient dans le cadre du commerce unifié et permet aux origines de stocks (magasins, fournisseurs, stock propre, etc..) participantes des différents canaux d'expédier des articles aux clients finaux depuis leurs stocks. Ceci permet de disposer de stocks totaux plus importants ainsi que des possibilités d'expéditions plus intéressantes.

De cette façon, Delivery Optimizer permet par exemple d'expédier une partie d'une commande depuis un entrepôt et une autre depuis un ou plusieurs magasins. Le but étant de minimiser le nombre d'envois tout en répondant à d'autres critères tel que minimiser la distance entre les expéditeurs et le client.

Pour ce faire, le module permet entre autres de :
- Gérer les articles et leur stock
- Gérer les origines de stocks
Pour chaque source d'approvisionnement, le module permet de :
- Gérer les articles et leurs disponibilités à la vente
- Gérer et paramétrer les origines de stocks
- Gérer les commandes et paniers
- Obtenir le détail des disponibilités d'un article ainsi que la quantité maximum commandable
- Obtenir la répartition optimale d'un panier/d'une commande à affecter aux différentes origines de stocks

Le module se présente sous forme d’un serveur API à déployer dans votre solution et à appeler par les autres composants de votre système d'information (site e-commerce, système de gestion de commande, etc..).
Le module se présente sous forme d’un serveur API à déployer dans votre solution et à appeler par les autres composants de votre système d'information (canaux de ventes, système de gestion de commande, etc..).

Il a vocation à s'intégrer dans le reste de la solution Altazion de cette façon :

Expand Down
10 changes: 5 additions & 5 deletions orchestrator/delivery-optimizer/raisonjuridiqueetconfig.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,16 @@ __PUT : {tenantId}/config__

![Point API Swagger de config du module DO](img/SwaggerSfsConfig.png)

Pour utiliser ce point, il est nécessaire de passer un objet de type SFSConfig dans le body de la requête.
Pour utiliser ce point, il est nécessaire de passer un objet de type __ConfigDo__ dans le body de la requête.

L'objet SFSConfig contient les champs suivants :
L'objet __ConfigDo__ contient les champs suivants :

- __cartLifeSpan__ (défaut : 15). Détermine la durée de validité en minutes d'un panier. Lorsqu'elle est dépassée, les stocks réservés par le panier ne sont plus compatibilisés par Delivery Optimizer. Tous les paniers n'ayant pas été mis à jour depuis depuis 2 fois la valeur __cartLifeSpan__ sont progressivement supprimés.
- __cartLifeSpan__ (défaut : 15). Détermine la durée de validité en minutes d'un panier. Lorsqu'elle est dépassée, les stocks réservés par le panier ne sont plus compatibilisés par Delivery Optimizer. Tous les paniers n'ayant pas été mis à jour depuis 2 fois la valeur __cartLifeSpan__ sont progressivement supprimés.
- __algoType__ (défaut : "PUSH"). Détermine le type d'algorithme utilisé par Delivery Optimizer. À ce jour, seul l'algorithme PUSH existe.
- __maxOrderable__ (défaut : "MINIMUM). Détermine la méthode de calcul de la quantité maximum de stock commandable pour un produit.
- __bigCartThreshold__ (défaut : 15). Détermine à partir de combien de lignes panier l'algorithme de répartition doit utiliser les précédents calculs de répartition afin d'accélérer le traitement du panier/de la commande.
- __maxShipments__ (défaut : illimité). Détermine le nombre maximum d'expéditions différentes pour une commande/un panier. Autrement dit, il s'agit du nombre maximum d'origines de stock différentes qui peuvent être solicitées pour le traitement d'une commande/un panier. Concrétement, il s'agit de la taille maximum du tableau __SFSResponse.splits__. Si ce nombre est dépassé, toutes les lignes du panier sont concidérées comme étant non expédiables et sont donc renvoyées dans le champ __SFSResponse.nonShippable__.
- __maxShipments__ (défaut : illimité). Détermine le nombre maximum d'expéditions différentes pour une commande/un panier. Autrement dit, il s'agit du nombre maximum d'origines de stock différentes qui peuvent être sollicitées pour le traitement d'une commande/un panier. Concrètement, il s'agit de la taille maximum du tableau __DoResponse.splits__. Si ce nombre est dépassé, toutes les lignes du panier sont concidérées comme étant non expédiables et sont donc renvoyées dans le champ __DoResponse.nonShippable__.

Comme pour tous les autres points API, vous pouvez retrouver la définition de l'objet en anglais dans le swagger du module :

![Detail de l'objet SFSConfig](img/DetailSfsConfig.png)
![Detail de l'objet DoConfig](img/DetailDoConfig.png)
71 changes: 60 additions & 11 deletions orchestrator/delivery-optimizer/reglesmetier.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,81 @@
# Règles métier Delivery Optimizer

## Activité des origines de stocks

### Définition

Chaque origine de stock peut être activé ou désactivé afin qu'elle participe ou non à l'expédition des commandes et au calcul de stock disponible à la vente grâce au champ __StockOrigin.IsActive__.

### Activation/Désactivation des origines de stocks

Dans le cas où vous utilisez les outils Altazion cette option est configurable depuis votre gestion commerciale.

Il est également possible d'activer/désactiver une ou plusieurs origines de stocks directement dans Delivery Optimizer via le point API suivant :

__PATCH {tenantId}/stock-origins/isactive/{isActive}__

Le point est disponible dans la partie StockOrigins du swagger :

![SwaggerUI du point API de modification de l'activité](img/IsActiveSwaggerUI.png)

Pour utiliser cette fonctionnalité, il est nécessaire de fournir un tableau formaté en JSON dans le body contenant les codes des origines de stock à modifier. Vous devrez aussi renseigner le booléen "isActive" indiquant d'activer les origines de stocks s'il est à "True", ou de les désactiver s'il est à "False".

## Notion de priorité

### Définition
Certaines origines de stocks sont plus indiquées que d'autres pour expédier des commandes. C'est notamment le cas d'entrepôts spécialisés ou de grands magasins. Il est ainsi possible de définir un indice de priorité pour chaque emplacement afin d'encourager les expéditions depuis ces derniers.

__Plus la priorité d'une origine de stocks est élevé, plus elle a de chance d'être sélectionnée pour expédier toute ou partie d'une commande.__

### Modification de la priorité des origines de stocks

Dans le cas où vous utilisez les outils Altazion cette option est configurable depuis votre gestion commerciale.

Il est également possible de modifier la priorité d'une ou plusieurs origines de stocks directement dans Delivery Optimizer via le point API suivant :

__PATCH {tenantId}/stock-origins/priority/{priority}__

Le point est disponible dans la partie StockOrigins du swagger :

![SwaggerUI du point API de modification de priorité](img/PrioritySwaggerUI.png)

Pour utiliser cette fonctionnalité, il est nécessaire de fournir un tableau formaté en JSON dans le body contenant les codes des origines de stock à modifier. Vous devrez aussi renseigner le paramètre "priority" indiquant la nouvelle priorité de ces origines de stocks.

## Notion de saturation ##

### Définition ###
Lorsqu'un StockOrigin dispose déjà de beaucoup de commandes à traiter il peut être saturé. Chaque StockOrigin dispose d'une capacité de traitement (__StockOrigin.MaxCapacity__) qui lorsqu'elle est dépassée ne permet plus à l'origine de stocks d'accepter de nouvelles commandes (OrderType.Cart, OrderType.Order) et entraine son exclusion de l'algorithme de répartition.
Lorsqu'un StockOrigin dispose déjà de beaucoup de commandes à traiter il peut être saturé. Chaque StockOrigin dispose d'une capacité maximum de traitement (__StockOrigin.MaxCapacity__) qui lorsqu'elle est dépassée ne permet plus à l'origine de stocks d'accepter de nouvelles commandes (OrderType.Cart, OrderType.Order) et entraine son exclusion de l'algorithme de répartition.

Les commandes et les paniers augmentent la saturation des StockOrigins de respectivement 5 et 1 point. Le nombre de PointsMax peut-être décidé en fonction de la nature du StockOrigin (magasin, fournisseur, entrepôt, etc..), ou encore sur d'autres critères telle que la taille ou la capacité logistique de traitement des commandes par exemple.
Les commandes et les paniers augmentent la saturation des StockOrigins de respectivement 5 et 1 point. Le nombre __MaxCapacity__ peut-être décidé en fonction de la nature du StockOrigin (magasin, fournisseur, entrepôt, etc..), ou encore sur d'autres critères telle que la taille ou la capacité logistique de traitement des commandes par exemple.

Dans le cas où vous utiliser les outils Altazion cette option est configurable depuis votre gestion commerciale.
La durée durant laquelle les __OrderType.Cart__ (paniers en cours) sont comptabilisés pour le calcul de la saturation est paramétrable via le champ __CartLifeSpan__ de l'objet __ConfigDo__ du tenant associé.

La durée durant laquelle les OrderType.Cart (paniers en cours) sont comptabilisés pour le calcul de la saturation est paramétrable via le champ __CartLifeSpan__ de l'objet __SFSConfig__ du tenant associé.

Les commande de type OrderType.ExternalOrder n'affectent pas la saturation.
Les commande de type __OrderType.ExternalOrder__ n'affectent pas la saturation.

Lorsque qu'une commande est traitée celle-ci est supprimée du StockOrigin et libère ainsi des capacités de traitement.

### Modification de la capacité maximum des origines de stocks

Dans le cas où vous utilisez les outils Altazion cette option est configurable depuis votre gestion commerciale.

Il est également possible de modifier la capacité maximum d'une ou plusieurs origines de stocks directement dans Delivery Optimizer via le point API suivant :

__PATCH {tenantId}/stock-origins/maxcapacity/{maxcapacity}__

Le point est disponible dans la partie StockOrigins du swagger :

![SwaggerUI du point API de modification de capacité maximum](img/CapacitySwaggerUI.png)

Pour utiliser cette fonctionnalité, il est nécessaire de fournir un tableau formaté en JSON dans le body contenant les codes des origines de stock à modifier. Vous devrez aussi renseigner le paramètre "maxcapacity" indiquant la nouvelle capacité maximum de ces origines de stocks.

### Points API de vérification de saturation ###

Ces points API sont utiles si vous remarquez qu'un ou plusieurs StockOrigins ne peuvent plus prendre de commandes ou pour obtenir des informations générales sur l'état de leurs activités.

#### Vérification de la saturation d'un StockOrigin ####
Il est possible de vérifier la saturation d'un StockOrigin via le point API suivant :

__GET : {tenantId}/stock_origins/code/{code}/saturation__
__GET : {tenantId}/stock-origins/code/{code}/saturation__

Le point est disponible dans la partie StockOrigins du swagger :

Expand All @@ -42,9 +91,9 @@ L'objet __StockOriginSaturationInfo__ obtenu en réponse contient des données s

#### Vérification de la saturation de tous les StockOrigins ####

Delivery Optimizer dispose d'un point API permettant d'obtenir un diagnostique complet de la saturation de l'ensemble de vos StockOrigins. Ce point est par exemple très utile lors de périodes de fortes activités. Il peut vous permettre d'anticiper l'éventuel saturation globale de vos StockOrigins et d'ainsi éviter la paralysie de votre activité.
Delivery Optimizer dispose d'un point API permettant d'obtenir un diagnostic complet de la saturation de l'ensemble de vos StockOrigins. Ce point est par exemple très utile lors de périodes de fortes activités. Il peut vous permettre d'anticiper l'éventuel saturation globale de vos StockOrigins et d'ainsi éviter la paralysie de votre activité.

__GET : {tenantId}/stock_origins/saturation__
__GET : {tenantId}/stock-origins/saturation__

Le point est disponible dans la partie StockOrigins du swagger :

Expand All @@ -59,5 +108,5 @@ Il contient les champs suivants :
- __notSaturated__ : Le nombre de StocksOrigins non saturés.
- __total__ : Le nombre total de StocksOrigins.
- __globalSaturationRate__ : Le pourcentage de StockOrigins saturés.
- __saturatedStockOrigins__ : Une listes contenant le code des StocksOrigins saturés.
- __details__ : Un tableau de __StockOriginSaturationInfo__ contenant l'état de saturation de tous les StockOrigins en commençant par les StockOrigins saturés.
- __saturatedStockOrigins__ : Une liste contenant le code des StocksOrigins saturés.
- __details__ : Un tableau de __StockOriginSaturationInfo__ contenant l'état de saturation de tous les StockOrigins en commençant par les StockOrigins saturés.
4 changes: 2 additions & 2 deletions orchestrator/delivery-optimizer/securisationmodule.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ Le serveur API repose sur une authentification BASIC (user:password) à passer d

## Notion de droits utilisateurs
En fonction de son droit, un utilisateur du module DO ne pourra pas accéder aux mêmes fonctionnalités du module. Actuellement on compte deux droits :
- OMS, qui donne l’accès complet aux points API du module. Comme son nom l’indique, ce droit a vocation à être utilisé par votre OMS.
- COMMERCE, qui donne l’accès aux disponibilités d’un article ainsi qu’à la gestion des paniers. Ce droit a vocation à être utilisé par votre site e-commerce.
- __OMS__, qui donne l’accès complet aux points API du module. Comme son nom l’indique, ce droit a vocation à être utilisé par votre OMS.
- __COMMERCE__, qui donne l’accès aux disponibilités d’un article ainsi qu’à la gestion des paniers. Ce droit a vocation à être utilisé par votre site e-commerce.
Binary file added orchestrator/unified-stock/img/DisposCalcul.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 5919145

Please sign in to comment.