Centurio System- & moduldokumentation
🏛️ Plattformarkitektur 🔑 Login
🏠 Alla moduler / manufacturing_execution / Tillverkning och konfektionering
🔧

Tillverkning och konfektionering

assembly manufacturing_execution 🛡️ RLS Protected

Tillverkningsanordningar, tillverkning av bygggrupper, flerstödliga varulistanter och komponenttillverkning.

Fachliche Bestimmung: Stödjer montering och konfiguration av produkter av enskilda komponenter. Hanterar beståndslistor (Bill of Materials) med utskott och rustningstider.

⚡ Arbetsflöden och livscykler

Benutzerbefehl: assembly general agent plan:command_assembly_general_agent

Tjänststyrd plan (durable_plan), start: manual_command.

1. assembly_general_agent
assembly_general_agent
{"key": "execute_command", "label": "Befehl prüfen, ausführen oder zur Freigabe vorlegen", "adapter": "agent.execute", "agent": "assembly_general_agent", "condition_fact": null}
Aktionen: assembly_general_agent

Tillverkningsanordningar status:assembly_order

Observable_only_observable_state machine.

1. draft
Förberedande
Status <unk>utkast <unk> till produktionsuppdrag för den anläggningstillstillstillverkning.
2. planned
Planerat
Status <unk>planerad<unk> av den tillståndsmaskin som tillverkas.
3. in_progress
in_progress
Status <unk>in_progress<unk> av den tillståndstillverkade maskinens tillverkningsuppdrag.
4. on_hold
on_hold
Status <unk>on_hold<unk> av den anläggningsmaskin som tillverkas.
5. waiting_external
waiting_external
Status <unk>waiting_external<unk> av den tillståndsmaskin som tillverkas.
6. completed
fullbordade
Status <unk>förklarad<unk> av den anläggningsmaskin som tillverkas.
7. cancelled
Avbokade
Status <unk>annuleras<unk> av den tillståndsmaskin som tillverkas.

⚙️ Fachprozesse & Capabilities (System-Fachlogik)

Registrierte Fachoperationen und System-Capabilities dieses Moduls zur Steuerung von Workflows, Kaskaden und KI-Agenten.

Gesamt: 63 manual_entry: 1 engine: 58 operator_surface: 1 engine_step: 1 durable_plan: 1 observable_only: 1
Capability & Schlüssel Fachliche Bezeichnung Ausführung / Coverage Risikostufe & Freigabe Effekte & Kaskaden
Agent-Einstieg assembly_general_agent agent_entry:assembly_general_agent
Agent-Einstieg assembly_general_agent
Quelle: code:module_agent_map
manual_entry
✓ Auto
Keine Seiteneffekte deklariert
Kuppel- / Nebenprodukt zu Stückliste hinzufügen capability:assembly.add_bom_byproduct
Op: assembly.add_bom_byproduct
Intent: add_bom_byproduct
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • product_bom.byproduct_added
Assembly: add bom byproduct capability:assembly.assembly.add_bom_byproduct
Op: assembly.assembly.add_bom_byproduct
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.add_bom_byproduct
Assembly: add item capability:assembly.assembly.add_item
Op: assembly.assembly.add_item
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.add_item
Assembly: add step capability:assembly.assembly.add_step
Op: assembly.assembly.add_step
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.add_step
Assembly: approve remainder reuse capability:assembly.assembly.approve_remainder_reuse
Op: assembly.assembly.approve_remainder_reuse
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.approve_remainder_reuse
Assembly: approve scrap override capability:assembly.assembly.approve_scrap_override
Op: assembly.assembly.approve_scrap_override
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.approve_scrap_override
Assembly: assign order to workstation capability:assembly.assembly.assign_order_to_workstation
Op: assembly.assembly.assign_order_to_workstation
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.assign_order_to_workstation
Assembly: assign picking to workstation capability:assembly.assembly.assign_picking_to_workstation
Op: assembly.assembly.assign_picking_to_workstation
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.assign_picking_to_workstation
Assembly: cancel capability:assembly.assembly.cancel
Op: assembly.assembly.cancel
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.cancel
Assembly: checkin workstation capability:assembly.assembly.checkin_workstation
Op: assembly.assembly.checkin_workstation
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.checkin_workstation
Assembly: checkout workstation capability:assembly.assembly.checkout_workstation
Op: assembly.assembly.checkout_workstation
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.checkout_workstation
Assembly: complete capability:assembly.assembly.complete
Op: assembly.assembly.complete
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.complete
Assembly: complete journaled capability:assembly.assembly.complete_journaled
Op: assembly.assembly.complete_journaled
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.complete_journaled
Assembly: complete tool maintenance capability:assembly.assembly.complete_tool_maintenance
Op: assembly.assembly.complete_tool_maintenance
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.complete_tool_maintenance
Assembly: create bom capability:assembly.assembly.create_bom
Op: assembly.assembly.create_bom
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.create_bom
Assembly: create order capability:assembly.assembly.create_order
Op: assembly.assembly.create_order
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.create_order
Assembly: create order from bom capability:assembly.assembly.create_order_from_bom
Op: assembly.assembly.create_order_from_bom
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.create_order_from_bom
Assembly: create order from order line capability:assembly.assembly.create_order_from_order_line
Op: assembly.assembly.create_order_from_order_line
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.create_order_from_order_line
Assembly: create tool capability:assembly.assembly.create_tool
Op: assembly.assembly.create_tool
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.create_tool
Assembly: create workstation capability:assembly.assembly.create_workstation
Op: assembly.assembly.create_workstation
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.create_workstation
Assembly: delete bom capability:assembly.assembly.delete_bom
Op: assembly.assembly.delete_bom
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.delete_bom
Assembly: delete workstation capability:assembly.assembly.delete_workstation
Op: assembly.assembly.delete_workstation
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.delete_workstation
Assembly: receive step external capability:assembly.assembly.receive_step_external
Op: assembly.assembly.receive_step_external
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.receive_step_external
Assembly: record item yield capability:assembly.assembly.record_item_yield
Op: assembly.assembly.record_item_yield
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.record_item_yield
Assembly: record material consumption capability:assembly.assembly.record_material_consumption
Op: assembly.assembly.record_material_consumption
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.record_material_consumption
Assembly: record partial completion capability:assembly.assembly.record_partial_completion
Op: assembly.assembly.record_partial_completion
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.record_partial_completion
Assembly: record qc form capability:assembly.assembly.record_qc_form
Op: assembly.assembly.record_qc_form
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.record_qc_form
Assembly: record step checklist capability:assembly.assembly.record_step_checklist
Op: assembly.assembly.record_step_checklist
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.record_step_checklist
Assembly: record tool cycles capability:assembly.assembly.record_tool_cycles
Op: assembly.assembly.record_tool_cycles
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.record_tool_cycles
Assembly: remove item capability:assembly.assembly.remove_item
Op: assembly.assembly.remove_item
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.remove_item
Assembly: resume capability:assembly.assembly.resume
Op: assembly.assembly.resume
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.resume
Assembly: send step external capability:assembly.assembly.send_step_external
Op: assembly.assembly.send_step_external
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.send_step_external
Assembly: set changeover rule capability:assembly.assembly.set_changeover_rule
Op: assembly.assembly.set_changeover_rule
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.set_changeover_rule
Assembly: start capability:assembly.assembly.start
Op: assembly.assembly.start
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.start
Assembly: update bom capability:assembly.assembly.update_bom
Op: assembly.assembly.update_bom
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.update_bom
Assembly: update item capability:assembly.assembly.update_item
Op: assembly.assembly.update_item
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.update_item
Assembly: update step capability:assembly.assembly.update_step
Op: assembly.assembly.update_step
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.update_step
Assembly: update workstation capability:assembly.assembly.update_workstation
Op: assembly.assembly.update_workstation
Objekt: assembly
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.update_workstation
Fertigungsauftrag einplanen capability:assembly.capacity.plan
Op: assembly.capacity.plan
Objekt: assembly_order
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly_order.planned
Materialverfügbarkeit prüfen capability:assembly.check_material_availability
Op: assembly.check_material_availability
Intent: check_assembly_availability
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: read_only
Keine Seiteneffekte deklariert
Avslutande av en tillverkningsavgift capability:assembly.complete
Op: assembly.complete
Intent: complete_assembly_order
Quelle: code:capability_registry
⚙️ Engine
🔒 Freigabe nötig Risiko: business_record
  • assembly_order.completed
  • post_assembly_stock
  • downstream_destination_routing
Fertigungsauftrag aus Stückliste capability:assembly.create_from_bom
Op: assembly.create_from_bom
Intent: create_assembly_from_bom
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly_order.created
  • bom.exploded
Bedarf → Fertigungsauftrag docken capability:assembly.create_from_order_line
Op: assembly.create_from_order_line
Intent: dock_demand_to_mo
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly_order.created
  • demand.docked
MRP capability:assembly.mrp.run
Op: assembly.mrp.run
Objekt: mrp_run
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.mrp.run
Arbeitsplatz-Rüstzeit optimieren capability:assembly.optimize_workstation_sequence
Op: assembly.optimize_workstation_sequence
Intent: optimize_workstation_sequence
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • workstation.resequenced
Komponenten reservieren capability:assembly.order.reserve_components
Op: assembly.order.reserve_components
Objekt: assembly_order
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.order.reserve_components
Nacharbeit capability:assembly.order.rework
Op: assembly.order.rework
Objekt: assembly_order
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.order.rework
FA einplanen capability:assembly.order.schedule
Op: assembly.order.schedule
Objekt: assembly_order
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.order.schedule
Ausschuss capability:assembly.order.scrap
Op: assembly.order.scrap
Objekt: assembly_order
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly.order.scrap
Teil-Fertigmeldung erfassen capability:assembly.partial_complete
Op: assembly.partial_complete
Intent: record_assembly_partial_completion
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly_order.partial_completed
  • post_assembly_stock
  • downstream_destination_routing
Fertigungsauftrag planen capability:assembly.plan
Op: assembly.plan
Intent: reserve_assembly_materials
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly_order.planned
  • stock_reservation.created
Materialentnahme manuell erfassen capability:assembly.record_material_consumption
Op: assembly.record_material_consumption
Intent: record_assembly_consumption
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly_order_item.consumed
  • post_assembly_stock
Werkerführung / Schritt-Checkliste erfassen capability:assembly.record_step_checklist
Op: assembly.record_step_checklist
Intent: record_assembly_step_checklist
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly_order_step.checklist_updated
Werkzeug-Takte / Hübe erfassen capability:assembly.record_tool_cycles
Op: assembly.record_tool_cycles
Intent: record_tool_cycles
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • production_tool.cycles_updated
Fertigungsauftrag starten capability:assembly.start
Op: assembly.start
Intent: start_assembly_order
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly_order.started
Fehlteil / Material substituieren capability:assembly.substitute_item
Op: assembly.substitute_item
Intent: substitute_assembly_item
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • assembly_order_item.substituted
  • stock_reservation.updated
Avslutande av en tillverkningsavgift capability:complete_assembly_order
Op: complete_assembly_order
Intent: complete_assembly_order
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • engine:complete_assembly_order
CAD-Zeichnung importieren capability:uip.cad.import_drawing
Op: uip.cad.import_drawing
Intent: import_cad_drawing
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • cad.drawing.imported
  • product_bom.created
assembly_order: edit form form_surface_anchor:assembly_order.edit
Objekt: assembly_order
Quelle: code:erp_form_surface
operator_surface
✓ Auto
Keine Seiteneffekte deklariert
Avslutande av en tillverkningsavgift gateway:assembly_completion
Op: complete_assembly_order
Avslutande av en tillverkningsavgift
Quelle: code:reviewed_gateway
⚙️ Engine
✓ Auto
Keine Seiteneffekte deklariert
Benutzerbefehl: assembly general agent plan:command_assembly_general_agent
Benutzerbefehl: assembly general agent
Quelle: code:reviewed_execution_plan
durable_plan
✓ Auto
Keine Seiteneffekte deklariert
Tillverkningsanordningar status:assembly_order
Objekt: assembly_order
Quelle: code:status_machine
observable_only
✓ Auto
Keine Seiteneffekte deklariert

🧠 Fachprozess-Erzählung & Dual Knowledge Architektur

Synthese aus der ideologischen Blaupause (Meta-Fachlogik / Soll), der faktischen System-Implementierung (System-Fachlogik / Ist) und No-Code Customizing für KI-Consultants.

Dual Knowledge Layer
📖

Der durchgängige Businessprozess im Detail (End-to-End Fließtext-Erzählung)

Der durchgängige Fertigungsprozess in der betrieblichen Praxis

Die Fertigung in Centurio ERP bildet das operative Herz produzierender Unternehmen ab – vom mittelständischen Maschinenbauer über Lohnfertiger und Konfektionäre bis hin zu Serienproduzenten. Der Gesamtprozess verbindet Auftragsplanung, Konstruktion, Lagerlogistik, Werkstattsteuerung und Qualitätsmanagement zu einem nahtlosen Wertstrom.

1. Bedarfsentstehung & Auftragsinitiierung

Ein Fertigungsauftrag entsteht niemals isoliert, sondern entspringt stets einem betrieblichen Primärbedarf. In der Praxis existieren zwei grundlegende Auslöser:

  • Make-to-Order (Auftragsfertigung / Kundeneinzelfertigung): Ein bestätigter Kundenauftrag im Vertriebsmodul enthält eine kundenindividuelle Baugruppe oder ein Erzeugnis mit Sonderanfertigung. Die Verkaufsauftragszeile stößt über die Capability cap:assembly.create_order_from_order_line unmittelbar die Anlage eines verknüpften Fertigungsauftrags im Status Entwurf (draft) an. Belegverknüpfung und Liefertermin sind von Sekunde eins an synchronisiert.
  • Make-to-Stock (Lagerfertigung / Serienproduktion): Bei Standardartikeln überwacht der Bedarfsplanungslauf (MRP via cap:assembly.mrp.run) kontinuierlich die verfügbaren Lagerbestände (ATP) gegen den definierten Mindest- und Sicherheitsbestand. Fällt der prognostizierte Bestand unter den Meldebestand, generiert das System automatisch einen Fertigungsvorschlag mit optimierter Losgröße unter Berücksichtigung von Rüstkosten und Lagerhaltungskosten.

2. Stücklistenauflösung & Rezeptur (BOM / Bill of Materials)

Sobald der Fertigungsauftrag existiert, wird die Erzeugnisstruktur herangezogen. Die Stückliste (BOM) ist der verbindliche Bauplan des Artikels:

  • E-BOM vs. M-BOM: Konstruktionsdaten (z.B. CAD-Dateien im DXF- oder STEP-Format) definieren die funktionale Entwicklungsstückliste (Engineering-BOM). Vor Fertigungsfreigabe wird diese in eine fertigungsgerechte Manufacturing-BOM überführt, die Hilfsstoffe (Schrauben, Kleber, Kühlmittel), Verpackungsmaterialien und technologische Verschnittzuschläge enthält.
  • Multi-Level-Stücklistenauflösung: Über cap:catalog.bom.explode wird die Stückliste rekursiv aufgelöst. Handelt es sich um ein komplexes Endprodukt mit Unterbaugruppen (z.B. eine Schaltschranksteuerung), erzeugt das System hierarchisch kaskadierende Unter-Fertigungsaufträge, deren Fertigstellungstermine zeitlich auf den Hauptauftrag abgestimmt werden.

3. Arbeitsplan, Arbeitsplätze & Aufgaben-Sequenzierung

Parallel zur Materialstückliste definiert der Arbeitsplan die Arbeitsgangfolge:

  • Arbeitsplätze (Workstations): Physische oder logische Fertigungsressourcen (z.B. CNC-Fräszentrum 1, Laser-Schneidanlage, Handmontagetisch 3, Lackierkabine oder Prüffeld). Jeder Arbeitsplatz verfügt über hinterlegte Maschinen- und Personalkostenstundensätze, Schichtmodelle, maximale Kapazitäten und erforderliche Mitarbeiterqualifikationen.
  • Aufgaben (Assembly Steps / Operations): Jeder Fertigungsschritt ist als strukturierte Aufgabe mit Rüstzeit ($t_r$), Stückbearbeitungszeit ($t_e$) und Arbeitsanweisung modelliert. Über cap:assembly.order.schedule und cap:assembly.assembly.assign_order_to_workstation disponiert der Fertigungsleiter die Aufträge auf die Arbeitsplätze, vermeidet Engpässe und minimiert Liegezeiten.

4. Materialverfügbarkeitsprüfung & Fehlteil-Nachschub (Replenishment)

Bevor ein Fertigungsauftrag vom Status Geplant (planned) in die Werkstatt freigegeben werden darf, erzwingt das System eine strenge Verfügbarkeitsprüfung (ATP – Available-to-Promise) über cap:assembly.check_material_availability:

  • Material vorhanden: Alle benötigten Rohstoffe, Halbzeuge und Normteile werden im Hauptlager für den Auftrag hart reserviert (cap:assembly.order.reserve_components).
  • Verzweigung bei Fehlteilen (Material Shortage): Fehlen Komponenten, wird der Auftrag nicht stillschweigend blockiert. Stattdessen löst das System automatisch den Nachschub-Prozess (Replenishment Cascade) aus: Liegen die Fehlteile in einem anderen Lagerbereich (z.B. Hochregal-Zentrallager), wird ein interner Umlagerungsauftrag an das Arbeitsplatz-Pufferlager generiert. Handelt es sich um Zukaufteile, erzeugt das Einkaufsmodul (purchasing) sofort eine priorisierte Bedarfsanforderung (BANF) oder einen Bestellvorschlag.

5. Bereitstellung & der Pickvorgang (Materialbereitstellung)

Liegt die Materialdeckung vor, startet der logistische Pickvorgang:

  • Anhand einer wegeoptimierten Pickliste entnimmt der Lagerist (Picker) die Komponenten aus den Fachkoordinaten des Hauptlagers.
  • Über cap:assembly.assembly.assign_picking_to_workstation wird das Material physisch und buchhalterisch an das Bereitstellungslager bzw. den Pufferlagerplatz des Ziel-Arbeitsplatzes umgelagert. Der Werker an der Maschine findet pünktlich zu Schichtbeginn sämtliche Bauteile griffbereit vor.

6. Operative Bearbeitung an Arbeitsplätzen & BDE-Zeiterfassung

Nun beginnt die Wertschöpfungsphase in der Werkstatt:

  • Check-in am Arbeitsplatz: Der zugewiesene Werker meldet sich am BDE-Terminal (Betriebsdatenerfassung) oder Werkstatt-Tablet an und checkt für den spezifischen Arbeitsgang ein (cap:assembly.assembly.checkin_workstation).
  • Auftragsstart: Über cap:assembly.start wechselt der Fertigungsauftrag in den Status In Arbeit (in_progress).
  • Timesynchrone Erfassung: Das System protokolliert sekundengenau die reale Maschinenlaufzeit und die Personalarbeitszeit. Unterbrechungen (z.B. Werkzeugwechsel, Materialrüsten, Warten auf Gabelstapler) können mit spezifischen Unterbrechungsgründen erfasst werden.
  • Check-out: Nach Beendigung des Arbeitsschritts meldet sich der Werker ab (cap:assembly.assembly.checkout_workstation), wodurch die Ist-Zeiten direkt im Fertigungsjournal festgeschrieben werden.

7. Sonderverzweigung: Fremdbearbeitung / Verlängerte Werkbank (Subcontracting)

Nicht alle Arbeitsgänge können oder sollen im eigenen Werk ausgeführt werden (z.B. Härten, Eloxieren, Pulverbeschichten, Verzinken, Lasergravur):

  • Erreicht der Auftrag einen fremdvergebenen Arbeitsgang, löst cap:assembly.assembly.send_step_external eine Sonderkaskade aus: Der Auftrag wechselt in den Zustand Wartet extern (waiting_external).
  • Das System generiert automatisch einen Lieferschein für Beistellmaterialien an den Lohnveredeler und bindet die entsprechende Einkaufsbestellung für die Dienstleistung an.
  • Nach Rücklieferung prüft der Wareneingang die Güte der Veredelung und bucht die Position über cap:assembly.assembly.receive_step_external wieder ein. Der Fertigungsauftrag springt zurück auf In Arbeit für die Endmontage.

8. End-of-Line Qualitätskontrolle (QC) & Gut-/Ausschussmengen

Vor dem Schließen des Auftrags muss das Produkt die Qualitätskontrolle passieren:

  • Der Werker oder Qualitätsprüfer ruft das hinterlegte QC-Prüfformular auf (cap:assembly.assembly.record_qc_form). Messwerte (z.B. Drehmomente, Toleranzmaße in mm, Isolationswiderstände, Lackschichtdicken) werden erfasst und gegen die oberen und unteren Grenzwerte (Toleranzen) abgeglichen.
  • Über cap:assembly.assembly.record_item_yield werden die erzielte Gutmenge (Yield) und fehlerhafte Ausschussmengen (Scrap) deklariert.

9. Ausnahmezweig: Ausschuss-Sonderfreigabe & Restmengen-Verwertung

Treten während der Produktion Fehler auf, greift das Resilienz- und Materialmanagement:

  • Schrott-Toleranzüberschreitung: Liegt die Ausschussquote über dem stücklistenbezogenen Schwellenwert (z.B. > 2%), sperrt das System den regulären Abschluss. Es entsteht eine zwingende Genehmigungspflicht: Der Produktionsleiter muss den Ausschuss begutachten und über cap:assembly.assembly.approve_scrap_override autorisieren.
  • Restmengen & Verschnittverwertung (Remainder Reuse): Bleiben wertvolle Reste übrig (z.B. Profilrohre, Blechabschnitte, Rest-Kabelrollen), werden diese nicht entsorgt, sondern als AssemblyRemnant erfasst. Über cap:assembly.assembly.approve_remainder_reuse werden sie mit Restmengenmaßen und reduziertem Buchwert zurück ins Lager gebucht, sodass sie für spätere Aufträge reservierbar bleiben.

10. Transaktionssicherer Gateway-Abschluss & Soll-Ist-Nachkalkulation

Der finale Schritt erfolgt über den systemgeprüften Gateway gw:assembly_completion@v1:

  • Atomare Validierung: Der Gateway verifiziert in einer einzigen Datenbanktransaktion: Sind alle Pflicht-Arbeitsgänge abgearbeitet? Ist das QC-Formular positiv quittiert? Wurde bei Fremdbearbeitung die Rücklieferung eingebucht? Wurde eventueller Über-Ausschuss vom Betriebsleiter freigegeben?
  • Bestandsbuchungen: Bei erfolgreicher Prüfung bucht der Gateway:
    1. Das Fertigerzeugnis mit neu generierter Chargennummer und Seriennummer ins Fertigwarenlager auf (StockMove: IN).
    2. Sämtliche verbrauchten Komponenten aus dem Arbeitsplatz-Pufferlager endgültig ab (StockMove: CONSUMPTION).
  • Soll-Ist-Nachkalkulation: Gleichzeitig zieht das Controlling-Modul Bilanz: Standard-Herstellkosten (Plan-Material + Plan-Maschinenstunden + Plan-Werkerstunden) werden den real gebuchten Verbräuchen und Zeiten gegenübergestellt. Deckungsbeitragsabweichungen werden transparent im Fertigungsjournal ausgewiesen.
  • Folgekaskade: Der Auftrag wechselt auf Abgeschlossen (completed). Das Outbox-Signal ASSEMBLY_ORDER_STATUS_CHANGED informiert das Vertriebsmodul: Die Kundenauftragszeile schaltet auf versandbereit und wird für die Touren- und Paketlogistik freigegeben.
🏛️

Meta-Fachlogik: Ideologische Blaupause, Soll-Weltbild & Normen

Meta-Fachlogik: Die ideologische Blaupause & das normative Weltbild

Die Meta-Fachlogik beschreibt das theoretische, ingenieurwissenschaftliche und regulatorische Soll-Modell, dem eine exzellente Produktionsorganisation folgen muss. Sie bildet die begriffliche und normative Referenz für Consultants und KI-Agenten, um Lücken in Kundenprozessen aufzudecken und Best Practices durchzusetzen.

1. Philosophische Grundlagen der Produktion

  • Lean Production & TPS (Toyota Production System): Das oberste Ziel der Fertigung ist die Maximierung der Wertschöpfung bei vollständiger Eliminierung jeglicher Verschwendung (Muda). Es gelten die Prinzipien:
    • Vermeidung von Überproduktion: Es wird nur produziert, was durch einen echten Kundenauftrag (Pull / Make-to-Order) oder einen verifizierten Mindestbestandspuffer (Kanban) angefordert wird.
    • Vermeidung von Liege- und Pufferzeiten: Material soll nicht ungenutzt in Werkstattpuffern lagern. Die Durchlaufzeit (Lead Time) vom ersten Arbeitsgang bis zur Fertigmeldung wird minimiert.
    • One-Piece-Flow & Taktzeit: Arbeitsplätze werden so getaktet, dass Werkstücke ohne Zwischenlagerung von Arbeitsgang zu Arbeitsgang fließen.
  • Gesamtanlageneffektivität (OEE - Overall Equipment Effectiveness): Die Produktivität jedes Arbeitsplatzes bemisst sich nach der Trias: $$\text{OEE} = \text{Verfügbarkeitsfaktor} \times \text{Leistungsfaktor} \times \text{Qualitätsfaktor}$$ Ausfälle, Geschwindigkeitsverluste und Ausschuss werden lückenlos im System sichtbar gemacht.

2. Normative Standards & Industrievorschriften

  • REFA-Methodenlehre (Arbeitsstudien & Zeitwirtschaft):
    • Strikte Trennung von Rüstzeit ($t_r$) (Vorbereitung der Maschine, Werkzeugwechsel, Programmierung) und Ausführungszeit ($t_e$) (Stückbearbeitung).
    • Gliederung der Auftragszeit in Grundzeit, Erholzeit ($t_{er}$) zur Wahrung des Arbeitsschutzes und Verteilzeit ($t_v$) für sachliche und persönliche Störungen.
  • DIN 8580 (Einteilung der Fertigungsverfahren):
    • Systematische Gliederung aller technologischen Arbeitsgänge in Urformen (Gießen, Spritzguss), Umformen (Biegen, Walzen), Trennen (Fräsen, Drehen, Lasern), Fügen (Schweißen, Schrauben, Kleben), Beschichten (Lackieren, Galvanisieren) und Stoffeigenschaft ändern (Härten, Vergüten).
  • DIN EN ISO 9001:2015 & IATF 16949 (Qualitätsmanagement & Traceability):
    • Forderung nach lückenloser Rückverfolgbarkeit (Traceability): Jedes verbaute Bauteil muss über Chargennummer und Seriennummer einem spezifischen Endprodukt zugeordnet werden können (Closed-Loop-Traceability).
    • Verbindliche Dokumenten- und Prüfzeugnispflicht nach EN 10204 (z.B. Werksprüfzeugnis 2.2, Abnahmeprüfzeugnis 3.1) für sicherheitsrelevante Werkstoffe.
  • HGB § 255 Abs. 2 & GoBD (Kaufmännische Bewertung & Nachkalkulation):
    • Herstellkosten dürfen nur Materialeinzelkosten, Fertigungseinzelkosten (Löhne) und angemessene Teile der Material- und Fertigungsgemeinkosten enthalten.
    • Das GoBD-Festschreibungsgebot verlangt, dass gebuchte Fertigungsjournale nach Periodenabschluss unveränderbar und revisionssicher archiviert sind.

3. Invarianten des Soll-Modells

Im Soll-Modell gelten unumstößliche Invarianten:

  1. Kein Fertigungsstart ohne Materialverfügbarkeit oder dokumentierten Freigabeentscheid (Shortage Clearance).
  2. Keine Materialentnahme aus dem Lager ohne bucherischen Beleg (Pickliste / Warenausgang).
  3. Kein Erzeugnisabschluss ohne verifiziertes QC-Prüfprotokoll.
  4. Keine eigenmächtige Ausbuchung von Ausschuss oberhalb der Toleranzgrenze ohne Autorisierung durch den Produktionsleiter.
  5. Keine nachträgliche Veränderung der Nachkalkulation nach Abschluss des Fertigungsjournals.
⚙️

Systemische Fachlogik: Faktische Umsetzung in Centurio ERP & Capabilities

Systemische Fachlogik: Die faktische Umsetzung in Centurio ERP

Die System-Fachlogik beschreibt, wie Centurio ERP das normative Soll-Modell in seiner Code- und Datenbankarchitektur realisiert. Sie listet die real existierenden Entitäten, Capabilities, Zustandsmaschinen und Gateways auf, die dem Systemwissens-Compiler (CSKB) zugrunde liegen.

1. Datenmodelle & Semantische Schicht (ORM)

Das Modul assembly stützt sich auf folgende relationale Tabellen mit PostgreSQL Row-Level-Security (RLS):

  • AssemblyOrder: Der Fertigungsauftragskopf (Felder: id, tenant_id, order_number, status, product_id, planned_quantity, produced_quantity, scrap_quantity, planned_start, planned_end, sales_order_line_id, bom_id).
  • AssemblyItem: Stücklisten-Komponenten des Auftrags (Felder: assembly_order_id, product_id, lot_id, planned_quantity, reserved_quantity, consumed_quantity, is_remainder).
  • AssemblyStep: Sequenzierte Arbeitsgänge (Felder: assembly_order_id, step_sequence, name, workstation_id, setup_time_minutes, duration_minutes, is_external, external_vendor_id, status).
  • Workstation: Physische Ressourcen (Felder: name, location_id, hourly_rate, capacity_hours_per_day, is_active).
  • AssemblyYieldRecord: Dokumentation der Ausbringung (Gutmenge, Schrottmenge, Prüfer-ID, Zeitstempel).
  • AssemblyScrapOverride: Autorisierungsdatensatz für Schrottmengen oberhalb der Toleranzgrenze.
  • AssemblyRemnant: Schnittreste und Überbleibsel mit Maßen und Restwert.

2. Das Capability-Register (Ausführungsbausteine)

Folgende Capabilities bilden die atomaren Aktionen des Moduls:

  • cap:assembly.assembly.create_bom: Stücklistenverwaltung und Versionierung.
  • cap:catalog.bom.explode: Rekursive Multi-Level-Stücklistenauflösung.
  • cap:assembly.mrp.run: Materialbedarfsrechnung über Bestände, Reservierungen und Mindestmengen.
  • cap:assembly.create_order_from_order_line: Koppelung von Verkaufsaufträgen an Fertigungsaufträge.
  • cap:assembly.order.reserve_components: Hard-Reservation von Lagerbeständen für Fertigungsaufträge.
  • cap:assembly.check_material_availability: ATP-Prüfung und Fehlteil-Detektion.
  • cap:assembly.assembly.assign_picking_to_workstation: Generierung und Umlagerung via Pickliste an den Pufferlagerplatz.
  • cap:assembly.start: Zustandsübergang von planned zu in_progress.
  • cap:assembly.assembly.checkin_workstation: Beginn der Betriebsdatenerfassung an einer Workstation.
  • cap:assembly.assembly.checkout_workstation: Abschluss der Zeiterfassung an einer Workstation.
  • cap:assembly.assembly.send_step_external: Auslagerung an verlängerte Werkbank (Beistelllieferschein).
  • cap:assembly.assembly.receive_step_external: Rückbuchung und Wareneingangskontrolle der Lohnfertigung.
  • cap:assembly.assembly.record_qc_form: Erfassung von Messdaten und Checklisten zur Qualitätssicherung.
  • cap:assembly.assembly.record_item_yield: Erfassung von Gutmenge und Ausschuss.
  • cap:assembly.assembly.approve_scrap_override: Vier-Augen-Freigabe bei Schrott-Toleranzverletzung.
  • cap:assembly.assembly.approve_remainder_reuse: Einbuchung von Restmengen in das Rohstofflager.

3. Der geprüfte Abschluss-Gateway (gw:assembly_completion@v1)

Der Gateway ist die zentrale Transaktionssicherung. Er führt keine isolierte Teilbuchung aus, sondern garantiert ACID-Integrität:

Start ➔ Prüfung Vertrag & Toleranz ➔ QC-Status verifizieren ➔ Freigabeprüfung ➔ Atomare Buchung ➔ Journalfestschreibung ➔ Outbox-Signal
  1. Prüfung: Sind alle AssemblySteps beendet? Ist ein gültiger AssemblyYieldRecord vorhanden?
  2. Freigabeschranke: Übersteigt scrap_quantity den Toleranzwert und liegt kein genehmigtes AssemblyScrapOverride vor, bricht der Gateway mit HTTP 422 und Fehlermeldung ab.
  3. Buchung: In einer einzigen DB-Transaktion wird AssemblyOrder.status = 'completed' gesetzt, StockMove für das Fertigteil erzeugt, Verbräuche der AssemblyItems final gebucht und die Nachkalkulation im GeneralLedger gesperrt.
  4. Signal: Das Event ASSEMBLY_ORDER_STATUS_CHANGED wird in die transaktionale Outbox geschrieben.

4. Zustandsmaschine & Lebenszyklus

Der Zustandspfad eines Fertigungsauftrags ist wie folgt determiniert: draft (Entwurf) ➔ planned (Disposition & Reservierung) ➔ in_progress (Werkstattbearbeitung) ➔ waiting_external (Lohnfertigung) / on_hold (Wartung/Störung) ➔ completed (Gateway-Abschluss) oder cancelled (Stornierung mit Freigabe aller Reservierungen).

🤖

KI-Consultant Leitfaden: Customizing- & No-Code-Konzept (Soll-Ist-Synthese)

AI Solution Architect Blueprint

KI-Consultant Blueprint: Customizing & No-Code Architektur

Dieser Leitfaden dient Solution Architects und autonomen KI-Consultants als konkrete Handlungsvorlage, um kundenspezifische Fertigungsprozesse auf der No-Code-Engine von Centurio ERP zu planen und fehlerfrei auszurollen.

1. Analyse der Kundenanforderung (Soll-Ist-Abgleich)

Der Berater prüft zunächst, an welchen Stellen der Kundenprozess vom Standard abweicht:

  • Werden branchenspezifische Zusatzinformationen benötigt (z.B. Schmelzennummer bei Stahl, Chargenzertifikat EN 10204 3.1, Maschinen-Werkzeug-ID)?
  • Gibt es abweichende Freigabeschwellen (z.B. schon ab 1% Ausschuss Freigabepflicht durch die Geschäftsleitung)?
  • Werden automatische Nachschub-Kaskaden oder externe Benachrichtigungen gewünscht?

2. No-Code Zusatzfelder (Custom Fields)

Im No-Code Customizing Studio (/semantic/customizing) legt der Consultant folgende Zusatzfelder auf den Standard-Entitäten an:

  • Auf AssemblyOrder:
    • en10204_certificate_type (Auswahlliste: Ohne, 2.2 Werkszeugnis, 3.1 Abnahmeprüfzeugnis): Steuert die Anforderung an das QC-Team.
    • tool_serial_number (Text): Zur lückenlosen Erfassung der verwendeten Stanz- oder Fräswerkzeuge.
    • ambient_humidity_percent (Dezimal): Pflichtfeld für feuchtigkeitsempfindliche Klebe- oder Lackierprozesse.
  • Auf Workstation:
    • next_maintenance_due (Datum): Wartungsintervall zur automatischen Sperre bei Wartungsüberziehung.
    • cleanroom_classification (Auswahlliste: ISO 5, ISO 7, Standard): Verhindert Fehlbelegungen hochsensibler Aufträge.
  • Auf StockLot:
    • quarantine_reason (Text): Begründung bei gesperrten Chargen.

3. No-Code Workflow Canvas DAG (Directed Acyclic Graph)

Über die grafische Canvas-Engine werden maßgeschneiderte Prozessautomatisierungen ohne Programmierung modelliert:

Blueprint A: Automatischer Nachschub-Workflow (Replenishment DAG)
  • Trigger-Node: Event ASSEMBLY_MATERIAL_SHORTAGE (Wird gefeuert, wenn check_material_availability Fehlteile meldet).
  • Condition-Node: shortage_amount > 0 AND item.lead_time_days > 2.
  • Branch A (Puffer vorhanden): Node ruft Capability cap:inventory.stock.transfer auf, um die Fehlmenge vom Hochregallager an den Bereitstellungspuffer der Workstation umzubuchen.
  • Branch B (Zukaufteil fehlt): Node ruft cap:purchasing.purchase_request.create auf und erzeugt einen priorisierten Einkaufs-Draft mit Referenz zur Fertigungsauftragsnummer.
Blueprint B: Schrott-Eskalations- und Freigabeworkflow (Scrap Gate DAG)
  • Trigger-Node: cap:assembly.assembly.record_item_yield meldet scrap_quantity > 0.
  • Expression-Node: Formel: (scrap_quantity / (yield_quantity + scrap_quantity)) * 100 > threshold_percent.
  • Human-in-the-Loop Gate: Erzeugt eine blockierende Prüfaufgabe für den Fertigungsleiter:
    • Option A: Genehmigen ➔ Ruft cap:assembly.assembly.approve_scrap_override auf.
    • Option B: Ablehnen / Nacharbeit ➔ Sperrt den Auftrag (status = 'on_hold') und generiert automatisch einen Nacharbeitsauftrag.

4. Validierungsregeln & Formular-Customizing

  • Mengen-Invarianten: Expression Rule im Formular: yield_quantity + scrap_quantity <= planned_quantity * 1.1 (Verhindert fehlerhafte Mengeneingaben).
  • Zeiterfassungs-Plausibilität: checkin_workstation verlangt eine aktive Werker-PIN; Buchungen über 12 Stunden am Stück lösen einen Warnhinweis nach Arbeitszeitgesetz (ArbZG) aus.

📚 Operative Prozessbegriffe & Transaktionsschnittstellen

Zentrale Fachbegriffe im Prozesszusammenhang (Operatives Modell)
Stückliste (BOM / Bill of Materials)
Hierarchische Auflösung aller Rohstoffe, Vorprodukte und Baugruppen inklusive Mengen und Verschnittzuschlägen.
Arbeitsplätze (Workstations)
Produktionsressourcen (CNC-Maschine, Montageplatz, Lackierstraße) mit Kostenstundensätzen und Kapazität.
Aufgaben / Arbeitsgänge (Operations)
Sequenzierte Arbeitsschritte mit Rüstzeit, Stückzeit, Arbeitsanweisung und Qualifikationsprofil.
Pickvorgang (Materialentnahme)
Gezielte Auslagerung benötigter Komponenten aus dem Lager und Bereitstellung am Arbeitsplatz.
Nachschub (Replenishment)
Automatisches Anstoßen von Umlagerungen oder Beschaffung bei Unterschreitung von Meldebeständen am Arbeitsplatz.
Lohnveredelung (Subcontracting)
Auslagerung einzelner Fertigungsschritte an externe Dienstleister mit Beistellmaterialien.
BDE-Zeiterfassung (Check-in/out)
Exakte Betriebsdatenerfassung realer Maschinen- und Personalzeiten an Arbeitsplätzen.
QC-Prüfformular
Verbindliches Qualitätsprotokoll mit Messwerten und Toleranzen vor Fertigstellung.
Soll-Ist-Nachkalkulation
Vergleich der kalkulierten Standardherstellkosten mit realen Zeiten und Materialverbräuchen.
📥 Eingänge & Trigger (Inputs)
  • Verkaufsauftrag mit Make-to-Order (MTO) Fertigungsposition
  • Bedarfsplanungslauf (MRP) bei Mindestbestandsunterschreitung (MTS)
  • CAD-Zeichnungsimport (DXF/STEP) zur Neuanlage einer Engineering-BOM
  • Manueller Fertigungsauftrag des Betriebsleiters oder Meisters
  • Nacharbeitsauftrag aus Qualitätsprüfung oder Reklamation
📤 Ausgänge & Arbeitsergebnisse (Outputs)
  • Eingebuchtes Fertigerzeugnis mit Chargen- und Seriennummer im Fertigwarenlager
  • Materialverbrauchs- und Schwundbuchungen auf GuV-Verbrauchskonten
  • BDE-Arbeitszeit- und Maschinenbelege an Arbeitsplätzen
  • Abgeschlossenes QC-Prüfprotokoll mit Messwerten und Werkerfreigabe
  • Fertigungsjournal mit Nachkalkulations-Deckungsbeitrag
  • Lieferfreigabe der Kundenauftragszeile für Versand und Logistik
⚡ Kaskaden & Folgeprozesse (Cascades)
  • sales_order_line_docking: Automatische Koppelung an Verkaufsauftragszeilen
  • replenishment_trigger: Automatischer Nachschubimpuls bei Fehlteilen
  • picking_order_generation: Erzeugung von Lagerentnahmeaufträgen für Komponenten
  • completion_stock_inward: Automatische Bestandsaufbuchung nach Abschluss-Gateway
  • sales_fulfillment_cascade: Statuswechsel der Kundenauftragszeile auf 'versandbereit'
  • rework_cascade: Erzeugung eines Nacharbeitsauftrags bei partieller QC-Beanstandung
🛡️ Nebenprozesse & Resilienz
  • Ausschuss- und Schwundmeldung bei Materialfehlern mit Nachforderungsbeleg
  • Rüstzeitkompensation und Maschinenwartungsanzeige bei Ausfall
  • Manuelle Nachkorrektur bei Buchungsabweichungen im Beistelllager
  • Sonderfreigabe bei minimaler Toleranzüberschreitung durch den Qualitätsmanager
💡 No-Code Checkliste & Praxistipps
  • Arbeitsplatz-Kostenstundensätze in Stammdaten hinterlegen für präzise Nachkalkulation
  • QC-Prüfformulare mit Pflichtfeldern für sicherheitskritische Baugruppen konfigurieren
  • Automatische Nachschubregeln zwischen Pufferlager und Hauptlager definieren
  • No-Code Zusatzfelder für Chargenzertifikate (EN 10204 3.1) auf AssemblyOrder anlegen

🗄️ Datamodeller & fält

AssemblyBatchMembers assembly_batch_members RLS Aktiv
14 Fält / kolumner

Tabelle assembly_batch_members

Feldname Uppgifter Förpliktelse Schlüssel Arbetsuppgifter
batch_id UUID Ja * FK ➔ assembly_batches.id Feld batch_id
order_id UUID Ja * FK ➔ assembly_orders.id Feld order_id
customer_id UUID Nein FK ➔ customers.id Feld customer_id
position INTEGER Ja * - Feld position
lot_code VARCHAR(64) Nein - Feld lot_code
quantity_in NUMERIC(14, 4) Ja * - Feld quantity_in
allocated_good NUMERIC(14, 4) Nein - Feld allocated_good
allocated_rework NUMERIC(14, 4) Nein - Feld allocated_rework
allocated_scrap NUMERIC(14, 4) Nein - Feld allocated_scrap
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
metadata JSONB Ja * - Feld metadata
AssemblyBatches assembly_batches RLS Aktiv
19 Fält / kolumner

Tabelle assembly_batches

Feldname Uppgifter Förpliktelse Schlüssel Arbetsuppgifter
title VARCHAR(255) Ja * - Feld title
status VARCHAR(24) Ja * - Feld status
master_order_id UUID Nein FK ➔ assembly_orders.id Feld master_order_id
allocation_method VARCHAR(16) Ja * - Feld allocation_method
pool_good NUMERIC(14, 4) Nein - Feld pool_good
pool_rework NUMERIC(14, 4) Nein - Feld pool_rework
pool_scrap NUMERIC(14, 4) Nein - Feld pool_scrap
started_at DATETIME Nein - Feld started_at
completed_at DATETIME Nein - Feld completed_at
notes TEXT Nein - Feld notes
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
AssemblyCores assembly_cores RLS Aktiv
24 Fält / kolumner

Tabelle assembly_cores

Feldname Uppgifter Förpliktelse Schlüssel Arbetsuppgifter
product_id UUID Ja * FK ➔ products.id Feld product_id
customer_id UUID Nein FK ➔ customers.id Feld customer_id
contract_id UUID Nein FK ➔ contracts.id Feld contract_id
serial_number VARCHAR(128) Nein - Feld serial_number
quantity NUMERIC(14, 4) Ja * - Feld quantity
unit VARCHAR(16) Ja * - Feld unit
status VARCHAR(24) Ja * - Feld status
condition_grade VARCHAR(16) Nein - Feld condition_grade
disposition VARCHAR(24) Nein - Feld disposition
inspection_notes TEXT Nein - Feld inspection_notes
location_id UUID Nein FK ➔ locations.id Feld location_id
stock_posted BOOLEAN Ja * - Feld stock_posted
received_at DATETIME Ja * - Feld received_at
assembly_order_id UUID Nein FK ➔ assembly_orders.id Feld assembly_order_id
notes TEXT Nein - Feld notes
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
AssemblyOrderItems assembly_order_items RLS Aktiv
33 Fält / kolumner

Tabelle assembly_order_items

Feldname Uppgifter Förpliktelse Schlüssel Arbetsuppgifter
order_id UUID Ja * FK ➔ assembly_orders.id Feld order_id
item_type VARCHAR(48) Ja * - Feld item_type
product_id UUID Nein FK ➔ products.id Feld product_id
description VARCHAR(500) Ja * - Feld description
quantity_planned NUMERIC(14, 4) Ja * - Feld quantity_planned
quantity_actual NUMERIC(14, 4) Nein - Feld quantity_actual
quantity_good NUMERIC(14, 4) Nein - Feld quantity_good
quantity_rework NUMERIC(14, 4) Nein - Feld quantity_rework
quantity_scrap NUMERIC(14, 4) Nein - Feld quantity_scrap
unit VARCHAR(16) Ja * - Feld unit
unit_cost NUMERIC(14, 2) Nein - Feld unit_cost
position INTEGER Ja * - Feld position
tracking_entries JSONB Nein - Feld tracking_entries
notes TEXT Nein - Feld notes
material_ownership VARCHAR(16) Ja * - Feld material_ownership
owner_customer_id UUID Nein FK ➔ customers.id Feld owner_customer_id
rework_attempts INTEGER Ja * - Feld rework_attempts
from_location_id UUID Nein FK ➔ locations.id Feld from_location_id
to_location_id UUID Nein FK ➔ locations.id Feld to_location_id
reservation_id UUID Nein FK ➔ stock_reservations.id Feld reservation_id
exploded_from_bom_id UUID Nein FK ➔ product_boms.id Feld exploded_from_bom_id
substituted_from_product_id UUID Nein FK ➔ products.id Feld substituted_from_product_id
substitution_reason TEXT Nein - Feld substitution_reason
is_substituted BOOLEAN Ja * - Feld is_substituted
is_byproduct BOOLEAN Ja * - Feld is_byproduct
cost_share_percent NUMERIC(6, 2) Nein - Feld cost_share_percent
consumption_policy VARCHAR(32) Ja * - Feld consumption_policy
is_consumed BOOLEAN Ja * - Feld is_consumed
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
metadata JSONB Ja * - Feld metadata
AssemblyOrderSteps assembly_order_steps RLS Aktiv
33 Fält / kolumner

Tabelle assembly_order_steps

Feldname Uppgifter Förpliktelse Schlüssel Arbetsuppgifter
order_id UUID Ja * FK ➔ assembly_orders.id Feld order_id
position INTEGER Ja * - Feld position
name VARCHAR(255) Ja * - Feld name
description TEXT Nein - Feld description
status VARCHAR(48) Ja * - Feld status
workstation_id UUID Nein FK ➔ workstations.id Feld workstation_id
estimated_minutes INTEGER Nein - Feld estimated_minutes
actual_minutes INTEGER Nein - Feld actual_minutes
image_url TEXT Nein - Feld image_url
image_urls JSONB Nein - Feld image_urls
completed_by UUID Nein FK ➔ users.id Feld completed_by
completed_at DATETIME Nein - Feld completed_at
notes TEXT Nein - Feld notes
is_external BOOLEAN Ja * - Feld is_external
supplier_id UUID Nein FK ➔ suppliers.id Feld supplier_id
external_ref VARCHAR(128) Nein - Feld external_ref
sent_at DATETIME Nein - Feld sent_at
received_at DATETIME Nein - Feld received_at
qty_sent NUMERIC(14, 4) Nein - Feld qty_sent
qty_received NUMERIC(14, 4) Nein - Feld qty_received
purchase_id UUID Nein FK ➔ purchases.id Feld purchase_id
purchase_item_id UUID Nein FK ➔ purchase_items.id Feld purchase_item_id
goods_receipt_id UUID Nein FK ➔ goods_receipts.id Feld goods_receipt_id
scheduled_date DATE Nein - Feld scheduled_date
schedule_plan JSONB Nein - Feld schedule_plan
checklist JSONB Nein - Feld checklist
tool_id UUID Nein FK ➔ production_tools.id Feld tool_id
tool_cycles_recorded INTEGER Ja * - Feld tool_cycles_recorded
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
metadata JSONB Ja * - Feld metadata
AssemblyOrders assembly_orders RLS Aktiv
47 Fält / kolumner

Tabelle assembly_orders

Feldname Uppgifter Förpliktelse Schlüssel Arbetsuppgifter
order_number VARCHAR(32) Ja * - Feld order_number
title VARCHAR(255) Ja * - Feld title
order_type VARCHAR(48) Ja * - Feld order_type
status VARCHAR(48) Ja * - Feld status
priority VARCHAR(16) Ja * - Feld priority
workstation_id UUID Nein FK ➔ workstations.id Feld workstation_id
assigned_user_id UUID Nein FK ➔ users.id Feld assigned_user_id
source_location_id UUID Nein FK ➔ locations.id Feld source_location_id
target_location_id UUID Nein FK ➔ locations.id Feld target_location_id
destination_routing VARCHAR(32) Ja * - Feld destination_routing
project_id UUID Nein FK ➔ projects.id Feld project_id
customer_id UUID Nein FK ➔ customers.id Feld customer_id
work_order_id UUID Nein FK ➔ work_orders.id Feld work_order_id
contract_id UUID Nein FK ➔ contracts.id Feld contract_id
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
scheduled_date DATE Nein - Feld scheduled_date
started_at DATETIME Nein - Feld started_at
completed_at DATETIME Nein - Feld completed_at
notes TEXT Nein - Feld notes
instructions TEXT Nein - Feld instructions
idempotency_key VARCHAR(128) Nein - Feld idempotency_key
picking_policy VARCHAR(32) Ja * - Feld picking_policy
warehouse_picking_id UUID Nein FK ➔ warehouse_pickings.id Feld warehouse_picking_id
contract_snapshot JSONB Nein - Feld contract_snapshot
scrap_override_approved BOOLEAN Ja * - Feld scrap_override_approved
remainder_reuse_approved BOOLEAN Ja * - Feld remainder_reuse_approved
subcontract_supplier_id UUID Nein FK ➔ suppliers.id Feld subcontract_supplier_id
scheduled_end_date DATE Nein - Feld scheduled_end_date
due_date DATE Nein - Feld due_date
conflict_override_approved BOOLEAN Ja * - Feld conflict_override_approved
conflict_override_reason TEXT Nein - Feld conflict_override_reason
batch_id UUID Nein FK ➔ assembly_batches.id Feld batch_id
source_bom_id UUID Nein FK ➔ product_boms.id Feld source_bom_id
bom_revision VARCHAR(32) Nein - Feld bom_revision
reserve_on_plan BOOLEAN Ja * - Feld reserve_on_plan
wip_location_id UUID Nein FK ➔ locations.id Feld wip_location_id
backflush_mode VARCHAR(16) Ja * - Feld backflush_mode
quantity_completed NUMERIC(14, 4) Ja * - Feld quantity_completed
partial_completions JSONB Nein - Feld partial_completions
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
metadata JSONB Ja * - Feld metadata

🔌 Inledande punkter (UI & API)

Art Förberedelse Slutpunkt / väg Titel & Zweck Förmåga
⚡ REST API DELETE /api/v1/assembly/batches/{batch_id}/members/{order_id}
remove_batch_member
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API DELETE /api/v1/assembly/boms/{bom_id}
delete_bom
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API DELETE /api/v1/assembly/boms/{bom_id}/sop-documents/{document_id}
detach_bom_sop_document
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API DELETE /api/v1/assembly/items/{item_id}
remove_item
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API DELETE /api/v1/assembly/orders/{order_id}/sop-documents/{document_id}
detach_order_sop_document
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API DELETE /api/v1/assembly/workstations/{ws_id}
delete_workstation
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API DELETE /api/v1/assembly/workstations/{ws_id}/calendar/{exception_id}
delete_calendar_exception
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API GET /api/v1/assembly/batches
list_batches
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/batches/by-lot/{lot_code}
batches_by_lot_code
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/batches/{batch_id}
get_batch
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/batches/{batch_id}/genealogy
batch_genealogy
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/board
Rörelse
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/boms
list_boms
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/boms/for-product/{product_id}
list_boms_for_product_endpoint
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/boms/lookup/{product_id}
lookup_bom_for_product
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/boms/{bom_id}
get_bom
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/boms/{bom_id}/availability
check_bom_material_availability
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/boms/{bom_id}/sop-documents
list_bom_sop_documents
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/boms/{bom_id}/steps
get_bom_steps
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/capacity/overview
capacity_overview
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/capacity/workstations/{ws_id}
workstation_capacity
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/cores
list_cores
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/cores/{core_id}
get_core
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/gateway
assembly_completion_gateway
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/lots/{lot_id}/genealogy
lot_genealogy
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/orders
list_orders
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/orders/{order_id}
get_order
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/orders/{order_id}/conflicts
order_conflicts
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/orders/{order_id}/costing
get_order_costing
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/orders/{order_id}/sop-documents
list_order_sop_documents
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/orders/{order_id}/traveler
get_order_traveler_pdf
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/orders/{order_id}/traveler.pdf
get_order_traveler_pdf
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/workstations
list_workstations
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /api/v1/assembly/workstations/{ws_id}/calendar
list_calendar_exceptions
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /assembly
assembly_page
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /assembly/new
assembly_new_page
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /assembly/terminal
assembly_terminal_page_route
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /assembly/{order_id}
assembly_page
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /fertigung
fertigung_page
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /fertigung/new
fertigung_new_page
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /fertigung/terminal
fertigung_terminal_page
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API GET /fertigung/{order_id}
fertigung_page
Semantic binding: inventory_only; mutation=False
assembly
⚡ REST API PATCH /api/v1/assembly/boms/{bom_id}
update_bom
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API PATCH /api/v1/assembly/items/{item_id}
update_item
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API PATCH /api/v1/assembly/steps/{step_id}
update_step
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API PATCH /api/v1/assembly/workstations/{ws_id}
update_workstation
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/batches
create_batch
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/batches/{batch_id}/cancel
cancel_batch
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/batches/{batch_id}/complete
complete_batch
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/batches/{batch_id}/start
start_batch
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/boms
create_bom
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/boms/upload-step-image
upload_bom_step_image
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/boms/{bom_id}/create-disassembly-order
create_disassembly_from_bom
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/boms/{bom_id}/create-order
create_order_from_bom
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/boms/{bom_id}/sop-documents
upload_bom_sop_document
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/cores
receive_core
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/cores/{core_id}/create-order
create_core_order
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/cores/{core_id}/inspect
inspect_core
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/create-from-order
create_order_from_order
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/items/{item_id}/yield
record_item_yield
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/orders
create_order
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/orders/{order_id}/approve-conflict-override
approve_conflict_override
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/orders/{order_id}/approve-remainder-reuse
approve_remainder_reuse
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/orders/{order_id}/approve-scrap-override
approve_scrap_override
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/orders/{order_id}/assign-workstation
assign_order_to_workstation
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/orders/{order_id}/cancel
cancel_order
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/orders/{order_id}/complete
complete_order
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/orders/{order_id}/hold
hold_order
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/orders/{order_id}/items
add_item
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/orders/{order_id}/photo-evidence
upload_order_photo_evidence
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/orders/{order_id}/plan
plan_order
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/orders/{order_id}/qc-form
record_qc_form
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/orders/{order_id}/qc-form/release
release_qc_form
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/orders/{order_id}/resume
resume_order
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/orders/{order_id}/revoke-conflict-override
revoke_conflict_override
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/orders/{order_id}/schedule
schedule_order
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/orders/{order_id}/sop-documents
upload_order_sop_document
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/orders/{order_id}/start
start_order
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/orders/{order_id}/steps
add_step
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/steps/{step_id}/create-purchase-order
create_subcontract_purchase_order
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/steps/{step_id}/receive-external
receive_step_external
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/steps/{step_id}/receive-goods
receive_subcontract_goods
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/steps/{step_id}/send-external
send_step_external
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/workstations
create_workstation
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/workstations/{ws_id}/assign-picking
assign_picking_to_workstation
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/workstations/{ws_id}/calendar
set_calendar_exception
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/workstations/{ws_id}/checkin
checkin_workstation
Semantic binding: operator_surface; mutation=True
assembly
⚡ REST API POST /api/v1/assembly/workstations/{ws_id}/checkout
checkout_workstation
Semantic binding: operator_surface; mutation=True
assembly

🛡️ Reglering och efterlevnad

Dieses Modul unterliegt folgenden gesetzlichen, regulatorischen und Revisionsstandards:

  • Förvaltning av de berörda myndigheterna
  • CE-märkning & återspålighet
Kopplade moduler:
➔ inventory ➔ catalog ➔ workorders