Files
sps_skel/tests/fixtures/scl/HundM05_tro.json
T
Michael StanglandClaude Opus 5.5 29077caa81 model: TroCandidate statt OpenPoint, tro_overrides nutzt model-Klassen (Schema v3)
- OpenPoint -> model.TroCandidate (type, position, belongsTo, note);
  TroDocument.candidates ersetzt openPoints, Schema sps_skel-tro-v3
- Positionsbehandlung von TroBase und TroCandidate im Mixin _Positioned
- tro_overrides.py: eigene ConnectionSpec/OpenPoint entfallen, stattdessen
  model.Connection / model.TroCandidate; einheitliche Feldnamen
  (tro_id/separator, hosts als Liste)
- Fixtures, Beispiel-JSON und Doku auf v3 nachgezogen

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 11:31:05 +02:00

933 lines
20 KiB
JSON

{
"schema": "sps_skel-tro-v3",
"source": "HundM05.csv",
"created": "2026-10-09 11:30",
"note": "Aus dem CSV-Export abgeleitet (lib/tro_flow.py) - die Zeichnung ist nur Ansicht, keine Datenquelle.",
"tros": [
{
"id": "TRO01",
"type": "1Sep1Swi",
"confidence": "mittel",
"separators": [
"0008"
],
"predecessors": [
"TRO20"
],
"successors": [
"TRO02",
"TRO06"
],
"position": {
"x": 4075.94,
"y": 985.0,
"z": 2154.75
},
"label": "Separator 0008 an Ausschleuselement 0024 (Strecke 0001, Anfang)",
"hosts": [
"0001"
],
"scanners": [
"0009"
],
"reason": "1014mm von Ausschleuselement 0024 entfernt - kein eigenes Weichen-Bauteil im Layout, das Ausschleuselement uebernimmt diese Rolle",
"colocated": [],
"positionFrom": "Bauteile",
"positionPoints": 2,
"fbType": "FB_ILS_MTRO_1Sep1Swi",
"items": {
"Separator": 1,
"Switch": 1
}
},
{
"id": "TRO02",
"type": "Vario",
"confidence": "hoch",
"separators": [
"0025"
],
"predecessors": [
"TRO01"
],
"successors": [
"TRO03"
],
"position": {
"x": 5070.1,
"y": 2530.06,
"z": 2098.34
},
"label": "VF_1",
"hosts": [
"0001"
],
"scanners": [],
"reason": "angetriebenes Streckensegment (Antriebfahrtrichtung: horizontal,horizontal,horizontal,Auf,horizontal)",
"colocated": [
"TRO04",
"TRO05"
],
"positionFrom": "Bauteile",
"positionPoints": 1,
"fbType": "FB_ILS_MTRO_Vario",
"items": {
"Separator": 1,
"VarioDrive": 1
}
},
{
"id": "TRO03",
"type": "1Sep",
"confidence": "mittel",
"separators": [
"0026"
],
"predecessors": [
"TRO02"
],
"successors": [
"TRO04"
],
"position": {
"x": 7222.54,
"y": 6180.03,
"z": 2019.94
},
"label": "VF_1",
"hosts": [
"0001"
],
"scanners": [],
"reason": "alternierendes VF/GF-Muster vom Wiedereinschleusen von VF_1 rueckwaerts (3. Separator von hinten) - unbetriebener Abschnitt ohne eigenes VarioDrive (Review 2026-09-23/25)",
"colocated": [
"TRO05"
],
"positionFrom": "Bauteile",
"positionPoints": 1,
"fbType": "FB_ILS_MTRO_1Sep",
"items": {
"Separator": 1
}
},
{
"id": "TRO04",
"type": "Vario",
"confidence": "hoch",
"separators": [
"0027"
],
"predecessors": [
"TRO03"
],
"successors": [
"TRO05"
],
"position": {
"x": 7222.54,
"y": 5679.62,
"z": 1993.71
},
"label": "VF_1",
"hosts": [
"0001"
],
"scanners": [],
"reason": "angetriebenes Streckensegment (Antriebfahrtrichtung: horizontal,horizontal,horizontal,Auf,horizontal)",
"colocated": [
"TRO02"
],
"positionFrom": "Bauteile",
"positionPoints": 1,
"fbType": "FB_ILS_MTRO_Vario",
"items": {
"Separator": 1,
"VarioDrive": 1
}
},
{
"id": "TRO05",
"type": "1Sep",
"confidence": "mittel",
"separators": [
"0028"
],
"predecessors": [
"TRO04"
],
"successors": [
"TRO06"
],
"position": {
"x": 6273.83,
"y": 1756.17,
"z": 2305.73
},
"label": "VF_1",
"hosts": [
"0001"
],
"scanners": [],
"reason": "alternierendes VF/GF-Muster vom Wiedereinschleusen von VF_1 rueckwaerts (1. Separator von hinten) - unbetriebener Abschnitt ohne eigenes VarioDrive (Review 2026-09-23/25)",
"colocated": [
"TRO02",
"TRO03"
],
"positionFrom": "Bauteile",
"positionPoints": 1,
"fbType": "FB_ILS_MTRO_1Sep",
"items": {
"Separator": 1
}
},
{
"id": "TRO06",
"type": "1Sep1Swi",
"confidence": "mittel",
"separators": [
"0010"
],
"predecessors": [
"TRO01",
"TRO05"
],
"successors": [
"TRO07",
"TRO09"
],
"position": {
"x": 8577.09,
"y": 988.6,
"z": 2154.75
},
"label": "Separator 0010 an Ausschleuselement 0030 (Strecke 0002, Anfang)",
"hosts": [
"0002"
],
"scanners": [
"0011"
],
"reason": "1015mm von Ausschleuselement 0030 entfernt - kein eigenes Weichen-Bauteil im Layout, das Ausschleuselement uebernimmt diese Rolle",
"colocated": [],
"positionFrom": "Bauteile",
"positionPoints": 2,
"fbType": "FB_ILS_MTRO_1Sep1Swi",
"items": {
"Separator": 1,
"Switch": 1
}
},
{
"id": "TRO07",
"type": "Vario",
"confidence": "hoch",
"separators": [
"0031"
],
"predecessors": [
"TRO06"
],
"successors": [
"TRO08"
],
"position": {
"x": 9570.9,
"y": 5932.96,
"z": 1918.34
},
"label": "VF_2",
"hosts": [
"0002"
],
"scanners": [],
"reason": "angetriebenes Streckensegment (Antriebfahrtrichtung: horizontal,horizontal,Auf)",
"colocated": [],
"positionFrom": "Bauteile",
"positionPoints": 1,
"fbType": "FB_ILS_MTRO_Vario",
"items": {
"Separator": 1,
"VarioDrive": 1
}
},
{
"id": "TRO08",
"type": "1Sep",
"confidence": "mittel",
"separators": [
"0032"
],
"predecessors": [
"TRO07"
],
"successors": [
"TRO09"
],
"position": {
"x": 10840.84,
"y": 1724.4,
"z": 2305.73
},
"label": "VF_2",
"hosts": [
"0002"
],
"scanners": [],
"reason": "alternierendes VF/GF-Muster vom Wiedereinschleusen von VF_2 rueckwaerts (1. Separator von hinten) - unbetriebener Abschnitt ohne eigenes VarioDrive (Review 2026-09-23/25)",
"colocated": [],
"positionFrom": "Bauteile",
"positionPoints": 1,
"fbType": "FB_ILS_MTRO_1Sep",
"items": {
"Separator": 1
}
},
{
"id": "TRO09",
"type": "1Sep1Swi",
"confidence": "mittel",
"separators": [
"0012"
],
"predecessors": [
"TRO06",
"TRO08"
],
"successors": [
"TRO10",
"TRO12"
],
"position": {
"x": 12650.4,
"y": 987.3,
"z": 2154.75
},
"label": "Separator 0012 an Ausschleuselement 0034 (Strecke 0003, Anfang)",
"hosts": [
"0003"
],
"scanners": [
"0013"
],
"reason": "1016mm von Ausschleuselement 0034 entfernt - kein eigenes Weichen-Bauteil im Layout, das Ausschleuselement uebernimmt diese Rolle",
"colocated": [],
"positionFrom": "Bauteile",
"positionPoints": 2,
"fbType": "FB_ILS_MTRO_1Sep1Swi",
"items": {
"Separator": 1,
"Switch": 1
}
},
{
"id": "TRO10",
"type": "Vario",
"confidence": "hoch",
"separators": [
"0035"
],
"predecessors": [
"TRO09"
],
"successors": [
"TRO11"
],
"position": {
"x": 13648.0,
"y": 5933.46,
"z": 1918.34
},
"label": "VF_3",
"hosts": [
"0003"
],
"scanners": [],
"reason": "angetriebenes Streckensegment (Antriebfahrtrichtung: horizontal,horizontal,Auf)",
"colocated": [],
"positionFrom": "Bauteile",
"positionPoints": 1,
"fbType": "FB_ILS_MTRO_Vario",
"items": {
"Separator": 1,
"VarioDrive": 1
}
},
{
"id": "TRO11",
"type": "1Sep",
"confidence": "mittel",
"separators": [
"0036"
],
"predecessors": [
"TRO10"
],
"successors": [
"TRO12"
],
"position": {
"x": 14917.94,
"y": 1724.9,
"z": 2305.73
},
"label": "VF_3",
"hosts": [
"0003"
],
"scanners": [],
"reason": "alternierendes VF/GF-Muster vom Wiedereinschleusen von VF_3 rueckwaerts (1. Separator von hinten) - unbetriebener Abschnitt ohne eigenes VarioDrive (Review 2026-09-23/25)",
"colocated": [],
"positionFrom": "Bauteile",
"positionPoints": 1,
"fbType": "FB_ILS_MTRO_1Sep",
"items": {
"Separator": 1
}
},
{
"id": "TRO12",
"type": "1Sep1Swi",
"confidence": "mittel",
"separators": [
"0014"
],
"predecessors": [
"TRO09",
"TRO11"
],
"successors": [
"TRO13",
"TRO15"
],
"position": {
"x": 16819.62,
"y": 990.75,
"z": 2154.75
},
"label": "Separator 0014 an Ausschleuselement 0038 (Strecke 0004, Anfang)",
"hosts": [
"0004"
],
"scanners": [
"0015"
],
"reason": "1016mm von Ausschleuselement 0038 entfernt - kein eigenes Weichen-Bauteil im Layout, das Ausschleuselement uebernimmt diese Rolle",
"colocated": [],
"positionFrom": "Bauteile",
"positionPoints": 2,
"fbType": "FB_ILS_MTRO_1Sep1Swi",
"items": {
"Separator": 1,
"Switch": 1
}
},
{
"id": "TRO13",
"type": "Vario",
"confidence": "hoch",
"separators": [
"0039"
],
"predecessors": [
"TRO12"
],
"successors": [
"TRO14"
],
"position": {
"x": 17816.0,
"y": 5933.96,
"z": 1918.34
},
"label": "VF_4",
"hosts": [
"0004"
],
"scanners": [],
"reason": "angetriebenes Streckensegment (Antriebfahrtrichtung: horizontal,horizontal,Auf)",
"colocated": [],
"positionFrom": "Bauteile",
"positionPoints": 1,
"fbType": "FB_ILS_MTRO_Vario",
"items": {
"Separator": 1,
"VarioDrive": 1
}
},
{
"id": "TRO14",
"type": "1Sep",
"confidence": "mittel",
"separators": [
"0040"
],
"predecessors": [
"TRO13"
],
"successors": [
"TRO15"
],
"position": {
"x": 19085.94,
"y": 1725.4,
"z": 2305.73
},
"label": "VF_4",
"hosts": [
"0004"
],
"scanners": [],
"reason": "alternierendes VF/GF-Muster vom Wiedereinschleusen von VF_4 rueckwaerts (1. Separator von hinten) - unbetriebener Abschnitt ohne eigenes VarioDrive (Review 2026-09-23/25)",
"colocated": [],
"positionFrom": "Bauteile",
"positionPoints": 1,
"fbType": "FB_ILS_MTRO_1Sep",
"items": {
"Separator": 1
}
},
{
"id": "TRO15",
"type": "1Sep1Swi",
"confidence": "mittel",
"separators": [
"0016"
],
"predecessors": [
"TRO12",
"TRO14"
],
"successors": [
"TRO16",
"TRO17"
],
"position": {
"x": 20692.43,
"y": 985.25,
"z": 2154.75
},
"label": "Separator 0016 an Ausschleuselement 0042 (Strecke 0005, Anfang)",
"hosts": [
"0005"
],
"scanners": [
"0017"
],
"reason": "1013mm von Ausschleuselement 0042 entfernt - kein eigenes Weichen-Bauteil im Layout, das Ausschleuselement uebernimmt diese Rolle",
"colocated": [],
"positionFrom": "Bauteile",
"positionPoints": 2,
"fbType": "FB_ILS_MTRO_1Sep1Swi",
"items": {
"Separator": 1,
"Switch": 1
}
},
{
"id": "TRO16",
"type": "1Sep",
"confidence": "mittel",
"separators": [
"0018"
],
"predecessors": [
"TRO15",
"TRO18"
],
"successors": [
"TRO19"
],
"position": {
"x": 23729.42,
"y": 989.7,
"z": 2154.75
},
"label": "VF_5",
"hosts": [
"0005"
],
"scanners": [
"0019"
],
"reason": "Separator 0018: Zuordnung zeigt auf VF_5, ist aber nicht Teil von dessen TrackIds-Kette - kein eigenes VF treibt ihn an",
"colocated": [
"TRO17"
],
"positionFrom": "Bauteile",
"positionPoints": 2,
"fbType": "FB_ILS_MTRO_1Sep",
"items": {
"Separator": 1
}
},
{
"id": "TRO17",
"type": "Vario",
"confidence": "hoch",
"separators": [
"0043"
],
"predecessors": [
"TRO15"
],
"successors": [
"TRO18"
],
"position": {
"x": 21590.2,
"y": 5932.86,
"z": 1918.34
},
"label": "VF_5",
"hosts": [
"0005"
],
"scanners": [],
"reason": "angetriebenes Streckensegment (Antriebfahrtrichtung: horizontal,horizontal,Auf)",
"colocated": [
"TRO16"
],
"positionFrom": "Bauteile",
"positionPoints": 1,
"fbType": "FB_ILS_MTRO_Vario",
"items": {
"Separator": 1,
"VarioDrive": 1
}
},
{
"id": "TRO18",
"type": "1Sep",
"confidence": "mittel",
"separators": [
"0044"
],
"predecessors": [
"TRO17"
],
"successors": [
"TRO16"
],
"position": {
"x": 22860.14,
"y": 1724.3,
"z": 2305.73
},
"label": "VF_5",
"hosts": [
"0005"
],
"scanners": [],
"reason": "alternierendes VF/GF-Muster vom Wiedereinschleusen von VF_5 rueckwaerts (1. Separator von hinten) - unbetriebener Abschnitt ohne eigenes VarioDrive (Review 2026-09-23/25)",
"colocated": [],
"positionFrom": "Bauteile",
"positionPoints": 1,
"fbType": "FB_ILS_MTRO_1Sep",
"items": {
"Separator": 1
}
},
{
"id": "TRO19",
"type": "1Sep",
"confidence": "mittel",
"separators": [
"0020"
],
"predecessors": [
"TRO16"
],
"successors": [
"SYS3",
"TRO20"
],
"position": {
"x": 24570.15,
"y": 1167.2,
"z": 2155.5
},
"label": "Separator 0020 auf Kreisel1 Bahn L",
"hosts": [
"0006-L"
],
"scanners": [],
"reason": "einzelner Separator auf angetriebener Kreisel-Bahn",
"colocated": [],
"positionFrom": "Bauteile",
"positionPoints": 1,
"fbType": "FB_ILS_MTRO_1Sep",
"items": {
"Separator": 1
}
},
{
"id": "TRO20",
"type": "1Sep",
"confidence": "mittel",
"separators": [
"0007"
],
"predecessors": [
"SYS1",
"SYS2",
"TRO19"
],
"successors": [
"TRO01"
],
"position": {
"x": 2414.95,
"y": 365.0,
"z": 2155.5
},
"label": "Separator 0007 auf Kreisel1 Bahn R",
"hosts": [
"0006-R"
],
"scanners": [],
"reason": "einzelner Separator auf angetriebener Kreisel-Bahn",
"colocated": [],
"positionFrom": "Bauteile",
"positionPoints": 1,
"fbType": "FB_ILS_MTRO_1Sep",
"items": {
"Separator": 1
}
}
],
"boundaries": [
{
"id": "SYS1",
"type": "Materialeingang",
"confidence": "hoch",
"separators": [],
"predecessors": [],
"successors": [
"TRO20"
],
"position": {
"x": 5532.67,
"y": 265.14,
"z": 2109.31
},
"label": "BTMT Beladung :2",
"hosts": [
"0021"
],
"scanners": [],
"reason": "Systemgrenze (Be-/Entladestation) - kein TRO, nur Materialein-/ausgang",
"colocated": [],
"positionFrom": "Host-Objekte",
"positionPoints": 1,
"fbType": "",
"items": {}
},
{
"id": "SYS2",
"type": "Materialeingang",
"confidence": "hoch",
"separators": [],
"predecessors": [],
"successors": [
"TRO20"
],
"position": {
"x": 4503.25,
"y": 269.77,
"z": 2109.31
},
"label": "BTMT Beladung :1",
"hosts": [
"0022"
],
"scanners": [],
"reason": "Systemgrenze (Be-/Entladestation) - kein TRO, nur Materialein-/ausgang",
"colocated": [],
"positionFrom": "Host-Objekte",
"positionPoints": 1,
"fbType": "",
"items": {}
},
{
"id": "SYS3",
"type": "Materialausgang",
"confidence": "hoch",
"separators": [],
"predecessors": [
"TRO19"
],
"successors": [],
"position": {
"x": 25014.37,
"y": 1545.51,
"z": 2001.09
},
"label": "BTMT Entladung :1",
"hosts": [
"0023"
],
"scanners": [],
"reason": "Systemgrenze (Be-/Entladestation) - kein TRO, nur Materialein-/ausgang",
"colocated": [],
"positionFrom": "Host-Objekte",
"positionPoints": 1,
"fbType": "",
"items": {}
}
],
"connections": [
{
"from": "SYS1",
"to": "TRO20",
"kind": "normal"
},
{
"from": "SYS2",
"to": "TRO20",
"kind": "normal"
},
{
"from": "TRO01",
"to": "TRO02",
"kind": "weiche"
},
{
"from": "TRO01",
"to": "TRO06",
"kind": "bahn"
},
{
"from": "TRO02",
"to": "TRO03",
"kind": "bahn"
},
{
"from": "TRO03",
"to": "TRO04",
"kind": "bahn"
},
{
"from": "TRO04",
"to": "TRO05",
"kind": "bahn"
},
{
"from": "TRO05",
"to": "TRO06",
"kind": "bahn"
},
{
"from": "TRO06",
"to": "TRO07",
"kind": "weiche"
},
{
"from": "TRO06",
"to": "TRO09",
"kind": "bahn"
},
{
"from": "TRO07",
"to": "TRO08",
"kind": "bahn"
},
{
"from": "TRO08",
"to": "TRO09",
"kind": "bahn"
},
{
"from": "TRO09",
"to": "TRO10",
"kind": "weiche"
},
{
"from": "TRO09",
"to": "TRO12",
"kind": "bahn"
},
{
"from": "TRO10",
"to": "TRO11",
"kind": "bahn"
},
{
"from": "TRO11",
"to": "TRO12",
"kind": "bahn"
},
{
"from": "TRO12",
"to": "TRO13",
"kind": "weiche"
},
{
"from": "TRO12",
"to": "TRO15",
"kind": "bahn"
},
{
"from": "TRO13",
"to": "TRO14",
"kind": "bahn"
},
{
"from": "TRO14",
"to": "TRO15",
"kind": "bahn"
},
{
"from": "TRO15",
"to": "TRO16",
"kind": "bahn"
},
{
"from": "TRO15",
"to": "TRO17",
"kind": "weiche"
},
{
"from": "TRO16",
"to": "TRO19",
"kind": "bahn"
},
{
"from": "TRO17",
"to": "TRO18",
"kind": "bahn"
},
{
"from": "TRO18",
"to": "TRO16",
"kind": "bahn"
},
{
"from": "TRO19",
"to": "SYS3",
"kind": "normal"
},
{
"from": "TRO19",
"to": "TRO20",
"kind": "bahn"
},
{
"from": "TRO20",
"to": "TRO01",
"kind": "bahn"
}
],
"candidates": [],
"findings": [
"Scanner 0019 'Scanner :1': montiert an 0006-L, liest aber an Separator 0018 auf 0005",
"TRO16 (VF_5): Scanner 0019 am Separator - als 1Sep eingestuft. Pruefen, ob 1Sep_SSCC (SSCC-Scanner, Endmessung, WCS-Telegramm) erforderlich ist; das ist aus dem mechanischen Layout nicht erkennbar.",
"VF_1 Separator 0026: alternierendes Muster (3. von hinten) - als 1Sep statt Vario eingestuft",
"VF_1 Separator 0028: alternierendes Muster (1. von hinten) - als 1Sep statt Vario eingestuft",
"VF_2 Separator 0032: alternierendes Muster (1. von hinten) - als 1Sep statt Vario eingestuft",
"VF_3 Separator 0036: alternierendes Muster (1. von hinten) - als 1Sep statt Vario eingestuft",
"VF_4 Separator 0040: alternierendes Muster (1. von hinten) - als 1Sep statt Vario eingestuft",
"VF_5 Separator 0018: Zuordnung ohne TrackIds-Mitgliedschaft - als 1Sep statt Vario eingestuft",
"VF_5 Separator 0044: alternierendes Muster (1. von hinten) - als 1Sep statt Vario eingestuft"
]
}