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>
This commit is contained in:
@@ -0,0 +1,205 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user