Files
arthur 7496aafe64 lint(limagrain): corrections completes Phase 1+2
- Bloquants: mermaid 03-picking/_index reconstitue (archive 11-05), 13 liens vers pages squelette retires, 2 liens recibles (anoxie, application-dictionary)
- Conventions: 910 em dashes -> tirets simples, 145 checklists -> puces question, 13 questions resolues barrees
- Liens: 9 ancres reparees (slugs GitHub)
- Delta: 12 standard_ref remappes, blocs Standard EasyWMS + sections References ajoutes, front matter complete
- Glossaire: 15 termes standard deplaces en section rappel avec renvoi
- Rapport: limagrain/_lint_report.md (Phase 1 + Phase 2 + re-scan final)
- Inclut les pages des sessions precedentes non commitees + CLAUDE.md et consume.log en l'etat
2026-07-20 12:56:42 +02:00

198 lines
8.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Configuration Galileo - Limagrain"
tags: [stockage, galileo, TMS, architecture, IT, filmage, PIE]
status: draft
standard_ref: architecture/galileo-integration.md
jira_refs: [LIM-115]
confluence_refs: []
sources: [FR-SW-04-07_LIMAGRAIN_Functional_Analysis_V1.5.docx, "Jira LIM-115 (lecture directe 2026-07-20)"]
last_updated: 2026-07-20
author: Arthur
---
# Configuration Galileo - Limagrain
> **Résumé** : architecture logicielle IT de l'installation Limagrain et
> spécificités de la configuration Galileo (TMS).
> **Standard EasyWMS** : → voir [GALILEO Integration](../../architecture/galileo-integration.md),
> [System Architecture](../../architecture/overview.md)
> Ce qui suit documente les **spécificités Limagrain** par rapport au standard.
## Contexte projet
EasyWMS gère l'entrepôt automatique Limagrain avec une base Oracle. Le TMS
Galileo contrôle les 4 transstockeurs, les convoyeurs, navettes et stations
PIE. Les AGV sont gérés par un fournisseur tiers (non Galileo).
## Architecture logicielle
```mermaid
graph TD
SAP[SAP EWM] -->|XML / Webservice| GNA[EasyWMS GNA]
GNA --> EWMS[EasyWMS Serveur]
EWMS --> BBDD[(Oracle DB)]
EWMS --> GW[EasyWMS Gateway]
GW -->|TCP 3000| GAL[Galileo TMS]
GAL --> TK[Transstockeurs x4]
GAL --> CONV[Convoyeurs]
GAL --> NAV[Navettes]
GAL --> PIE[Stations PIE x3]
EWMS --> LP[Label Printer Service]
EWMS --> WEB[Application Web EasyWMS]
EWMS --> PC[Application PC EasyWMS]
WEB --> TRF[Terminaux RF]
AGV[AGV - Fournisseur tiers] -.->|Interface séparée| EWMS
```
### Composants serveur EasyWMS
| Composant | Rôle |
|-----------|------|
| Application serveur EasyWMS | Services de logique et gestion |
| Oracle DB | Base de données |
| EasyWMS GNA | Communication ERP (SAP) via XML/Webservice |
| EasyWMS Gateway | Communication Galileo (protocole frames TCP) |
| EasyWMS Label Printer | Impression étiquettes et documents |
### Communication ERP
- **Protocole** : XML + Webservice
- **ERP** : SAP EWM
- **Direction** : bidirectionnelle (voir [Messages ERP](../06-erp-interface/messages-reference.md))
## Stations PIE - Configuration spécifique
3 stations PIE installées :
| Station | Côté | Usage principal |
|---------|------|----------------|
| PIE_01 | Quais (production) | Réception production directe |
| PIE_02 | Postes de travail | Réception ext./retours après traitement |
| PIE_03 | Postes de travail | Idem PIE_02 |
### Mode d'insertion PIE
- **Mode normal** (known containers) : rejet si RFID inconnue
- [CUSTOM] Pas de message ASO au passage PIE
- [CUSTOM] Vérification poids avec tolérances par type article
- [CUSTOM] Mise à jour du « Poids de l'unité » du conteneur à chaque passage
### Contrôle au PIE
| Contrôle | Valeur limite |
|----------|---------------|
| Dimensions max | 1300 × 1100 × 1900 mm |
| Poids max | 1250 kg |
| État palette bois | Correct (visuel Galileo) |
| Lecture RFID | Obligatoire - doit être connue (ASN) |
## Flux physiques dans l'entrepôt
Les flux sont majoritairement réalisés par des **AGV** (fournisseur tiers).
EasyWMS communique les points de prise et de dépose ; le sens de prise/dépose
est géré par le fournisseur AGV.
Deux entrées dans l'ASRS :
| Entrée | Côté | Usage |
|--------|------|-------|
| Entrée production | Quais (PIE_01) | Palettes production, palettes vides |
| Entrée postes de travail | Postes (PIE_02/03) | Palettes après traitement en poste |
> En cas de blocage long terme sur une entrée, un bouton permet de
> rediriger les flux vers l'autre entrée.
## Transmission du programme de filmage à la filmeuse (LIM-115)
> **Statut (LIM-115)** : Ouvert. Cette tâche **transmet** le programme de
> filmage à Galileo ; elle ne le **produit** pas (choix opérateur au poste,
> stocké dans `CstAtt05`, voir LIM-67).
**Objectif** : quand une palette quitte un poste d'identification (PIE) pour
entrer dans l'ASRS, le WMS transmet automatiquement à Galileo le programme de
filmage choisi par l'opérateur, sans action supplémentaire. Même principe que
l'étiqueteuse automatique (custom data, pas de changement de route - voir
[Flux expédition - Communication Galileo](../04-outbound/flux-expedition.md#communication-galileo-lim-111)).
### Chaîne fonctionnelle
L'opérateur choisit le programme au poste (action « Terminer » en réception,
ou avant évacuation en picking) → valeur dans `CstAtt05` → tâche d'évacuation
AGV vers la table d'entrée → passage **filmeuse** puis PIE → stockage ASRS. La
règle « on ne filme que si le PIE valide la palette » est **structurellement**
satisfaite : un mouvement de source PIE vers la table d'entrée (et non vers le
poumon de rejet) n'existe que si le PIE a dit OK.
### Mécanisme
| Étape | Détail |
|-------|--------|
| Abonnement | Subscription custom sur l'event **`MovementCreated`** (modèle des `Galileo_*EventHandler_PR`), appelant un WF qui gère le CstData. Handler **léger** (event fréquent). |
| Filtre source | Récupérer la station **source** du mouvement (StationType + StationNumber) ; la comparer au paramètre des PIE concernés. Si absente → sortie immédiate. |
| Lecture programme | Depuis le mouvement → remonter au **support (Container)** → lire `CstAtt05`. Si vide ou = code « pas de filmage » (`0`) → forcer CstData à `0`. Si **destination = rejet** (type de tâche) → forcer CstData à `0`. |
| Écriture CustomData | Écrire dans le **CustomData de la tâche** parente. **Idempotent** (une tâche peut générer plusieurs mouvements). Pas de collision avec l'étiqueteuse : c'est un **type de tâche différent** (une même tâche n'est jamais à la fois filmage et étiquetage). |
| Transmission Galileo | Aucune commande spécifique : Galileo lit le CustomData à la transmission du mouvement (`GalileoMovTrackingCreateCommand`, transition Generated → In progress) et pilote la filmeuse. |
Séquence : Easy crée le mouvement en `Generated` → Galileo fait une recherche
d'ordre → Easy répond via `GalileoMovTrackingCreateCommand` (infos mouvement +
tâche liée) → le mouvement passe en `Running`.
### Périmètre
- **Stations déclenchantes** : **PIE_02**, définies dans un **paramètre** (pas
de code en dur) pour absorber une évolution de topologie.
- **Flux couverts** : **tous les flux entrant vers l'ASRS** via un poste
d'identification zone travail (réception extérieure/intersite, retour picking
vers ASRS, recertification, etc.). Mécanisme **générique** : teste uniquement
la station source + la présence d'un programme sur le support.
- **Hors périmètre** : PIE_01 (entrée production, non filmée), PIE_03 (pas de
filmeuse après ce PIE), la pose de `CstAtt05` (LIM-67) et la mécanique
physique de la filmeuse (Galileo/TMS).
> ⚠️ Réconciliation : le tableau des stations PIE ci-dessus indique
> « PIE_03 = idem PIE_02 ». Pour le **filmage**, LIM-115 exclut PIE_03 (pas de
> filmeuse en aval). L'identité PIE_02/PIE_03 vaut pour le **mode d'insertion**,
> pas pour la filmeuse.
## Rétention des données
| Entité | Durée standard | Souhait Limagrain |
|--------|----------------|-------------------|
| Transactions | 6 mois | 2 ans |
| Movements | 6 mois | 2 ans |
| Outbound Orders | 1 an | 2 ans |
| Inbound Orders | 1 an | 2 ans |
| Tasks | 1 an | 2 ans |
| Stock adjustments | 1 an | 2 ans |
> ⚠️ Mecalux doit étudier l'impact de la rétention 2 ans sur les prérequis
> serveurs pour éviter saturation DB et lenteurs.
## Points d'attention
⚠️ Les interfaces AGV sont définies dans un document annexe séparé et
peuvent impacter les flux fonctionnels.
⚠️ La banderoleuse (filmeuse) est située avant le PIE côté postes de
travail - un contrôle capacité filmeuse est fait en amont du PIE.
## Questions ouvertes
- ❓ Impact rétention 2 ans sur les performances Oracle (@Nicolas)
- ❓ Fournisseur AGV définitif et protocole d'interface (@Théo)
## Historique des modifications
| Date | Auteur | Modification |
|------|--------|--------------|
| 2026-05-05 | Arthur | Création initiale depuis AF V1.5 |
| 2026-07-20 | Arthur | LIM-115 (lecture directe, Ouvert) : nouvelle section « Transmission du programme de filmage à la filmeuse » (subscription MovementCreated, filtre station source PIE_02 via paramètre, lecture CstAtt05, force CstData=0 si vide/pas de filmage/destination rejet, écriture idempotente CustomData tâche, lecture Galileo via GalileoMovTrackingCreateCommand ; périmètre tous flux entrant ASRS via PIE_02, hors PIE_01/PIE_03) + caveat réconciliation PIE_03 (pas de filmeuse) ; front matter jira_refs/sources/tags/last_updated |
## Références
| Source | Type | Date |
|--------|------|------|
| FR-SW-04-07_LIMAGRAIN_Functional_Analysis_V1.5 | Analyse fonctionnelle | 28/11/2025 |
| [LIM-115](https://easywmsfrance.atlassian.net/browse/LIM-115) | Ticket Jira (transmission du programme de filmage à Galileo/filmeuse) | 2026 |