# 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.