/**
 * Vom Wort des Prüflings zum Wort des Katalogs.
 *
 * ## Warum es das gibt
 *
 * Der Wortschatz eines Kursteilnehmers ist nicht der des Gesetzgebers.
 * Nachgemessen am amtlichen Katalog finden **null Fragen**: „Diebstahl“,
 * „gestohlen“, „verloren“, „Pfefferspray“, „Elektroschocker“, „Umzug“,
 * „Todesfall“, „Springmesser“. Der Katalog sagt stattdessen „abhanden“,
 * „Reizstoff“, „Elektroimpulsgerät“, „Wohnung“, „verstorben“. Das sind genau
 * die Wörter, die niemand tippt, der sie noch nicht kennt – und das ist die
 * erste Suche, die ein Kursteilnehmer eintippt.
 *
 * ## Warum als Festwert im Quelltext und nicht als Inhaltsdatei
 *
 * Dieselbe Überlegung wie bei `hilfe.ts` und `kontakt.ts`: Die Liste ist
 * klein, sie gehört zur Bedienung und nicht zum Lehrstoff, und sie ist mit
 * dem Quelltext versioniert und getestet. Eine eigene Inhaltsdatei brächte
 * Schema, Validierung im Hauptprozess, einen Ladeweg und einen
 * Pflegeprozess – für zwei Dutzend Wortpaare.
 *
 * ## Sie wirkt sichtbar, nie heimlich
 *
 * Es findet **keine** stille Erweiterung der Suche statt. Die Brücke wird als
 * Angebot mit der Zahl in der Beschriftung gezeigt: „Der Katalog nennt das
 * ‚Sicherheitsbehältnis‘ – auch danach suchen (23 Fragen)“. Wer eine
 * Trefferliste sieht, soll wissen, wonach gesucht wurde.
 *
 * ## Was sie nicht ist
 *
 * Kein Glossar – das erklärt Begriffe und steht in `content/glossar.json`.
 * Kein Stemmer und keine Tippfehlertoleranz. Nur eine Übersetzung zwischen
 * zwei Wortschätzen, für die Fälle, in denen der Katalog schweigt.
 */

export interface Brueckeneintrag {
  /** Wörter, die jemand tippt, der die Fachsprache nicht kennt. */
  readonly gesucht: readonly string[];
  /** Wörter, unter denen der Katalog dieselbe Sache führt. */
  readonly katalog: readonly string[];
}

export const BEGRIFFSBRUECKE: readonly Brueckeneintrag[] = Object.freeze([
  Object.freeze({
    gesucht: Object.freeze(['tresor', 'waffenschrank', 'panzerschrank', 'safe', 'stahlschrank']),
    katalog: Object.freeze(['Sicherheitsbehältnis', 'Widerstandsgrad', 'Aufbewahrung']),
  }),
  Object.freeze({
    gesucht: Object.freeze([
      'diebstahl',
      'gestohlen',
      'geklaut',
      'klauen',
      'verloren',
      'weggekommen',
      'einbruch',
    ]),
    katalog: Object.freeze(['abhanden', 'Verlust', 'unverzüglich']),
  }),
  Object.freeze({
    gesucht: Object.freeze(['pfefferspray', 'reizgas', 'tränengas', 'cs-gas', 'abwehrspray']),
    katalog: Object.freeze(['Reizstoff']),
  }),
  Object.freeze({
    gesucht: Object.freeze(['elektroschocker', 'taser', 'schocker']),
    katalog: Object.freeze(['Elektroimpulsgerät']),
  }),
  Object.freeze({
    gesucht: Object.freeze(['springmesser', 'butterflymesser', 'faustmesser', 'klappmesser']),
    katalog: Object.freeze(['Messer', 'Hieb', 'Stoß']),
  }),
  Object.freeze({
    gesucht: Object.freeze(['erbwaffe', 'geerbt', 'vererbt', 'todesfall', 'gestorben', 'nachlass']),
    katalog: Object.freeze(['Erbe', 'verstorben', 'Blockiersystem']),
  }),
  Object.freeze({
    gesucht: Object.freeze(['umzug', 'umgezogen', 'ummelden', 'adressänderung', 'wohnungswechsel']),
    katalog: Object.freeze(['Wohnung', 'anzeigen']),
  }),
  Object.freeze({
    gesucht: Object.freeze(['nachtsichtgerät', 'laserpointer', 'zielhilfe', 'rotpunkt']),
    katalog: Object.freeze(['Zielscheinwerfer']),
  }),
  Object.freeze({
    gesucht: Object.freeze(['betrunken', 'alkoholisiert', 'drogen', 'promille']),
    katalog: Object.freeze(['Alkohol']),
  }),
  Object.freeze({
    gesucht: Object.freeze(['putzen', 'reinigen', 'pflegen', 'ölen']),
    katalog: Object.freeze(['instand']),
  }),
  Object.freeze({
    gesucht: Object.freeze(['dekowaffe', 'deko', 'salutwaffe', 'attrappe']),
    katalog: Object.freeze(['unbrauchbar', 'Dekoration']),
  }),
  Object.freeze({
    gesucht: Object.freeze(['sammler', 'sammeln']),
    katalog: Object.freeze(['Sammlung']),
  }),
]);
