Files
platz/doc/dateiformate.md
T
Michael Stangl bd87b3df46 Add doc/dateiformate.md file-format reference
Documents tische.ini, bestellung.xml, and the output file formats
using real examples from work/test1 and work/test2.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-09 11:09:32 +02:00

206 lines
4.8 KiB
Markdown

# Dateiformate
Referenz fuer die Eingabe- und Ausgabedateien eines `platz`-Laufs, mit Beispielen aus
`work/test1/` und `work/test2/`.
## 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 `<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
von `N` (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`:
```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`:
```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.