SCHIESSSPORT-MANAGER WETTKAMPF – EXTERNE KATALOGE

Gültiger Programmstand
- W-2.4.1.0 / intern 6.4.1.0
- Regelwerksabgleich: 08.09.2026

XML-Dateien in diesem Ordner werden beim Programmstart vollständig als ein
Katalogbatch geladen. Ist eine Datei, eine Metadatenzahl oder ein Eintrag
ungültig, wird der gesamte externe Batch verworfen; der vorherige interne
Katalog bleibt dadurch unverändert erhalten.

Pflichtattribute jedes Eintrags
- Federation
- WeaponType
- Code
- Name

Optionale Attribute
- Distance
- SeriesCount
- ShotsPerSeries
- MaxPerShot
- ReplaceExisting
- DetailLevel
- Selectable
- TotalShotsFired
- CountedShots
- MaximumResult
- ScoringMode

Optionale Unterelemente
- Time
- Position
- Calibers
- Targets
- Description
- RuleStatus
- Source
- SourceStatus
- Stages mit einem oder mehreren Stage-Elementen

Sicherheitslogik in W-2.4.1.0
- Schlüssel: Federation + WeaponType + Code; leere Teile und das Zeichen | sind unzulässig.
- Dateien werden deterministisch geladen: zuerst der Hauptkatalog, danach alphabetisch weitere XML-Dateien.
- Records im Wurzelelement und Records je Metadata/Federation müssen exakt der tatsächlichen XML entsprechen.
- Ein doppelter externer Schlüssel ohne ReplaceExisting="true" verwirft den gesamten Katalogbatch.
- Ohne ReplaceExisting bleiben vorhandene eingebettete Detailprofile autorisiert. Aus dem XML werden dann nur Quelle und Katalogstand für den Identitätsabgleich ergänzt; insbesondere wird kein neuer Regelstand über ältere Detailwerte geschrieben.
- ReplaceExisting="true" ersetzt bewusst das vollständige Profil. Nicht angegebene Text-, Zahlen- und Ablaufwerte werden dabei leer beziehungsweise null. Es findet keine Teilverschmelzung statt.
- ReplaceExisting deshalb nur verwenden, wenn das Ersatzprofil vollständig und offiziell geprüft ist.
- SeriesCount, ShotsPerSeries und MaxPerShot sind eine untrennbare Wertungstrias: entweder alle drei positiv angeben oder alle drei weglassen.
- DetailLevel="IdentityOnly" bedeutet: Identität vorhanden, Wertungsablauf nicht automatisch modelliert.
- DetailLevel="NumericScoring" bedeutet: numerische Grundwertung geprüft; Ablaufdetails können weiterhin manuell zu prüfen sein.
- DetailLevel="FullyModeledOfficial" ist ausschließlich für vollständig offiziell modellierte Profile vorgesehen.
- Selectable="false" bewahrt einen Legacy-Schlüssel für Altbestände, entfernt ihn aber aus der Neuauswahl.
- Unstrukturierte Profile übernehmen niemals Wertungsfelder der zuvor gewählten Disziplin; W setzt die Eingabe auf einen sicheren Neutralzustand und verlangt die manuelle Regelprüfung.
- XML-DTDs und externe XML-Entitäten sind gesperrt.

Hauptkatalog
- Datei: Verbaende-Disziplinen-2026-07-21.xml
- Der historische Dateiname bleibt aus Kompatibilitätsgründen erhalten.
- Maßgeblicher interner XML-Stand: 2026-09-08
- 792 Datensätze, 792 eindeutige Schlüssel, 0 doppelte Schlüssel
- DSB 101
- BDS 328
- BDMP 131
- DSU 149
- VdRBw 28
- Kyffhäuserbund 33
- BSSB 22

Automatisierungstiefe des Hauptkatalogs
- 47 vollständige, bewusst ersetzende NumericScoring-Einträge
- 85 ausdrücklich als IdentityOnly gekennzeichnete Einträge
- 1 nicht auswählbarer Legacy-Eintrag: DSU|Jugend|LP1
- BDS-Ergänzungen und Kyffhäuser-Bogendisziplinen bleiben ehrlich IdentityOnly.
- DSU-Konflikte DKP1/LP1 und SVFG/SVSG werden nicht eigenmächtig kanonisiert.

Nachweise
- KATALOG-PRUEFBERICHT-2026-09-08.txt
- KATALOG-AENDERUNGSNACHWEIS-W-2.4.1.0.json
- aktualisiere_katalog_w2410.py reproduziert die Migration aus dem geschützten 685er Ausgangskatalog.

Eigene Ergänzungen
- Für neue eigene Schlüssel ist ReplaceExisting nicht erforderlich.
- Katalog-Erweiterungen.xml ist die vorgesehene separate Datei.
- Nur offiziell belegte Werte eintragen; unbekannte Wertungsparameter leer lassen und DetailLevel="IdentityOnly" setzen.
- Vor einer bewussten Korrektur immer den vollständigen Ersatzdatensatz und die aktuelle offizielle Quelle sichern.
