Werkspur Docs Zur Website

Grund-Codes, Stationen & Abteilungen

Was ist das

Drei kleine Kataloge halten die großen Artefakte sauber. Grund-Codes benennen, warum etwas passiert: Ausschuss, Stillstand, ein leerer Rest. Stationen benennen, wo gebucht wird. Abteilungen geben jeder Gruppe ihren eigenen Einstiegs-Bildschirm. Keiner dieser Kataloge bucht selbst etwas; sie liefern nur die Auswahllisten und Namen, auf die Ansichten und Aktionen zugreifen.

Ohne diese Kataloge würde jede Aktion ihre eigenen Textbausteine mitbringen, ein Terminal würde jeden beliebigen Namen als Login akzeptieren, und die Startseite hätte für jede Gruppe dieselbe Ansicht. Die drei Kataloge sind klein, aber sie sind die Stelle, an der ein Admin diese Dinge einmal festlegt, statt sie in jeder einzelnen Aktion oder Ansicht neu zu tippen.

Grund-Codes

Es gibt zwei Kataloge: machine für Stillstands- und Zustandsgründe, product für Ausschuss und Restmengen. Ein machine-Grund trägt keine Kategorie. Ein product-Grund braucht dagegen eine Kategorie, entweder scrap (Ausschuss) oder box_close (Kiste mit Rest abschließen).

Jeder Grund-Code hat drei Felder: code (Groß-Kürzel, ^[A-Z][A-Z0-9_]{0,63}$), ein label für die Anzeige am Terminal und ein active-Flag. Sie legen Grund-Codes unter „Grund-Codes“ an und pflegen sie dort. Aktionen binden die Kataloge als Auswahllisten über eine options_source: machine-reasons für Zustandsgründe, scrap-reasons für Ausschuss, box-close-reasons für Restmengen. Ein unbekannter oder deaktivierter Code wird abgelehnt; die Buchung kommt nicht durch.

Das Speichern ist ein Upsert über (catalog, code). Legen Sie denselben Code im selben Katalog erneut an, überschreibt das den bestehenden Eintrag; im jeweils anderen Katalog bleibt er unberührt. Die gespeicherten Codes sind zugleich die Grundlage der Ausschuss-Auswertungen im Kennzahlen-Cockpit: Jede Ausschussbuchung trägt ihren Grund-Code, und das Cockpit gruppiert danach.

Welche Codes Sie anlegen, richtet sich nach den Buchungsgründen Ihres Betriebs. Verwenden Sie kurze, dauerhaft verständliche Kürzel. Änderungen am Anzeigenamen dürfen die Bedeutung bereits gebuchter Codes nicht verfälschen.

Stationen

Eine Station hat nur zwei Felder: einen Namen (^[a-z][a-z0-9-]{0,63}$) und einen Anzeigenamen. Bei einem nicht leeren Stationsnamen prüft der Login von Bedienern und Planern den Eintrag gegen dieses Register; die Ausnahmen stehen im Kapitel Rollen & Stationen. Das Einspielen eines Profils registriert dessen Maschinen automatisch als Stationen, jeweils mit der Maschinen-ID als Name. Zusätzliche Terminals, etwa ein reiner Scan-Platz ohne eigene Maschine, legt ein Admin unter „Stationen“ an.

Auch das Speichern einer Station ist ein Upsert, hier über den Namen. Ein erneuter Seed-Lauf überschreibt eine schon vorhandene Station nicht: Ändert ein Admin später den Anzeigenamen, bleibt diese Änderung auch nach einem Neustart erhalten.

Abteilungen

Eine Abteilung ist ein Paar aus Gruppe und Ansicht, dazu eine optionale Bezeichnung für die Anzeige. Die Zuweisung erscheint als Kachel auf der Seite „Abteilungen“. Ihr Link öffnet die Ansicht mit der Gruppe im URL-Parameter capability. Einzelne Abteilungen erscheinen derzeit nicht zusätzlich als eigene Einträge in der Seitenleiste.

Wie Sie die Zuweisung anlegen oder entfernen und wie sich Abteilungen von angehefteten Ansichten unterscheiden, beschreibt Navigation & Erscheinungsbild.

Beispiele

status-melden action
{
  "name": "status-melden",
  "summary": "Status melden",
  "min_role": "operator",
  "params": [
    {
      "name": "machine",
      "kind": "text",
      "label": "Maschine",
      "source": "context",
      "required": true
    },
    {
      "name": "state",
      "kind": "select",
      "label": "Status",
      "source": "operator",
      "required": true,
      "options": [
        "running",
        "idle",
        "down",
        "maintenance"
      ]
    },
    {
      "name": "reason",
      "kind": "select",
      "label": "Grund",
      "source": "operator",
      "required": false,
      "options_source": "machine-reasons"
    }
  ],
  "steps": [
    {
      "command": "machine.set_state",
      "bind": {
        "machine": {
          "param": "machine"
        },
        "reason": {
          "param": "reason"
        },
        "state": {
          "param": "state"
        }
      }
    }
  ]
}
Mit dem Assistenten
Terminal-Aktion, mit der ein Bediener den Maschinenstatus meldet, mit optionalem Grund aus dem Maschinen-Katalog.

Der Grund ist ein select-Param mit options_source: machine-reasons, also der verwalteten Grund-Code-Liste für Maschinenzustände. Er ist nicht required: Ein Statuswechsel ohne Grund bleibt möglich, etwa beim normalen Wechsel auf running. Trägt der Bediener trotzdem einen Grund ein, muss es ein aktiver Code aus genau diesem Katalog sein; ein deaktivierter oder erfundener Code wird durch dieselbe Prüfung abgelehnt, die auch am Katalog selbst gilt.

maschine-leeren action
{
  "name": "maschine-leeren",
  "summary": "Restmenge der aktiven Kiste an dieser Maschine als Ausschuss abschließen.",
  "min_role": "operator",
  "params": [
    {
      "name": "machine",
      "kind": "text",
      "label": "Maschine",
      "source": "context",
      "required": true
    },
    {
      "name": "reason_codes",
      "kind": "select",
      "label": "Grund",
      "source": "operator",
      "required": true,
      "options_source": "box-close-reasons"
    }
  ],
  "steps": [
    {
      "command": "lot.close_empty",
      "bind": {
        "machine": {
          "param": "machine"
        },
        "reason_codes": {
          "param": "reason_codes"
        }
      }
    }
  ]
}
Mit dem Assistenten
Terminal-Aktion, die die Restmenge der aktiven Kiste an einer Maschine mit Ausschuss-Grund abschließt.

Der Grund kommt hier als Pflichtfeld, mit options_source: box-close-reasons. Ohne gültigen Code aus diesem Katalog gibt es keine Buchung: lot.close_empty lehnt den Aufruf ab. Anders als bei status-melden ist der Grund hier keine Kür, sondern die einzige Angabe, die der Bediener überhaupt macht; die Maschine liefert den Kontext, die Kiste löst die Aktion selbst auf.

Fallstricke