Zum Inhalt springen
aYOUne

Prozess-Landkarte Lager & Produktion

Prozess-Landkarte Lager & Produktion

Stand 2026-09-03 · Programm Replikation · Meilenstein R4 · Epic „Scanner-App neu" · Task E1
6a99329e6edab122065e8207 · alle Angaben gegen den Arbeitsbaum und die Produktions-Datenbank gemessen.

Diese Karte steht vor jedem Scanner-Bau (CEO-Entscheid 2026-09-03). Sie beantwortet nicht
„welcher Screen fehlt", sondern wo bricht die Kette — denn die Screens sind grösstenteils da.


Das Ergebnis in fünf Sätzen

  1. Die Flächen sind gebaut. Der Scanner hat neun buchende Prozess-Screens, das Terminal

siebzehn Seiten. Der Epic-Task „Prozess-Screens nachziehen" ist damit ein Schliess-, kein
Bau-Auftrag.

  1. Die Buchung ist die Engstelle. Von allen Lager-Ketten sind genau drei bestandswirksam:

Stocks-Sammelaktionen, MaterialCommissionings.consume, InventoryAdjustments.apply.
Einlagern bucht nicht ein. Retoure bucht nicht zurĂĽck. Packen bucht nicht aus.

  1. Keine der 13 WMS-Entitäten ist deklariert. Alle 13 haben hand-gebaute Aktions-Router und

null entityActions im Register — die Aktionen existieren, die Plattform kennt sie nicht.

  1. Die Kette endet nach dem Pick. Verpackung und Versand sind in beiden Client-Diensten fertig

verdrahtet und haben in keinem Client eine Fläche.

  1. Niemand wird benachrichtigt. Von 151 Benachrichtigungs-Regeln trägt keine einzige eine

Lager-Entität.


Legende der Spalten

SpalteBedeutung
Schrittfachlicher Vorgang
RolleWerker · Lagerleiter · Einkäufer · Produktionsleiter · System
Gerät/FlächeScanner-Route · Terminal-Seite · PWA-Zustand · Wallboard-Widget · keine
BuchungEntität + Aktion + Recht; fett = bestandswirksam (Stocks/StockLogs)
Benachrichtigungnotificationpolicies-Eintrag oder keine (gemessen, nicht geraten)
Ist-FlächeDatei:Zeile — der Beleg, dass es die Fläche wirklich gibt
Lückewas fehlt, mit Träger-Zuordnung

🔴 Rechte-Hinweis für alle WMS-Ketten: jede Aktion läuft auf dem Basis-Modulrecht
(warehouse.<entität>), nicht auf einem abgeleiteten …actions.<name> — weil die Aktion nicht
deklariert ist. Eine feinere Rechtevergabe ist heute strukturell unmöglich.

âš  Alias-Hinweis: /stocks/book/incoming, /stocks/book/transfer und /stocks/count sind
bewusste Aliase auf die actions/-Form (routerStocks.ts:1000-1003) — Scanner und Terminal nutzen
verschiedene Schreibweisen derselben Route, das ist kein Defekt.


Kette 1 — Wareneingang (Lieferung → Bestand)

SchrittRolleGerät/FlächeBuchungBenachrichtigungIst-FlächeLücke
Lieferung avisierenEinkäuferPWA purchase.supplierordersSupplierOrders → order · purchase.supplierordersapproval_requested/approved/rejectedmodelsAndRights/purchase.ts:169—
Anlieferung am TorLagerleiterkeineDockAppointments → arrive · warehouse.dockappointmentskeinerouterDockAppointments.ts:243Fläche fehlt ganz → warehouse.think-tank-storage-structure (R4)
Lieferschein scannenWerkerScanner receiveSupplierOrders lesenkeinegoods-receive.component.ts:451,467—
Ware erfassenWerkerScanner receive · Terminal warehouse/receiveStocks → book-incoming (StockLogs Zugang + Stocks $inc upsert)keinegoods-receive.component.ts:577 · Terminal receive.component.ts:441Benachrichtigung → automation.order-chain-notifications (R6)
Wareneingang belegenSystemTerminal warehouse/goods-receipts (nur Liste)GoodsReceipts — kein Router, keine AktionkeineTerminal goods-receipts.component.ts:97🔴 Scanner erzeugt keinen GoodsReceipt → M-B-Task 6a941ea4fad888ed370600a9
Menge zurückmeldenSystem—SupplierOrder-Zeile qtyReceived (Roll-up in book-incoming)keinerouterStocks.ts:365—

Positiv-Kontrolle der Kette: book-incoming schreibt nachweislich beides (StockLogs :365,
Stocks $inc upsert) — die Null-Aussagen der Nachbar-Schritte sind damit belastbar.

đź”´ Der Bruch: der Scanner bucht den Bestand, legt aber keinen Wareneingangs-Beleg an. Die
Entität GoodsReceipts hat weder entityActions (purchase.ts:9) noch einen Router in warehouse-api;
sie wird nur gelesen. Wer den Wareneingang später prüfen will, findet die Buchung im StockLog, aber
keinen Beleg mit Position und Foto.


Kette 2 — Einlagern (Auftrag → Lagerplatz)

SchrittRolleGerät/FlächeBuchungBenachrichtigungIst-FlächeLücke
Einlager-Auftrag entstehtSystemPWA warehouse.putawayorders (Liste)PutAwayOrders anlegen · warehouse.putawayorderskeineayounestates warehouse.putawayorderskein Erzeuger gemessen → warehouse.pick-to-workcenter (R4)
Auftrag holenWerkerScanner putawayPutAwayOrders lesenkeineputaway.component.ts:218—
Lagerort scannenWerkerScanner putawayAuflöser POST scan.ayoune.app/—putaway.component.ts:296—
Menge bestätigenWerkerScanner putawayPutAwayOrders → complete · warehouse.putawayorderskeineputaway.component.ts:319 · routerPutAwayOrders.ts:145🔴 bucht den Bestand NICHT
Bestand am PlatzSystem————🔴 fehlt vollständig

đź”´ Der schwerste Bruch der ganzen Karte. PutAwayOrders.complete fasst Stocks und StockLogs
null-mal an (gemessen; Positiv-Kontrolle: routerStocks.ts trägt 18 Treffer derselben Suche).
Der Werker quittiert das Einlagern, der Bestand wandert nicht auf den Lagerplatz. Bestand
entsteht heute ausschliesslich über book-incoming — also am Wareneingang, nicht am Platz.

Träger: warehouse.think-tank-storage-structure (R4, plan:99 — „Bestände + Mindestbestände").


Kette 3 — Umlagern (Platz → Platz)

SchrittRolleGerät/FlächeBuchungBenachrichtigungIst-FlächeLücke
Quelle scannenWerkerScanner transfer · Terminal warehouse/transferStocks lesen—transfer.component.ts:315—
Ziel scannenWerkerScanner transfer · Terminal warehouse/transferStorageAreas lesen—transfer.component.ts:357—
Umlagerung buchenWerkerScanner transfer · Terminal warehouse/transferStocks → transfer (2 Bestandszeilen + 2 StockLogs Umlagerung, $gte-Guard, Kompensation)keinetransfer.component.ts:419 · routerStocks.ts:654—
TransportauftragLagerleiterkeineTransportOrders → confirm/ready/dispatch/deliver · warehouse.transportorderskeinerouterTransportOrders.ts:211-214Fläche fehlt ganz; 4 Aktionen ohne Aufrufer

🟢 Die einzige Kette, die technisch sauber durchläuft. transfer bucht beide Seiten, hält einen
$gte-Guard gegen Unterdeckung im Filter und kompensiert bei Fehler — die reifste Buchung im Bestand.

⚠ TransportOrders ist der Gegensatz: vier Aktions-Routen, keine Bestandswirkung, keine Fläche
in keinem Client (im Scanner-Dienst existiert nicht einmal eine Methode dafĂĽr).


Kette 4 — Inventur und Korrektur

SchrittRolleGerät/FlächeBuchungBenachrichtigungIst-FlächeLücke
Zähl-Runde startenLagerleiterScanner countStorageAreas + Stocks lesen—cycle-count.component.ts:246,256—
ZählenWerkerScanner countStocks → count (runCycleCount: StockLogs + Abgleich auf Zählwert)keinecycle-count.component.ts:289 · routerStocks.ts:1002—
Differenz erfassenWerkerScanner count → adjustInventoryAdjustments anlegen · warehouse.inventoryadjustmentskeinecycle-count.component.ts:266 · adjust.component.ts:412—
Zur Freigabe gebenWerkerScanner adjustInventoryAdjustments → submitkeineadjust.component.ts:470 · routerInventoryAdjustments.ts:330🔴 der Freigeber erfährt nichts
Freigeben/AblehnenLagerleiterScanner adjustInventoryAdjustments → approve/rejectkeineadjust.component.ts:494,500Benachrichtigung → automation.order-chain-notifications (R6)
Korrektur buchenSystemScanner adjustInventoryAdjustments → apply (runAdjustmentApply → reconcileStockBucket: StockLogs + Stocks)keineadjust.component.ts:548 · routerInventoryAdjustments.ts:333—

🟢 Die einzige Kette mit einer vollständigen Freigabe-Strecke (submit → approve/reject → apply)
und einer echten Bestandsbuchung am Ende.

🔴 Und genau sie zeigt die Benachrichtigungs-Lücke am schärfsten: eine Bestandskorrektur wartet
auf eine Freigabe, und niemand wird informiert. Der Freigeber mĂĽsste die Liste von sich aus
öffnen. Es gibt dafür weder eine Regel (0 von 151) noch ein Wallboard-Widget (0 von 21).


Kette 5 — Pick (Bedarf → Entnahme)

SchrittRolleGerät/FlächeBuchungBenachrichtigungIst-FlächeLücke
Welle bildenLagerleiterScanner pickPickWaves → release · warehouse.pickwaveskeinerouterPickWaves.ts:212release hat keinen Aufrufer
Welle startenWerkerScanner pickPickWaves → startkeinepick-list.component.ts:644—
Pickliste übernehmenWerkerScanner pickPickLists → assign · warehouse.picklistskeinepick-list.component.ts:389🔴 der Werker erfährt nicht, dass eine Liste bereitliegt
Position pickenWerkerScanner pickPickLists → confirm-position (nur Positionsfelder + Roll-up)keinerouterPickLists.ts:319🔴 bucht den Bestand NICHT
Reservierung erfüllenSystemScanner pickStockReservations → fulfill (Stocks nur lesend)keinepick-list.component.ts:653 · routerStockReservations.ts:378🔴 bucht den Bestand NICHT
Liste abschliessenWerkerScanner pickPickLists → completekeinepick-list.component.ts:416🔴 bucht den Bestand NICHT
Bestand entnehmenSystem—Stocks → book-outgoing existiert, wird von der Kette nicht gerufenkeinerouterStocks.ts:886🔴 Bruch

đź”´ Der zweite schwere Bruch. Die gesamte Pick-Kette ist bestandsneutral: confirm-position,
complete und fulfill fassen Stocks/StockLogs null-mal an. Der Ausgangs-Weg
POST /stocks/actions/book-outgoing existiert (routerStocks.ts:886, schreibt den Bestand ohne
upsert plus einen StockLog vom Typ Entnahme) — er wird von keiner Pick-Route und keinem
Client gerufen.

âš  Nebenbefund zur Reihenfolge: book-outgoing schreibt erst den Bestand, dann das Journal
(:886), während book-incoming und reconcileStockBucket es umgekehrt tun (Journal zuerst,
stockReconcile.ts:84 vor :107). Bei einem Abbruch dazwischen sind die zwei Wege verschieden
fehlerhaft. Das gehört benannt, bevor book-outgoing scharfgeschaltet wird.

Träger: warehouse.pick-commission-ship (R6, plan:134).


Kette 6 — Kommission an den Arbeitsplatz

SchrittRolleGerät/FlächeBuchungBenachrichtigungIst-FlächeLücke
Bedarf je SchrittSystem—MaterialCommissionings anlegen · warehouse.materialcommissioningskeinewarehouse.ts:53Erzeuger nicht gemessen → purchase.bom-explosion-demand (R6)
Material bereitstellenWerkerScanner commission · Terminal production/stepMaterialCommissionings → deliverkeinecommission.component.ts:287 · Terminal step.component.ts:698bucht nicht (als reine Bereitstellung richtig)
An Arbeitsplatz bindenWerkerTerminal production/stepMaterialCommissionings lesen (Filter auf den Produktionsauftrag)—Terminal step.component.ts:696—
Verbrauch buchenSystemTerminal production/step (automatisch bei 100 % Fortschritt)MaterialCommissionings → consume (runMaterialConsume → StockLogs + Stocks + Status auf verbraucht)keinerouterMaterialCommissionings.ts:272 · materialConsume.ts:212—

🟢 Die einzige Kette, die zwischen zwei Domänen sauber durchläuft — und die einzige, in der eine
Buchung automatisch aus einem Fachereignis folgt statt aus einem Knopfdruck.

âš  Bemerkenswert und richtig gebaut: production-api schreibt nie selbst auf
Stocks/Lots/StockLogs (warehouseClient.ts:6-8), sondern ruft warehouse-api mit dem
weitergereichten Bearer-Token des Aufrufers (:53-58), ausdrĂĽcklich nicht ĂĽber den
internen Dienst-Weg. Damit bucht der Werker unter seiner eigenen Kennung.


Kette 7 — Produktion und Materialverbrauch

SchrittRolleGerät/FlächeBuchungBenachrichtigungIst-FlächeLücke
Auftrag startenProduktionsleiterPWA production.productionordersProductionOrders → start · production.productionorders✅ ProductionOrders / startedproduction.ts:69—
Arbeitsplatz belegenWerkerTerminal production/workcenterWorkCenters → set-occupiedkeineTerminal workcenter.component.ts:211—
Schritt beendenWerkerTerminal production/stephand-gebaute MES-Route stop → ProductionOrdersEreignis stoppedrouterProductionSteps.ts:432—
Zählerstand prüfenSystemTerminal production/step— (bricht vor jedem Schreibvorgang ab)—applyStepTransition.ts:413—
Fortschritt hochrollenSystem—ProductionOrders Roll-up Schritt→Position→AuftragkeinerollupOrderProgress.ts—
Material verbrauchenSystem— (nur bei 100 % Fortschritt)MaterialCommissionings → consumekeinerouterProductionSteps.ts:358-375—
Zeit buchenWerkerTerminal production/stepPOST production-api/worklogs/actions/bookkeineTerminal step.component.ts:1443—
Auftrag abschliessenProduktionsleiterPWA production.productionordersProductionOrders → complete✅ ProductionOrders / completedproduction.ts:69—

🟢 Die reifste Kette der Plattform — und die einzige mit Benachrichtigungen (zwei Regeln,
started und completed, in drei Mandanten-Kopien).

⚠ Zwei Fallstricke, die in die Karte gehören:

  1. Der Materialverbrauch hängt an Geschäftsnummern, nicht an Array-Positionen

(warehouseConsume.ts:10-20). Fehlen sie, wird der Verbrauch still ĂĽbersprungen, ohne Fehler.

  1. Ein Buchungs-Problem wird zur Warnung, nie zum Fehler — foldConsumeOutcome

(warehouseConsume.ts:69-72) ĂĽbersetzt selbst eine Unterdeckung in eine Warnung, damit ein
produzierter Schritt nie als Fehlschlag erscheint. Das ist fachlich richtig und heisst zugleich:
eine fehlgeschlagene Materialbuchung ist am Terminal nicht als Fehler sichtbar.


Kette 8 — Verpackung und Versand

SchrittRolleGerät/FlächeBuchungBenachrichtigungIst-FlächeLücke
Packauftrag entstehtSystemkeinePackConfirmations anlegen · warehouse.packconfirmationskeinerouterPackConfirmations.ts🔴 kein Erzeuger, keine Fläche
Karton befüllenWerkerkeine—keine—🔴 fehlt vollständig
Karton versiegelnWerkerkeinePackConfirmations → seal-boxkeinerouterPackConfirmations.ts:215🔴 Aktion ohne Aufrufer in beiden Clients
Packen abschliessenWerkerkeinePackConfirmations → completekeinerouterPackConfirmations.ts:216🔴 Aktion ohne Aufrufer, bucht nicht aus
Versandkarton verwaltenLagerleiterTerminal warehouse/shipping-boxesShippingBoxes (purchase-api) CRUDkeineTerminal shipping-boxes.component.ts:231,248die einzige Fläche der ganzen Kette
VersandSystem—Shippings✅ out_for_delivery · delivered · exceptionnotificationpoliciesdie Benachrichtigungen sind da, der Vorgang davor nicht

🔴 Die Kette endet nach dem Pick. Alle drei Packbestätigungs-Methoden sind in beiden
Client-Diensten deklariert (createPackConfirmation, sealBox, completePackConfirmation) und
haben in keinem Client eine Fläche. Der einzige gebaute Teil ist die Verwaltung der
Versandkartons — als Stammdaten, nicht als Vorgang.

âš  Der Kontrast ist die Aussage: fĂĽr den Versand danach existieren drei Benachrichtigungs-Regeln
(Shippings), für das Packen davor keine einzige — und keine Fläche. Der Übergang vom Lager zum
Versand ist die grösste zusammenhängende Lücke der Karte.

Träger: warehouse.pick-commission-ship (R6, plan:134).


Kette 9 — Retoure

SchrittRolleGerät/FlächeBuchungBenachrichtigungIst-FlächeLücke
Retoure anmeldenSystemkeineReturnOrders anlegen · warehouse.returnorderskeinewarehouse.ts:119kein Erzeuger gemessen
Prüfen und freigebenLagerleiterScanner returnsReturnOrders → approve/rejectkeinereturns.component.ts:300,311—
Ware annehmenWerkerScanner returnsReturnOrders → receivekeinereturns.component.ts:334 · routerReturnOrders.ts:273🔴 bucht den Bestand NICHT zurück
Zustand begutachtenWerkerScanner returnsReturnOrders → inspectkeinereturns.component.ts:340—
Ins SperrlagerWerkerkeine—keine—🔴 fehlt vollständig
AbschliessenWerkerScanner returnsReturnOrders → completekeinereturns.component.ts:403🔴 bucht nicht

đź”´ Der dritte schwere Bruch. routerReturnOrders.ts fasst Stocks/StockLogs ĂĽber alle sechs
Aktionen null-mal an (Positiv-Kontrolle: routerStocks.ts 18 Treffer derselben Suche). Eine
zurückgenommene Ware wird begutachtet, freigegeben und abgeschlossen — und ist im Bestand nie
angekommen. Ein Sperrlager-Begriff existiert nirgends im Bestand.

Träger: neu — siehe Lücken-Register L9.


Kette 10 — Nachschub

SchrittRolleGerät/FlächeBuchungBenachrichtigungIst-FlächeLücke
Mindestbestand unterschrittenSystemkeine—keine—🔴 kein Erzeuger → purchase.reorder-demand (R4, plan:103)
Auftrag übernehmenWerkerScanner replenishReplenishmentOrders → assignkeinereplenish.component.ts:209—
NachfüllenWerkerScanner replenishReplenishmentOrders → completekeinereplenish.component.ts:251 · routerReplenishmentOrders.ts:169🔴 bucht den Bestand NICHT um

đź”´ Ein Nachschub-Vorgang, der den Bestand nicht vom Reserve- auf den Kommissionierplatz bewegt, ist
eine Quittung ohne Wirkung. Der Umlager-Weg dafür existiert (Stocks → transfer, Kette 3) und
wird nicht gerufen.


Kette 11 — Rückstand

SchrittRolleGerät/FlächeBuchungBenachrichtigungIst-FlächeLücke
Rückstand entstehtSystemPWA warehouse.backorders (Liste)Backorders anlegen · warehouse.backorderskeinewarehouse.ts:9kein Erzeuger gemessen
Rückstand auflösenLagerleiterkeineBackorders → fulfill (Stocks nur lesend)keinerouterBackorders.ts:308🔴 Aktion ohne Aufrufer; Methode im Scanner-Dienst deklariert, von keiner Seite gerufen
Rückstand stornierenLagerleiterkeineBackorders → cancelkeinerouterBackorders.ts:307🔴 Aktion ohne Aufrufer

Kette 12 — Dock und Anlieferung

SchrittRolleGerät/FlächeBuchungBenachrichtigungIst-FlächeLücke
Zeitfenster buchenEinkäuferkeineDockAppointments anlegenkeinewarehouse.ts:20🔴 keine Fläche
Ankunft bestätigenLagerleiterkeineDockAppointments → confirm/arrivekeinerouterDockAppointments.ts:242,243🔴 im Terminal-Dienst deklariert (confirmDockAppointment), ohne Aufrufer; im Scanner-Dienst gar nicht vorhanden
VerladenWerkerkeineDockAppointments → start-loading/completekeinerouterDockAppointments.ts:244,245🔴 keine Fläche
Tor belegen/freigebenLagerleiterkeineDocks → occupy/releasekeinerouterDocks.ts:154,155🔴 keine Fläche
NichterscheinenLagerleiterkeineDockAppointments → no-showkeinerouterDockAppointments.ts:246🔴 keine Fläche

🔴 Die vollständig unerreichbare Kette. Elf Aktions-Routen über zwei Entitäten, keine einzige
Fläche in Scanner, Terminal, PWA oder Wallboard. Für Think Tank Tegernsee heute ohne Bedarf — sie
gehört in die Karte, weil sie sonst bei der nächsten Planung als „fehlt" neu erfunden wird.


Lücken-Register — jede Lücke mit genau einem Träger

Träger-Arten: F = R-Programm-Feature · E = Task im Epic „Scanner-App neu" · M = Task in
den M-B-Sprints „Lager 1/2" · N = neu (nur mit Begründung, CEO-Freigabe offen).

#LückeKetteTrägerArt
L1Scanner bucht den Bestand, legt aber keinen Wareneingangs-Beleg an1Task 6a941ea4fad888ed370600a9 („Wareneingang im Scanner erzeugt einen GoodsReceipt mit Positionen und Foto")M
L2PutAwayOrders.complete bucht den Bestand nicht auf den Platz2warehouse.think-tank-storage-structure (R4, plan:99)F
L3Pick-Kette vollständig bestandsneutral; book-outgoing existiert und wird nie gerufen — inkl. der abweichenden Schreib-Reihenfolge dort5warehouse.pick-commission-ship (R6, plan:134)F
L4Verpackung/Versand ohne jede Fläche, drei Aktionen ohne Aufrufer8warehouse.pick-commission-ship (R6, plan:134)F
L5ReturnOrders.receive bucht nicht zurück; kein Sperrlager-Begriff im Bestand9neu — die R6-Kette endet beim Versand, die Retoure ist der Rückweg und in keinem Feature enthalten (geprüft gegen alle 23)N
L6ReplenishmentOrders.complete bucht den Bestand nicht um10purchase.reorder-demand (R4, plan:103 — Mindestbestand→Bedarf)F
L7Null Benachrichtigungen fĂĽr die gesamte WMS-Achse (0 von 151 Regeln)1,4,5,8,9,10automation.order-chain-notifications (R6, plan:136)F
L8Alle 13 WMS-Entitäten ohne entityActions — Prozess ohne Deklarationalleneu — Fundament-Arbeit, in keinem Feature und keinem Task enthalten (geprüft gegen 23 F, 8 E, 15 M)N
L9Kein Einstieg für Lager und Lagerorte (keine Liste, kein Baum)alleTask 6a9932b26edab122065e84f4 („Einstieg Lager & Lagerorte verwalten")E
L10Raster-Generator-Oberfläche existiert, ist aber ohne Route unerreichbar2warehouse.scanner-grid-ui (R4, plan:96)F
L11storage-area-detail liest keinen Scan — die einzige Lagerort-Fläche2Task 6a9932a16edab122065e8293 (Scan-Bus auf alle Seiten)E
L12Einstellungen sind sieben Listenpunkte ohne VerhaltenalleTask 6a9932b76edab122065e8580E
L13Dock/Anlieferung: 11 Aktionen über 2 Entitäten, null Flächen12zurückgestellt — für Think Tank Tegernsee heute ohne Bedarf; in der Karte, damit sie nicht neu erfunden wird—
L14Wallboard: 20 von 21 Endpunkten produktionsbezogen, für Lager genau einer (als „legacy" markiert), kein Widget für Bestände/Picklistenallereporting.production-floor-wallboards (R7, plan:155)F
L15TransportOrders/Backorders: Aktionen ohne jeden Aufrufer3,11purchase.reorder-demand (R4) fĂĽr Backorders; TransportOrders mit L13 zurĂĽckgestelltF

Bilanz: 13 Lücken zugeordnet · 2 neu · 1 zurückgestellt.
Die zwei neuen (L5, L8) sind gegen alle 23 Features, 8 Epic-Tasks und 15 M-B-Tasks geprĂĽft.
🔴 Kein PM-Task angelegt — das braucht die CEO-Freigabe (Brief-Constraint).

⚠ Beobachtung ohne Träger (gehört in den SDUI-Strang, nicht hierher): das Modul warehouse trägt
13 reine Listen-Zustände und keinen einzigen .edit.*-Detail-Reiter, während purchase 13 und
production 22 tragen. Wer in der PWA einen Wareneingang oder eine Pickliste öffnen will, findet
keine Bearbeitungsfläche.


Bau-Reihenfolge fĂĽr Task 6a9932ba6edab122065e860c (REP3)

🔴 **Der Auftrag jenes Tasks lautet „Prozess-Screens nachziehen" — gemessen ist er ein SCHLIESS-,
kein Bau-Auftrag.** Alle sieben genannten Screens (Wareneingang, Einlagern, Umlagern, Inventur, Pick,
Kommission, Retoure) existieren im Scanner und rufen echte Aktions-Routen. Was fehlt, ist die
Buchung dahinter.

🟢 Und die Buchungswege existieren ebenfalls alle — book-incoming, book-outgoing, transfer,
count, apply, consume sind gebaut und getestet. Es ist Verdrahtung, kein Neubau.

Kriterium je Position: (a) Buchungsweg im Backend vorhanden · (b) Scan-Grundfunktion trägt den
Schritt · (c) kein R4-Feature liefert den Screen ohnehin.

1. Die 13 Entitäten deklarieren (L8) — Fundament, vor allem anderen

Ohne entityActions im Register gibt es keine SDUI-Schaltfläche, keinen Eintrag in der
Scan-Aktionsliste und kein abgeleitetes Recht — heute läuft jede der ~50 Aktionen auf dem
Basis-Modulrecht. Jede folgende Position wird billiger, wenn das zuerst steht.
âš  Die Stocks-Buchungen liegen auf Sammlungs-Ebene (/stocks/actions/*) und brauchen deshalb
availability:'collection' — der Routen-Erzeuger kennt diese Form (belegt in CLAUDE.md, Kaskade 61).
(a) ✅ · (b) entfällt · (c) ✅

2. Einlagern bucht ein (L2)

Ohne Bestand am Lagerplatz ist jede Folgekette wertlos — Pick, Nachschub und Inventur rechnen alle
gegen einen Bestand, der heute nur am Wareneingang entsteht. Weg: PutAwayOrders.complete ruft
Stocks → transfer (Eingangszone → Zielplatz). (a) ✅ · (b) ✅ (putaway scannt Platz und Menge) · (c) ✅

3. Einstieg Lager und Lagerorte (L9, L10, L11)

Der CEO-Befund Nr. 1 und zugleich die Voraussetzung fĂĽr Position 2: man muss einen Lagerplatz sehen,
auswählen und anscannen können. Die Raster-Oberfläche existiert bereits im Zusatzblatt und
braucht nur einen Routen-Einstieg. (a) ✅ (generate-grid, print-cell-labels) · (b) ⚠ heute nein —
storage-area-detail liest keinen Scan, das schliesst L11 mit · (c) ⚠ Überschneidung mit
warehouse.scanner-grid-ui (R4) — dort bauen, hier nur verlinken, sonst doppelt.

4. Pick bucht aus (L3)

book-outgoing scharfschalten aus PickLists.complete. âš  **Vorher die Schreib-Reihenfolge
angleichen** (heute Bestand vor Journal, überall sonst Journal vor Bestand) — sonst wird eine
bestehende Abweichung zum ersten Mal wirksam. (a) ✅ · (b) ✅ · (c) ✅

5. Packen und Versand (L4)

Die erste Position, die eine neue Fläche braucht (Packauftrag, Karton befüllen, versiegeln). Die
drei Aktionen sind gebaut, book-outgoing liefert die Ausbuchung, und die Benachrichtigungen fĂĽr den
Versand danach existieren bereits. (a) ✅ · (b) ✅ (Karton- und Artikel-Scan) · (c) ✅

6. Retoure bucht zurĂĽck (L5)

RĂĽckweg ĂĽber book-incoming auf einen Sperrbereich. âš  Der Sperrlager-Begriff existiert nirgends
— das ist der Teil, der eine Entscheidung braucht (eigener Lagerort oder Kennzeichen am Bestand),
und der Grund, warum L5 als neu geführt wird. (a) ✅ · (b) ✅ · (c) ✅

7. Nachschub bucht um (L6)

ReplenishmentOrders.complete ruft Stocks → transfer. Technisch die kleinste Position, fachlich
erst sinnvoll, wenn Mindestbestände gepflegt sind (purchase.reorder-demand, R4).
(a) ✅ · (b) ✅ · (c) ✅

8. Benachrichtigungen je Stufe (L7)

Erst hier, weil eine Benachrichtigung ein Ereignis braucht, das etwas bewirkt hat. Die vier
lohnendsten sind gemessen: Bestandskorrektur wartet auf Freigabe · Pickliste liegt bereit · Material
fehlt · Packauftrag offen. ⚠ Vier Sprachen (de/en/es/it) über ayoune translations, nie im Code.
(a) — · (b) — · (c) ✅ (automation.order-chain-notifications, R6)

9. Wallboard-Widgets fĂĽr das Lager (L14)

Zuletzt, weil ein Wallboard nur zeigt, was die Ketten davor erzeugen. Die Modelle Stocks und
Warehouses sind im BFF bereits geladen (app.ts:126,127) und werden von keinem Widget gelesen.
(a) ✅ · (b) — · (c) ✅ (reporting.production-floor-wallboards, R7)


Anforderungen an jeden Screen dieser Reihenfolge

Aus den geltenden CEO-Regeln, in jede Zeile des LĂĽcken-Registers zu ĂĽbernehmen, die einen Screen
verlangt:

  • Scan-Grundfunktionen gelten in jeder Geräterolle (CEO 2026-08-30). Eine Rolle bestimmt

Startseite, Fokus und Menü — nie ob gescannt werden darf.

  • Jeder Knopf trägt einen Loader (CEO 2026-08-23). Ein stiller Klick ist ein Defekt.
  • Alles viersprachig (de/en/es/it), Ăśbersetzungen ausschliesslich in ayoune translations

(CEO 2026-08-23) — nie im Code.

  • Keine Freitexte, wo die Datenbank die Werte fĂĽhrt (CEO 2026-08-26): Lagerort, Produkt,

Arbeitsplatz und Charge sind atomare Referenz-Auswahlfelder mit Schnell-Anlage.

  • Kein Hinweis auf laufende Entwicklung in der Oberfläche (CEO 2026-08-23).

Was diese Karte NICHT plant

  • Scan-Bus und Hardware-Matrix — vergeben an Task 6a9932a16edab122065e8293, geteilter

Wedge-Detektor @tolinax/ayoune-scan-ui. Die Karte hält nur fest, dass im Bestand drei
Scan-Muster nebeneinander laufen (globaler Wedge · Seiten-Handler · Kamera).

  • Mehrsprachigkeit und Interfaces-Pin des Scanners — beide seit TK20 erledigt, hier bewusst

keine LĂĽcke.

  • UX, Informationsarchitektur, Lesbarkeit — Task 6a9932a66edab122065e8347.

Mit dieser Seite weiterarbeiten

Fertige Anweisungen für dein KI-Werkzeug. Kopieren, einfügen, loslegen — die KI holt sich den Inhalt selbst über die Adresse im Text.

Die Schritte fĂĽr mich zusammenfassen Das Wesentliche, in der richtigen Reihenfolge.
Lies die folgende Dokumentation von tolinax UG und arbeite damit.

Diese Seite: https://ayoune.com/de/docs/lager-produktion/prozess-landkarte-lager-produktion.md
Die vollständige Sammlung: https://ayoune.com/de/docs/lager-produktion.md

Fasse den Inhalt fĂĽr mich zusammen.

- Zuerst in zwei Sätzen: worum geht es hier?
- Dann die Schritte in der Reihenfolge, in der ich sie gehen muss.
- Je Schritt eine Zeile, in einfacher Sprache.
- Am Ende: was ich vorher bereithalten sollte.

Lass nichts weg, was ich brauche, um wirklich fertig zu werden.
Hinweis zu den Quellen:
- Jede Seite dieser Dokumentation ist als Markdown abrufbar (dieselbe Adresse mit `.md`).
- Ein maschinenlesbarer Überblick aller öffentlichen Inhalte liegt unter `/llms.txt`.
- Falls du Zugriff auf den aYOUne-MCP-Server hast, kannst du damit gegen lebende Daten
  arbeiten statt gegen diese Momentaufnahme. Falls nicht, ignoriere diesen Punkt.
Erklären, wofür ich das brauche Wozu es gut ist — und wann es sich lohnt.
Lies die folgende Dokumentation von tolinax UG und arbeite damit.

Diese Seite: https://ayoune.com/de/docs/lager-produktion/prozess-landkarte-lager-produktion.md
Die vollständige Sammlung: https://ayoune.com/de/docs/lager-produktion.md

Erkläre mir, wofür ich das brauche.

1. Welches Problem löst es? In einem Satz, aus meiner Sicht.
2. Drei typische Situationen, in denen es mir wirklich hilft.
3. Wann ich es NICHT brauche — das spart mir Zeit.
4. Was ich stattdessen tun kann, wenn es nicht passt.

Bleib bei dem, was in der Quelle steht. Wo sie nichts hergibt, sag es offen,
statt zu raten.
Hinweis zu den Quellen:
- Jede Seite dieser Dokumentation ist als Markdown abrufbar (dieselbe Adresse mit `.md`).
- Ein maschinenlesbarer Überblick aller öffentlichen Inhalte liegt unter `/llms.txt`.
- Falls du Zugriff auf den aYOUne-MCP-Server hast, kannst du damit gegen lebende Daten
  arbeiten statt gegen diese Momentaufnahme. Falls nicht, ignoriere diesen Punkt.
Bei der Einrichtung helfen Schritt fĂĽr Schritt, mit RĂĽckfragen an mich.
Lies die folgende Dokumentation von tolinax UG und arbeite damit.

Diese Seite: https://ayoune.com/de/docs/lager-produktion/prozess-landkarte-lager-produktion.md
Die vollständige Sammlung: https://ayoune.com/de/docs/lager-produktion.md

Begleite mich Schritt fĂĽr Schritt durch die Einrichtung.

- Sag mir zuerst, was ich bereithalten muss (Zugänge, Daten, Zeit).
- Dann fĂĽhre mich EINEN Schritt nach dem anderen. Warte auf mein "weiter".
- Nenne je Schritt, woran ich merke, dass er geklappt hat.
- Wenn etwas schiefgeht, frag nach der genauen Meldung, statt zu raten.

Wenn die Anleitung eine Stelle offen lässt, sag mir das, statt sie zu erfinden.
Hinweis zu den Quellen:
- Jede Seite dieser Dokumentation ist als Markdown abrufbar (dieselbe Adresse mit `.md`).
- Ein maschinenlesbarer Überblick aller öffentlichen Inhalte liegt unter `/llms.txt`.
- Falls du Zugriff auf den aYOUne-MCP-Server hast, kannst du damit gegen lebende Daten
  arbeiten statt gegen diese Momentaufnahme. Falls nicht, ignoriere diesen Punkt.
Bei einem Problem weiterhelfen Ursache eingrenzen statt raten.
Lies die folgende Dokumentation von tolinax UG und arbeite damit.

Diese Seite: https://ayoune.com/de/docs/lager-produktion/prozess-landkarte-lager-produktion.md
Die vollständige Sammlung: https://ayoune.com/de/docs/lager-produktion.md

Hilf mir, ein Problem einzugrenzen.

- Frag mich zuerst, was ich beobachte und was ich erwartet hätte.
- Leite daraus die wahrscheinlichsten Ursachen ab, die zu dieser Quelle passen.
- Gib mir je Ursache EINEN Test, der sie bestätigt oder ausschließt.
- Sortiere so, dass der billigste Test zuerst kommt.

Rate nicht. Wenn die Quelle das Problem nicht abdeckt, sag mir, wo ich
weitersuchen sollte.
Hinweis zu den Quellen:
- Jede Seite dieser Dokumentation ist als Markdown abrufbar (dieselbe Adresse mit `.md`).
- Ein maschinenlesbarer Überblick aller öffentlichen Inhalte liegt unter `/llms.txt`.
- Falls du Zugriff auf den aYOUne-MCP-Server hast, kannst du damit gegen lebende Daten
  arbeiten statt gegen diese Momentaufnahme. Falls nicht, ignoriere diesen Punkt.
In einfachen Worten erklären Ohne Fachbegriffe, von Grund auf.
Lies die folgende Dokumentation von tolinax UG und arbeite damit.

Diese Seite: https://ayoune.com/de/docs/lager-produktion/prozess-landkarte-lager-produktion.md
Die vollständige Sammlung: https://ayoune.com/de/docs/lager-produktion.md

Erkläre den Inhalt so, dass ihn jemand ohne Vorwissen versteht.

- Beginne mit dem Zweck: wozu gibt es das ĂĽberhaupt?
- Fachbegriffe beim ersten Vorkommen in einem Halbsatz erklären.
- Ein Alltags-Vergleich, wo er wirklich trägt — keiner, wo er hinkt.
- Am Ende: die drei Dinge, die man sich merken sollte.

Kürze nicht durch Weglassen von Einschränkungen. Eine Vereinfachung, die eine
Bedingung unterschlägt, ist eine Falschaussage.
Hinweis zu den Quellen:
- Jede Seite dieser Dokumentation ist als Markdown abrufbar (dieselbe Adresse mit `.md`).
- Ein maschinenlesbarer Überblick aller öffentlichen Inhalte liegt unter `/llms.txt`.
- Falls du Zugriff auf den aYOUne-MCP-Server hast, kannst du damit gegen lebende Daten
  arbeiten statt gegen diese Momentaufnahme. Falls nicht, ignoriere diesen Punkt.
Checkliste zum Abhaken Zum Mitgehen während der Umsetzung.
Lies die folgende Dokumentation von tolinax UG und arbeite damit.

Diese Seite: https://ayoune.com/de/docs/lager-produktion/prozess-landkarte-lager-produktion.md
Die vollständige Sammlung: https://ayoune.com/de/docs/lager-produktion.md

Mache daraus eine **abhakbare Checkliste** fĂĽr die praktische Umsetzung.

- Je Punkt genau eine Handlung, im Imperativ.
- Reihenfolge so, dass kein Punkt eine spätere Voraussetzung braucht.
- Voraussetzungen und Stolperstellen als eingerĂĽckte Unterpunkte.
- Am Ende eine Abnahme: woran erkenne ich, dass alles richtig ist?
Hinweis zu den Quellen:
- Jede Seite dieser Dokumentation ist als Markdown abrufbar (dieselbe Adresse mit `.md`).
- Ein maschinenlesbarer Überblick aller öffentlichen Inhalte liegt unter `/llms.txt`.
- Falls du Zugriff auf den aYOUne-MCP-Server hast, kannst du damit gegen lebende Daten
  arbeiten statt gegen diese Momentaufnahme. Falls nicht, ignoriere diesen Punkt.

War dieser Artikel hilfreich?

👎 Nein (0)
Kommentar hinterlassen