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>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
de8ecb9460
commit
29077caa81
Vendored
+2
-2
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"schema": "sps_skel-tro-v2",
|
||||
"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.",
|
||||
@@ -917,7 +917,7 @@
|
||||
"kind": "bahn"
|
||||
}
|
||||
],
|
||||
"openPoints": [],
|
||||
"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.",
|
||||
|
||||
Vendored
+2
-2
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"schema": "sps_skel-tro-v2",
|
||||
"schema": "sps_skel-tro-v3",
|
||||
"source": "mubea.csv",
|
||||
"created": "2026-10-09 11:38",
|
||||
"note": "Aus dem CSV-Export abgeleitet (lib/tro_flow.py) - die Zeichnung ist nur Ansicht, keine Datenquelle.",
|
||||
@@ -888,7 +888,7 @@
|
||||
"kind": "normal"
|
||||
}
|
||||
],
|
||||
"openPoints": [],
|
||||
"candidates": [],
|
||||
"findings": [
|
||||
"Kreisel2: Ausschleuselement 0057 und ILS Weiche 0125 benachbart - als 2Sep2Swi zusammengefasst (FB_ILS_MTRO_2Sep2Swi fehlt noch in der ILSLib)",
|
||||
"Scanner 0008 'Scanner :5': montiert an 0010, liest aber an Separator 0042 auf 0010-R",
|
||||
|
||||
+13
-2
@@ -6,7 +6,7 @@ import json
|
||||
import pytest
|
||||
from pydantic import ValidationError
|
||||
|
||||
from model import SCHEMA, Analysis, Connection, DerivedTro, TroDocument
|
||||
from model import SCHEMA, Analysis, Connection, DerivedTro, TroCandidate, TroDocument
|
||||
from scl_skeleton import render
|
||||
|
||||
|
||||
@@ -64,7 +64,18 @@ def test_json_uses_tro_json_keys(document):
|
||||
assert first["items"] == {"Separator": 1, "Switch": 1}
|
||||
assert first["position"] == {"x": 1030.0, "y": 4700.0, "z": 1500.0}
|
||||
assert data["connections"][1] == {"from": "TRO01", "to": "TRO02", "kind": "weiche"}
|
||||
assert "openPoints" in data
|
||||
assert data["candidates"] == []
|
||||
|
||||
|
||||
def test_candidate_round_trip():
|
||||
candidate = TroCandidate(name="Qualitaetskontrolle", type_name="1Sep1Swi",
|
||||
position=(-1026.0, 5250.05, 1478.5), belongs_to="TRO09")
|
||||
data = json.loads(candidate.model_dump_json(by_alias=True))
|
||||
assert data["type"] == "1Sep1Swi"
|
||||
assert data["position"] == {"x": -1026.0, "y": 5250.05, "z": 1478.5}
|
||||
assert data["belongsTo"] == "TRO09"
|
||||
assert TroCandidate.model_validate(data) == candidate
|
||||
assert candidate.describe_position() == "-1026, 5250"
|
||||
|
||||
|
||||
def test_items_and_fb_block_follow_the_type():
|
||||
|
||||
Reference in New Issue
Block a user