Guide to the Sittard planning program (planning cycle, address 127.0.0.1:8791)
For planners in the plant without project knowledge. Status 12 Nov 2026. Every step below was replayed on the running program. The program itself is in German; button and heading texts are quoted in German exactly as they appear on screen, with the English meaning in brackets. Numbers in the examples are examples from 12 Nov 2026: the plan changes with every new data set. German version: ANLEITUNG_PLANUNGSPROGRAMM.md (in the program: page „Anleitung“).
1. What the program is for
Thomas' goal (11 Nov 2026, quoted in German): „ich will ein in echt funktunierendes Toll sehen mit allen echten auflagen und zielen die wir hier in allen chats besprochen haben!“ (I want to see a tool that really works, with all the real constraints and goals we discussed in all the chats.)
The program takes the plant's data (SAP orders, stock, material, measured changeover and run times), builds a plan per line for each week (which order, on which line, in which sequence) and checks this plan against every plant constraint it knows. It says whether the plan may be released and, if not, why. What it cannot check because plant data are missing, it states explicitly.
Words and abbreviations: tab „Was die Wörter heißen“ (what the words mean; link at the top of every page). Abbreviations whose meaning nobody has documented yet are listed in stand/2026-11-10/begriffe_offen.csv.
2. Starting
- In the terminal, change to the project folder:
cd ~/Desktop/Sittard_Planungsanalyse_2026-10. - Start the program:
/usr/bin/python3 programm/start.py 8791. Keep the window open. - Open in the browser:
http://127.0.0.1:8791/kreis. The page „Planungskreis“ (planning cycle) appears with the first planning week („Planungskreis · KW … · Woche ab …“). It takes a few seconds to load („wird geladen …“). - The top line „Woche:“ lists the weeks with a plan (for example KW 47 · KW 48 · KW 49) and the links „Matrizen“, „M13 Umbau, M14 Raten“, „Simulator“, „Plan von Hand prüfen“, „Was die Wörter heißen“, „Anleitung“.
Note: port 8769 is the old simulator (reference). It is not touched.
3. Loading new data
3.1 Input folder
The files of one day are placed unchanged in a folder eingang/<YYYY-MM-DD>/ (for example eingang/2026-11-10/): Every Angle folder daily, COID list on Thursdays (Wouter), OEE of the last 8 days on Mondays (Shannon), customer orders as soon as Rick delivers them. Which file must have which name is defined in programm/importe/datenvertrag.py.
3.2 Import and run
The commands (from programm/ARCHITEKTUR.md section 5 and the header of programm/lauf.py):
- Import:
/usr/bin/python3 programm/importe/importiere.py 2026-11-10(date of the input folder; writes the data setstand/2026-11-10/with the import report; a data set is never overwritten). - Full run up to the plan:
/usr/bin/python3 programm/lauf.py stand/2026-11-10 --planer(without--planerthe run only reads the existing weekly plans).
Not replayed: I did not execute import and run for this guide, because they write a data set that others are computing on right now. What is replayed is what the page shows afterwards (3.3).
3.3 Reading the import report and the traffic light
On /kreis, the box „Daten: was fehlt oder alt ist“ (data: what is missing or old) at the top. First line, for example: „Stand 2026-11-10: 8 rot, 2 gelb, 22 in Ordnung · Import … · Bericht stand/2026-11-10/importbericht.md“. Below it the table with the columns Ampel (traffic light), Datei (file), Lieferant (supplier), Stichtag (reference date), Tage seit Stichtag (days since), was fehlt (what is missing).
- rot (red): file missing or too old. Whatever depends on it is not computed, or only with an assumption (see column „was fehlt“).
- gelb (yellow): file present, with a note (for example data of the previous day).
- „22 Dateien in Ordnung“: expand to see the green files.
- „ganz lesen“ expands a long text.
Below: „Artikel ohne Zuordnung“ (articles missing syrup, can, end or pack; list stand/<date>/artikel_ohne_zuordnung.csv) and „Offen (Annahme F3): Als Liefertermin gilt der SAP-Wochenbedarf, weil die Kundenaufträge fehlen.“ (open, assumption F3: the SAP weekly demand is used as delivery date because customer orders are missing).
4. Reading the planning cycle
4.1 Key figures „Woche in Zahlen“
Tiles with one number each and the comparison below, for example: „Aufträge mit Lauf im Wochenplan“ (orders with a run in the weekly plan), „Aus dieser SAP-Woche gelegt“ (moved out of this SAP week), „Dosen“ (cans), „Stunden laut Kern“ (hours according to the calculation core, compared with „SAP-Folge wie geplant“, the SAP sequence as planned), „Gebrauchte Dosen je Linienstunde“ (needed cans per line hour), „Plan ausgebbar“ (plan releasable), „Harte Verstöße laut Kern“ (hard violations), „Linien über ihren Stunden“ (lines over their hours), „Später als Bedarfswoche“ (later than the demand week), „Linienwechsel“ (line changes). Below, „Gebrauchte Dosen je Linienstunde je Linie“ can be expanded.
4.2 The ten stations
Section „Die zehn Stationen: was das Programm in dieser Woche an jeder Station entschieden hat“ (the ten stations: what the program decided this week at each station). The dependency order is shown above: 1 Kundenauftrag (customer order) → 2 Liefertermin (delivery date) → 3 Bestand (stock) → 4 Nettobedarf (net demand) → 5 Material → 6 Kapazität (capacity) → 7 Linie (line) → 8 Reihenfolge (sequence) → 9 Warenfluss (goods flow) → 10 Rückmeldung (feedback). Each station is a button with a question (for example station 5 „Material – Ist alles da?“, is everything there?), the sentence of the week, counts green/yellow/red and „hängt ab von …“ (depends on …).
Press the button: the station opens below with its checks (for example 5.1 „Dose und Deckel: Abruf in 1 Tag möglich“, can and end callable within 1 day) and per check the count green, yellow, red, not checked; plus lists such as „Aus der Woche genommen“ (taken out of the week) with order, article, line, week and reason.
4.3 „Plan ausgebbar“ and its causes
The tile „Plan ausgebbar“ shows ja (yes) or nein (no). If no, it shows the number of causes and each cause in one sentence, for example (12 Nov 2026, KW 47): „Der Wochenplan KW 47 verletzt 2 harte Auflagen an 3 Stellen · Über die Wochenpläne des Stands liegen 5-mal zwei Läufe zugleich auf einer Linie · 15 Aufträge der Planwochen stehen in SAP, aber in keinem Wochenplan des Stands“ (the plan violates 2 hard constraints at 3 places; 5 times two runs overlap on one line; 15 orders are in SAP but in no weekly plan). As long as it says no, there is no change list for SAP (section 9).
4.4 Every order through all ten stations
Table „Jeder Auftrag durch alle zehn Stationen“: per order line, position, order, article, cans, start, hours, then one dot per station (green ok, yellow attention, red violation, grey open because data are missing) and the column „Planer“ (for example „bleibt“ stays, „vorgezogen aus KW 48“ brought forward from week 48, „andere Linie (PL6 → PL5)“ other line). Click a row: below it each station's checks appear with verdict, reason and source (example: „1.3 Menge plausibel: gegen Mindestlos und Palettenrundung: grün · …“).
5. Reading violations
5.1 Violations according to the core (station 8)
Under „Station 8: Reihenfolge“ the table „Verstöße laut Kern in dieser Woche“ with the columns Art (hard or soft), Linien (lines), Was (what). Example: „weich · PL3, PL5 · Lauge zugleich auf PL3 und PL5 (17.11. 04:27): Laugenkonditionierung“ (soft: caustic at the same time on PL3 and PL5). Below it „Läufe über die Wochengrenze“ (runs across the week boundary) and „Weiche Regeln je Abteilung: was es diese Woche kostet, wenn die Abteilung sie verlangt“ (soft rules per department: their cost this week; rule, price in hours, hard violations afterwards).
5.2 Plant rule check (constraint, line, time, order)
Section „Regelprüfung des Werks (Regelwache: jede harte Auflage gegen den Wochenplan)“ (plant rule check: every hard constraint against the weekly plan). First line: „Plan ausgebbar: …“ with the number of violated, kept and not computed constraints. Below it four lists:
- „Verletzt“ (violated): constraint (number H…), department, wording, status, places. „… Stellen zeigen“ expands each place.
- „Gerechnet und eingehalten“ (computed and kept).
- „Im Werk vorhanden, im Programm nicht gerechnet: welche Datei fehlt“ (exists in the plant, not computed: which file is missing): the program can report these neither as kept nor as violated; column „fehlt“ names the file.
- Under „Änderungsliste für SAP“, when the plan is blocked, the table of violations with the columns Auflage (constraint), Linie (line), Tag und Uhrzeit (day and time), Auftrag und Artikel (order and article), Wortlaut (wording). How to read a row: which constraint (H…), on which line, when, which order, and what exactly is violated.
6. Checking a plan by hand (page „Plan von Hand prüfen“)
Purpose: change a weekly plan at single places and have it checked whether it would be executable. The planner's weekly plan itself stays unchanged.
6.1 Example step by step
Example from 12 Nov 2026 (run and result change with the plan):
- On
/kreis, click „Plan von Hand prüfen“ at the top (orhttp://127.0.0.1:8791/pruefplan). - „1. Woche“ (week): choose KW 47 (ab 16.11.).
- „2. Lauf im Wochenplan“ (run in the weekly plan): choose the run „PL8 · Mo 23.11. 10:42 · 50BLA Mon Mango Loco FR 116558 12x …“.
- „3. Eingriff“ (intervention): „Lauf auf eine andere Linie legen“ (move run to another line). Under „Neue Linie“ choose PL9; leave „Neue Startzeit“ empty (same time); „Reinigung davor“ „wie bisher“ (cleaning before: as before); „Folgeläufe auf der neuen Linie“ „nach hinten schieben“ (push following runs back).
- Button „Eingriff zur Liste“ (add intervention to list). Under „Ihre Eingriffe“ it now reads „PL8 Mo 23.11. 10:42 50BLA Mon Mango Loco FR 116558 12x (Auftrag 6181371) → auf PL9“ (with „entfernen“, remove).
- Button „Geänderten Plan prüfen“ (check changed plan). The page shows „Das Programm prüft und rechnet nach (etwa eine halbe bis eine Minute) …“ (about half a minute to a minute).
- Read the result: „Plan KW 47 ausführbar: NEIN“ (not executable), then „Was geändert wurde“ (what was changed) and „Verstöße, die durch Ihre Eingriffe neu sind“ (violations new through your interventions) with constraint, line, day and time, order and article, what exactly. In the example among others H056 (Mango Loco 50 cl only PL8 according to the 2026 rules), H075 („Dose Standard laut BDR nicht auf PL9“, standard can not on PL9 according to the yield report), H064 (never run on PL9, no measured output) and a double booking on PL9. Further down „Was der Rechenkern von sich aus anders legt“ (what the core moves on its own) and „Nicht gerechnet, weil Werksdaten fehlen“ (not computed because plant data are missing).
- „Liste leeren“ (clear list) resets the interventions.
6.2 The other interventions
Under „3. Eingriff“ there are also: „Lauf zeitlich legen (Startzeit)“ (set start time), „Lauf verlängern (Menge oder Stunden)“ (extend run), „Reinigung vor dem Lauf ändern oder weglassen“ (change or drop cleaning before the run), „Umbau zeitlich legen“ (place changeover in time), „Lauf eines Artikels einfügen“ (insert a run of an article), „Lauf streichen“ (delete run). Several interventions can be added to the list one after another and checked together.
7. Switching soft rules and reading their price
- On
/kreis, open station 8 (button „Station 8 · Herzstück“, section „Station 8: Reihenfolge“) and click „Abteilungen: weiche Regeln schalten“ (departments: switch soft rules). The page „Sittard Wochenplan · einfach“ (simple view) opens for the chosen week (directly:http://127.0.0.1:8791/einfach). The link „Simulator“ at the top leads to the full page instead (point 5). - Top left „Diese Woche braucht der Plan … h Linienzeit“ (line time needed this week), right „Weiche Regeln eingeschaltet: 0 von 5“ (soft rules switched on) and „Preis diese Woche“ (price this week).
- Per department (Produktion, Technik) the rules with a switch. Example: under Produktion switch on „Wochenreinigung an einem Werktag, 08:00 bis 17:00“ (weekly cleaning on a working day, 08:00 to 17:00). The program recalculates; on 12 Nov 2026 the right side then showed „+36,3 h Preis diese Woche“ and under the rule „je Stelle: Linie, Tag, Umbau, Lösung, Preis“ (per place: line, day, changeover, solution, price).
- Switch off again: price back to 0 h.
- „Erweiterte Ansicht →“ (extended view) leads to the full page with tabs (Woche, Spezifikation je Auftrag, Alle Matrizen, Regelprüfung dieser Woche, Regeln des Werks, die im Programm fehlen, Abteilungen, Gemessen, Monat und Jahr, Was die Wörter heißen).
8. Matrices
- „Matrizen“ at the top opens, on the full page, the tab „Alle Matrizen: Werksregeln, Produktgruppen, Umbau, Artikel“: 1. rule register (decision matrix in ranking order with consequence and loss), 1b. rule and cost matrix per line and machine, 2. product group matrix per line (row = from, column = to), 3. changeover and cleaning per line, 4. article master data per SAP code.
- „M13 Umbau, M14 Raten“ at the top opens „Matrizen M13 Umbau und M14 Raten (gemessen, mit Zahl der Fälle)“ (changeover and rates, measured, with number of cases) with the buttons „Gemessen gegen Kernwert“, „M13 Umbau je Zelle“, „M14 Raten je Artikel und Linie“. Every number carries the number of measured cases; „Lücke“ (gap) means: never measured.
9. Change list for SAP
What it is: per order, how it stands in SAP today (old) and how it stands in the weekly plan (new), what to do in SAP and why. It is on /kreis under „Änderungsliste für SAP“ and fills itself when the page loads (if the button „Änderungsliste dieser Woche rechnen und zeigen“ is still there, press it). Below it „Anleitung für den Planer“ (instructions for the planner) with the steps per row type („bleibt“, „aus der Woche genommen“, „hereingeholt“, „andere Linie“, „zusammengelegt“, „neue Reihenfolge“) and the Thursday 12:00 rhythm.
When it is blocked: when the plan is not releasable, above all when the rule watch finds a violated hard constraint (the page also names two runs at the same time on one line and orders that are in no weekly plan). Then it says „Keine Änderungsliste für SAP.“ (no change list) and shows the violations instead of the list (section 5.2). On 12 Nov 2026 the list was blocked for KW 47 and KW 48.
10. What the program cannot do today
- Missing plant data according to the import report (red, data set 2026-11-10): open customer orders with delivery date, storage capacity per location, target stock per article, tank list with volume, mixing time and sugar dissolver, staffing per line and shift, calendar (fixed stops, weekly cleaning, overhaul), Ultimo maintenance jobs with duration and "line stops", OEE of the last 8 days not seamless. Therefore the SAP weekly demand is used as delivery date (assumption F3).
- Constraints not computed: the list „Im Werk vorhanden, im Programm nicht gerechnet“ on
/kreis(section 5.2), for example tank standing times (H003), disinfection every 4 h and first can per run (H005), overhaul at half speed (H012), batching and mixing times in the syrup room (H023, H030, H031), CIP circuits SIP 2.1/2.3 (H032). - The test with a colleague who works only with this guide is still outstanding.
- Abbreviations without documented meaning:
stand/2026-11-10/begriffe_offen.csv.