# 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 ` 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: ```bash 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): ```ini [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 `` mit mehreren ``-Bloecken. Jede Gruppe enthaelt: - ein oder mehrere ``-Elemente mit ``, `` und optionalem `` - optional `N`, um die zuletzt beschriebene Person zu einer Sammelbuchung von `N` (anonymen/gleichnamigen) Personen zu vervielfaeltigen - optional `Id`, 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`: ```xml A AA Dipl. Ing. 10 B BB Prof. 4 C CC Dr. 5 ``` Umfangreicheres Beispiel mit benannten Personen und einer VIP-Gruppe, aus `work/test2/bestellung.xml`: ```xml Michael Stangl Dipl. Ing. Magnus Mueller Professor Bernd Robert Hoehn Professor 1 Heinz Bruegge Hubert K Bestelli Bloedkopf 3 ``` Die erste Gruppe hier ist per `1` fest an Tisch 1 gebunden (VIP-Gruppe); die letzte Gruppe erzeugt ueber `3` 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 , Tisch , Nummer `. ## 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 , Tisch , Nummer `. ## 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.