lumnik. / scénarios Tous les scénarios · English

Audit des durées de statut des commandes

Objectif Savoir combien de temps chaque commande reste dans chaque statut, et lesquelles ne bougent plus.

L'ERP ne garde que le statut du jour: hier En cours, aujourd'hui Livrée. Rien sur l'attente entre les deux. L'ERP ne peut pas être modifié.

orders-night1.csv
order_id;customer;agency;status
C-01;CLI-003;Lyon;Saisie
C-02;CLI-004;Grenoble;SAI
C-03;CLI-005;Valence;En cours
C-04;CLI-006;Lyon;EC
C-05;CLI-007;Grenoble;encours
C-06;CLI-008;Valence;EN COURS
C-07;CLI-009;Lyon;Livrée
C-08;CLI-010;Grenoble;EN ATT
C-09;CLI-011;Valence;EN ATT
C-10;CLI-012;Lyon;Saisie
C-11;CLI-013;Grenoble;EC
C-12;CLI-014;Valence;Annulée
manifests/20-order-watch.yaml
apiVersion: apps.lumnik.io/v1kind: Workflowmetadata:  name: scenario-order-sleep-dspec:  scope: order-desk  provenance: declared  on:    table: connector.t_scenario_sleep_orders_d    column: status    key: order_id  dormancy:    after: 25m  states:    - code: SAISIE      label: "Saisie"      aliases: ["SAI"]      initial: true    - code: EN_COURS      label: "En cours"      aliases: ["En cours", "encours", "EC"]    - code: LIVREE      label: "Livrée"      aliases: ["Livrée", "Livré", "LIV"]      terminal: true    - code: ANNULEE      label: "Annulée"      aliases: ["Annulée", "ANNUL"]      terminal: true
orders-night2.csv
order_id;customer;agency;status
C-01;CLI-003;Lyon;En cours
C-02;CLI-004;Grenoble;SAI
C-03;CLI-005;Valence;Livrée
C-04;CLI-006;Lyon;LIV
C-05;CLI-007;Grenoble;encours
C-06;CLI-008;Valence;EN COURS
C-07;CLI-009;Lyon;Livrée
C-08;CLI-010;Grenoble;EN ATT
C-09;CLI-011;Valence;EN ATT
C-10;CLI-012;Lyon;EC
C-11;CLI-013;Grenoble;EC
C-12;CLI-014;Valence;Annulée
orders-night3.csv
order_id;customer;agency;status
C-01;CLI-003;Lyon;Livrée
C-02;CLI-004;Grenoble;ANNUL
C-03;CLI-005;Valence;Livrée
C-04;CLI-006;Lyon;LIV
C-05;CLI-007;Grenoble;Livré
C-06;CLI-008;Valence;EN COURS
C-07;CLI-009;Lyon;Livrée
C-08;CLI-010;Grenoble;EN ATT
C-09;CLI-011;Valence;EN ATT
C-10;CLI-012;Lyon;EC
C-11;CLI-013;Grenoble;EC
C-12;CLI-014;Valence;Annulée
$ lm observations list --workflow scenario-order-sleep-e
WORKFLOW                DOC   STATE     SINCE             ALERTED
scenario-order-sleep-e  C-06  EN_COURS  2026-10-28 21:31  2026-10-28 22:01
scenario-order-sleep-e  C-07  LIVREE    2026-10-28 21:31  
scenario-order-sleep-e  C-08  EN ATT    2026-10-28 21:31  2026-10-28 22:01
scenario-order-sleep-e  C-09  EN ATT    2026-10-28 21:31  2026-10-28 22:01
scenario-order-sleep-e  C-11  EN_COURS  2026-10-28 21:31  2026-10-28 22:01
scenario-order-sleep-e  C-12  ANNULEE   2026-10-28 21:31  
scenario-order-sleep-e  C-03  LIVREE    2026-10-28 21:46  
scenario-order-sleep-e  C-04  LIVREE    2026-10-28 21:46  
scenario-order-sleep-e  C-10  EN_COURS  2026-10-28 21:46  
scenario-order-sleep-e  C-01  LIVREE    2026-10-28 22:01  
scenario-order-sleep-e  C-02  ANNULEE   2026-10-28 22:01  
scenario-order-sleep-e  C-05  LIVREE    2026-10-28 22:01  

$ lm inbox --process workflow:scenario-order-sleep-e
ID     WHEN      PROCESS                          MESSAGE                                                                                                                               ENTITY_KEY
20332  just now  workflow:scenario-order-sleep-e  C-11: observed unmoved in "EN_COURS" since 2026-10-28 (first observed 2026-10-28) — declared threshold 25m in scenario-order-sleep-e  C-11
20331  just now  workflow:scenario-order-sleep-e  C-09: observed unmoved in "EN ATT" since 2026-10-28 (first observed 2026-10-28) — declared threshold 25m in scenario-order-sleep-e    C-09
20330  just now  workflow:scenario-order-sleep-e  C-08: observed unmoved in "EN ATT" since 2026-10-28 (first observed 2026-10-28) — declared threshold 25m in scenario-order-sleep-e    C-08
20329  just now  workflow:scenario-order-sleep-e  C-06: observed unmoved in "EN_COURS" since 2026-10-28 (first observed 2026-10-28) — declared threshold 25m in scenario-order-sleep-e  C-06
manifests/30-order-watch-en-att.yaml
apiVersion: apps.lumnik.io/v1kind: Workflowmetadata:  name: scenario-order-sleep-dspec:  scope: order-desk  provenance: declared  on:    table: connector.t_scenario_sleep_orders_d    column: status    key: order_id  dormancy:    after: 25m  states:    - code: SAISIE      label: "Saisie"      aliases: ["SAI"]      initial: true    - code: EN_COURS      label: "En cours"      aliases: ["En cours", "encours", "EC", "EN ATT"]    - code: LIVREE      label: "Livrée"      aliases: ["Livrée", "Livré", "LIV"]      terminal: true    - code: ANNULEE      label: "Annulée"      aliases: ["Annulée", "ANNUL"]      terminal: true
$ lm observations transitions --workflow scenario-order-sleep-e
WORKFLOW                DOC   FROM      TO        ENTERED           OBSERVED          IN_FROM_S
scenario-order-sleep-e  C-05  EN_COURS  LIVREE    2026-10-28 21:31  2026-10-28 22:01  1799
scenario-order-sleep-e  C-02  SAISIE    ANNULEE   2026-10-28 21:31  2026-10-28 22:01  1799
scenario-order-sleep-e  C-01  EN_COURS  LIVREE    2026-10-28 21:46  2026-10-28 22:01  899
scenario-order-sleep-e  C-10  SAISIE    EN_COURS  2026-10-28 21:31  2026-10-28 21:46  899
scenario-order-sleep-e  C-04  EN_COURS  LIVREE    2026-10-28 21:31  2026-10-28 21:46  899
scenario-order-sleep-e  C-03  EN_COURS  LIVREE    2026-10-28 21:31  2026-10-28 21:46  899
scenario-order-sleep-e  C-01  SAISIE    EN_COURS  2026-10-28 21:31  2026-10-28 21:46  899

Limites

  • Mouvements vus au rythme du balayage: une durée est un multiple du passage, et deux mouvements entre deux passages n'en font qu'un.
  • Pour le premier mouvement d'une commande, le temps compte depuis sa première observation: une borne basse.
  • Le rejeu comprime les nuits en passages de 15 minutes. Les durées sont des minutes.
  • Données synthétiques.

Commandes · ERP

Une commande traîne. Dans quel état?

L'ERP ne garde que le statut du jour.

Hier En cours, aujourd'hui Livrée. Rien sur l'attente entre les deux.

Commandes fictives · données synthétiques

Le problème

Le statut n'a pas d'histoire.

  • L'export de la nuit remplace celui de la veille.
  • Le temps passé dans un état est perdu.
  • L'ERP ne peut pas être modifié.

Rien n'est modifié

lumnik compare chaque nuit à la précédente.

  • Chaque commande est suivie par son numéro.
  • Chaque changement de statut entre dans un journal, daté.
  • Rien n'est écrit dans l'ERP.

Ce qu'il a fallu écrire

key: order_id
dormancy:
  after: 25m

Une commande suivie, une alerte si elle ne bouge plus.

Le scénario complet tient en 3 fichiers de déclaration, 73 lignes.

Le journal

7 mouvements, chacun avec son temps d'attente.

  • C-01: saisie, puis en cours, puis livrée.
  • C-02: annulée.
  • Chaque ligne dit le temps passé dans l'état quitté.

Valeurs réelles, rejeu du 28 octobre 2026.

Les commandes immobiles

4 commandes n'ont pas bougé. Elles alertent.

  • C-06, C-08, C-09, C-11.
  • Une alerte par immobilité, pas à chaque passage.

Le métier décide

EN ATT veut dire en cours. Ce n'est pas un mouvement.

  • Le métier déclare EN ATT comme alias.
  • C-08 et C-09 sont renommées.
  • Leur horloge et leur alerte restent.

Essayer

Le scénario se rejoue de bout en bout.

Trois nuits, une déclaration, le journal: chaque étape est publiée avec sa sortie.

Ce scénario tourne sur lumnik Open, gratuit et open source.

Essayer lumnik Open →