Tischedatei, XMLdatei_Bestellung, AusgabeTischePersonen and AusgabePersonTisch are no longer configured in platz.cfg. Instead, platz.py now requires a --indir <dir> command-line switch pointing at a directory that must contain tische.ini and bestellung.xml, and into which TischePersonen.txt/PersonenTische.csv are written - e.g. work/test1 or work/test2. This makes it trivial to run against different guest lists without editing platz.cfg. platz.bat/platz.sh forward extra arguments so --indir can be passed through. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
5.1 KiB
Dateiformate
Referenz fuer die Eingabe- und Ausgabedateien eines platz-Laufs, mit Beispielen aus
work/test1/ und work/test2/.
Alle vier Dateien liegen unter dem mit --indir <dir> angegebenen Verzeichnis (z.B.
work/test1/ oder work/test2/) unter festen Namen: tische.ini, bestellung.xml als
Eingabe, TischePersonen.txt und PersonenTische.csv als Ausgabe. Beispielaufruf:
bin/platz.sh --indir work/test1
Tischaufstellung: tische.ini
Ein INI-File mit einer Sektion pro Tisch. Sektionsname ist die Tisch-Id.
| Schluessel | Bedeutung |
|---|---|
Nummer |
Anzeigenummer des Tisches |
Hof |
Hof/Bereich, in dem der Tisch steht |
Plaetze |
Anzahl der Sitzplaetze am Tisch |
Nachbarliste |
Python-Liste der Ids benachbarter Tische |
Koordinaten |
(x,y)-Tupel fuer die Position des Tisches |
Beispiel aus work/test2/tische.ini (eine Reihe von fuenf Tischen, jeder mit seinen
direkten Nachbarn verkettet):
[1]
Nummer=1
Hof=1
Plaetze=3
Nachbarliste=[2]
Koordinaten=(1,1)
[2]
Nummer=2
Hof=1
Plaetze=5
Nachbarliste=[1,3]
Koordinaten=(2,1)
[3]
Nummer=3
Hof=1
Plaetze=3
Nachbarliste=[2,4]
Koordinaten=(3,1)
[4]
Nummer=4
Hof=1
Plaetze=4
Nachbarliste=[3,5]
Koordinaten=(4,1)
[5]
Nummer=5
Hof=1
Plaetze=4
Nachbarliste=[4]
Koordinaten=(5,1)
Werte wie Nachbarliste und Koordinaten werden mit eval() geladen (siehe
Tische.laden() in libs/Strukturdaten.py) — es steht also echter Python-Ausdruckscode im
File, keine reine INI-Syntax.
Gaesteliste: bestellung.xml
Ein <Bestellung> mit mehreren <Gruppe>-Bloecken. Jede Gruppe enthaelt:
- ein oder mehrere
<Person>-Elemente mit<Vorname>,<Nachname>und optionalem<Titel> - optional
<Anzahl>N</Anzahl>, um die zuletzt beschriebene Person zu einer Sammelbuchung vonN(anonymen/gleichnamigen) Personen zu vervielfaeltigen - optional
<Tisch>Id</Tisch>, um die Gruppe als VIP-Gruppe fest an den angegebenen Tisch zu binden (sie wird dann nicht vom GA platziert)
XML-Kommentare (<!-- ... -->) sind erlaubt und werden beim Parsen ignoriert.
Minimalbeispiel mit Sammelbuchungen, aus work/test1/bestellung.xml:
<Bestellung>
<Gruppe>
<Person>
<Vorname>A</Vorname>
<Nachname>AA</Nachname>
<Titel>Dipl. Ing.</Titel>
</Person>
<Anzahl>10</Anzahl>
</Gruppe>
<Gruppe>
<Person>
<Vorname>B</Vorname>
<Nachname>BB</Nachname>
<Titel>Prof.</Titel>
</Person>
<Anzahl>4</Anzahl>
</Gruppe>
<Gruppe>
<Person>
<Vorname>C</Vorname>
<Nachname>CC</Nachname>
<Titel>Dr.</Titel>
</Person>
<Anzahl>5</Anzahl>
</Gruppe>
</Bestellung>
Umfangreicheres Beispiel mit benannten Personen und einer VIP-Gruppe, aus
work/test2/bestellung.xml:
<Bestellung>
<!-- einfache Gruppe aus drei Personen
mit festem Wunsch fuer einen Tisch-->
<Gruppe>
<Person>
<Vorname>Michael</Vorname>
<Nachname>Stangl</Nachname>
<Titel>Dipl. Ing.</Titel>
</Person>
<Person>
<Vorname>Magnus</Vorname>
<Nachname>Mueller</Nachname>
<Titel>Professor</Titel>
</Person>
<Person>
<Vorname>Bernd Robert</Vorname>
<Nachname>Hoehn</Nachname>
<Titel>Professor</Titel>
</Person>
<Tisch>1</Tisch>
</Gruppe>
<!-- einfache Gruppe aus zwei Personen -->
<Gruppe>
<Person>
<Vorname>Heinz</Vorname>
<Nachname>Bruegge</Nachname>
</Person>
<Person>
<Vorname>Hubert</Vorname>
<Nachname>K</Nachname>
</Person>
</Gruppe>
<!--Gruppe aus drei anonymen Personen-->
<Gruppe>
<Person>
<Vorname>Bestelli</Vorname>
<Nachname>Bloedkopf</Nachname>
</Person>
<Anzahl>3</Anzahl>
</Gruppe>
</Bestellung>
Die erste Gruppe hier ist per <Tisch>1</Tisch> fest an Tisch 1 gebunden (VIP-Gruppe); die
letzte Gruppe erzeugt ueber <Anzahl>3</Anzahl> drei gleichnamige "Bestelli Bloedkopf"
Buchungen.
Ausgabe: TischePersonen.txt
Eine Sektion pro Tisch ([Tischid]), darunter eine Zeile pro Sitzplatz:
[1]
Dipl. Ing. A AA = Hof 1, Tisch 1, Nummer 1
Dipl. Ing. A AA = Hof 1, Tisch 1, Nummer 2
Dipl. Ing. A AA = Hof 1, Tisch 1, Nummer 3
Dipl. Ing. A AA = Hof 1, Tisch 1, Nummer 4
Dipl. Ing. A AA = Hof 1, Tisch 1, Nummer 5
[2]
Dipl. Ing. A AA = Hof 1, Tisch 2, Nummer 1
...
Format je Zeile: Titel Vorname Nachname = Hof <Hof>, Tisch <Nummer>, Nummer <Platznummer>.
Ausgabe: PersonenTische.csv
Dieselben Sitzplatzdaten, aber eine Zeile pro Person statt pro Tisch, alphabetisch nach Nachname sortiert:
AA, A, Dipl. Ing. = Hof 1, Tisch 1, Nummer 2
AA, A, Dipl. Ing. = Hof 1, Tisch 1, Nummer 3
...
BB, B, Prof. = Hof 1, Tisch 3, Nummer 2
...
CC, C, Dr. = Hof 1, Tisch 4, Nummer 2
...
Format je Zeile: Nachname, Vorname, Titel = Hof <Hof>, Tisch <Nummer>, Nummer <Platznummer>.
Zyklus- und Strafenkonfiguration
Siehe cfg/zyklus.cfg und cfg/strafen.cfg sowie die Beschreibung in CLAUDE.md /
README.md fuer das Format der GA-Ablaufsteuerung (Abfolge/Anzahl) und der
Strafpunkte-Tabelle.