# Schema des MSFS Addon Datensatzes

Alle Dateien sind UTF-8 JSON (plus CSV Exporte). Feldnamen sind englisch, Inhalte deutsch. Die Wertelisten mit Anzeigenamen stehen in `meta.json` unter `enums`.

## aircraft.json (748 Einträge)

Eine Zeile pro Addon Flugzeug oder Projekt. Released Flugzeuge und Pipeline liegen in derselben Datei, getrennt durch `is_pipeline`.

| Feld | Typ | Bedeutung |
| --- | --- | --- |
| `id` | string | Original ID aus dem Bericht (A001 Airliner, G GA, T Turboprop und Bizjet, H Heli, M Militär, V Vintage, S Segler und Spezial, P Pipeline). Stabil, nicht ändern. |
| `slug` | string | URL tauglich und eindeutig, aus Name und erstem Entwickler gebaut |
| `name` | string | Voller Name wie im Bericht, teils mit Varianten in Klammern |
| `name_short` | string | Name ohne Klammerzusatz, für Listen und Suche |
| `category` | enum | `airliner`, `ga_piston_single`, `ga_piston_twin`, `turboprop`, `business_jet`, `helicopter`, `military_jet`, `warbird`, `military_transport`, `vintage`, `glider`, `special`, `other` |
| `category_detail` | string | Originale Feinkategorie, z. B. "Airliner Widebody" |
| `developers` | string[] | Kanonische Entwicklernamen, alle beteiligten Studios (auch Partner und Publisher) |
| `developer_ids` | string[] | Verweise auf `developers.json` (`id`) |
| `developer_raw` | string | Originalschreibweise aus dem Bericht |
| `developer_unknown` | bool | Quelle nennt keinen Entwickler (dann ist `developers` leer) |
| `is_pipeline` | bool | `true` für angekündigt, in Entwicklung, Beta, still, gecancelt, Gerücht |
| `status` | enum | `released`, `early_access`, `beta`, `in_development`, `announced`, `paused`, `cancelled`, `dormant`, `rumor`, `unknown` |
| `status_stage` | enum oder null | `alpha`, `beta`, `final_testing` (nur bei Projekten in Arbeit) |
| `status_verified` | enum | `confirmed`, `listed_only` (nur in Listen geführt, kein unabhängiger Beleg), `conflicting` (Quellen widersprechen sich) |
| `delayed` | bool | Offiziell bestätigt verspätet |
| `status_note` | string | Originaltext zum Status, enthält alle Details |
| `sim_2020`, `sim_2024` | enum | `native`, `compatible`, `yes` (unterstützt, Art nicht genannt), `planned`, `no`, `conflicting`, `unknown` |
| `sim_note` | string | Originaltext zur Sim Kompatibilität |
| `release_precision` | enum | `day`, `month`, `quarter`, `range`, `year`, `none` |
| `release_from`, `release_to` | ISO Datum oder null | Frühester und spätester möglicher Termin. Bei `day` identisch, bei `quarter` die Quartalsgrenzen, bei `year` 1. Januar bis 31. Dezember. Zum Sortieren und Filtern gedacht. |
| `release_date` | ISO Datum oder null | Nur gesetzt, wenn `release_precision` = `day`. Bei mehreren Terminen im Text (z. B. 2020 und 2024 Fassung) ist es der erste genannte Termin. |
| `release_dates_mentioned` | string[] | Alle ISO Daten, die im Originaltext vorkommen |
| `release_text` | string | Originaltext |
| `price_type` | enum | `paid`, `free`, `included_in_sim`, `included_in_edition`, `not_announced`, `not_applicable`, `unknown` |
| `prices` | object[] | `{currency, amount, approx}`, alle im Text genannten Beträge in Reihenfolge. Bei mehreren Beträgen (Währungen, Pakete, 2020 und 2024) bitte `price_text` lesen. |
| `price_text` | string | Originaltext |
| `confidence` | enum oder null | `high`, `medium`, `low`. Bei Mischangaben wie "hoch (Status), mittel (Preis)" oder Spannen wie "niedrig bis mittel" gilt die niedrigste Stufe. |
| `confidence_note` | string | Originaltext, wenn er mehr enthält als ein einzelnes Wort |
| `contradiction_codes` | string[] | K Codes, die auf `contradictions.json` zeigen |
| `sources` | object[] | `{label, url, domain, type, published}`, `published` ist das Datum aus der URL (z. B. msfsaddons.com/2026/10/05/...) oder null |
| `source_text` | string | Originaltext der Linkspalte |
| `group`, `source_file` | string | Herkunft im Bericht |

Was die Werte bedeuten:
- `dormant` ("still") ist ein Label des Datensatzes: mehr als 12 Monate ohne öffentliches Lebenszeichen. Das ist keine Aussage des Entwicklers.
- `unknown` bei `sim_*` und `price_type` heißt "in den Quellen nicht gefunden", nicht "gibt es nicht".
- `listed_only`: Das Flugzeug steht in einer Liste (z. B. MSFS Addons Flugzeugliste), aber es gibt keinen eigenen Release Artikel. Wahrscheinlich released, aber nicht geprüft.

## developers.json (196 Einträge)

| Feld | Bedeutung |
| --- | --- |
| `id`, `name` | Slug und kanonischer Name |
| `aliases` | Andere Schreibweisen, die zusammengeführt wurden (z. B. "Cowan Simulation" bei CowanSim) |
| `profile_level` | `core` (15 Studios mit vollem Profil), `listed` (Studiozeile mit Kurzangaben), `derived` (nur aus den Flugzeugdaten abgeleitet, kein Profil) |
| `country_seat`, `website`, `founded`, `type`, `focus` | Nur bei `core` meist gefüllt, sonst null |
| `known_releases_text`, `upcoming_text`, `sold_where`, `status_text`, `note` | Freitext aus dem Bericht |
| `tracker_only_group` | Steht in der Sammelzeile der Studios mit nur ein bis neun Projekten (Hobby Teams, hohes Risiko, nie zu liefern) |
| `see_also` | Verwandte Entwickler (z. B. Lunar AeroLabs und Lunar Simulations, nicht verifiziert, ob dasselbe Studio) |
| `sources`, `confidence`, `confidence_note` | wie bei Flugzeugen |
| `contradiction_codes` | K Codes, die im Studiotext erwähnt werden |
| `aircraft_ids`, `counts` | Verknüpfte Flugzeuge, Zähler (`total`, `released` inkl. Early Access, `pipeline` = angekündigt, in Entwicklung oder Beta, `by_status`) |

Hinweis: Microsoft und Asobo erscheinen als eigene Entwickler. Bei Standardflugzeugen und Partnerprodukten sind oft beide plus ein Studio wie iniBuilds eingetragen.

## contradictions.json (47 Einträge)

`code` (K01 bis K47), `subject`, `claim_a`, `claim_b`, `treatment`, `aircraft_ids`, `developer_ids`. Zwei Codes (K02 Zahl der Airliner, K17 Datum der MSFS Addons Liste) betreffen Kataloge und Zählungen und haben keine verknüpften Flugzeuge oder Entwickler.

## Referenztabellen

| Datei | Inhalt |
| --- | --- |
| `compat_2020_vs_2024.json` | 39 Flugzeuge mit Aussagen zu 2020, 2024 und Upgrade Politik (Freitext, `developer_ids`, `sources`) |
| `studio_lines_2024.json` | Wie Studios ihre 2024 Strategie beschreiben |
| `sim_updates.json` | MSFS 2024 Sim Updates mit Datum und Relevanz für Addons |
| `stores_and_channels.json` | Marketplace, Entwicklerstores, flightsim.to usw. |
| `catalogs.json` | Bestehende Kataloge und deren Lücken (Wettbewerb und Datenquellen) |
| `announcement_to_release.json` | Dauer von der Ankündigung bis zum Release je Entwickler |
| `standard_fleet.json` | Größe der MSFS 2024 Standardflotte je Edition |
| `meta.json` | Zähler, Stand, alle Enums mit deutschen Anzeigenamen |

## CSV Exporte

`aircraft.csv` und `developers.csv` sind flache Fassungen für Tabellenprogramme. Listen werden mit "; " verbunden. Die vollständigen Daten stehen nur in den JSON Dateien.
