> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.go-lizard.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Funktionsweise

> Was zwischen Tag-Scan und Betriebsmittel-Profil im Hintergrund passiert — verständlich erklärt.

# So funktioniert der DynTag-Service

Vom Scannen des QR-Codes bis zum Erscheinen des Betriebsmittel-Profils vergeht oft weniger als eine Sekunde. In dieser Sekunde laufen mehrere Schritte ab — alle darauf optimiert, schnell und datenschutzfreundlich zu sein.

## Der Weg vom Scan bis zum Ziel

<Steps>
  <Step title="Tag scannen">
    Du hältst dein Smartphone an einen DynTag — egal ob QR-Code, NFC-Chip oder Fremdcode. Das Telefon liest die Adresse, z. B. `dyntag.link/AbC123XYz`.
  </Step>

  <Step title="DynTag-Service nimmt die Anfrage entgegen">
    Der Code (`AbC123XYz`) wird vom Service geprüft: Ist das Format gültig? Existiert der Tag? Ist er einem Betriebsmittel zugeordnet?
  </Step>

  <Step title="Zieladresse abrufen">
    Der Service schaut zuerst im schnellen Zwischenspeicher (Cache) nach. Findet er dort nichts, fragt er die Datenbank. So bleibt die Antwort auch bei vielen gleichzeitigen Scans flott.
  </Step>

  <Step title="Zugriff datenschutzkonform protokollieren">
    Der Service hält fest, dass ein Tag gescannt wurde — aber nur mit **maskierter IP** und ohne Standortdaten. Details: [Datenschutz](datenschutz).
  </Step>

  <Step title="Weiterleitung zum Betriebsmittel">
    Dein Browser oder die Lizard-App wird auf das passende Betriebsmittel-Profil weitergeleitet — mit allen Pfaden und Parametern, die du gegebenenfalls mitgegeben hast.
  </Step>
</Steps>

## Cache: Warum der zweite Scan noch schneller ist

<Info>
  Beim ersten Scan eines Tags muss der Service die Datenbank fragen. Das Ergebnis merkt er sich für 24 Stunden. Jeder weitere Scan in dieser Zeit wird aus dem Speicher beantwortet — meist im Bereich von Millisekunden.
</Info>

Ändert ein Administrator das Ziel eines Tags in Lizard, wird der Cache-Eintrag sofort verworfen. So siehst du immer das aktuelle Ziel, nie ein veraltetes.

## Pfad- und Parameter-Weiterleitung

DynTags können mehr als nur "Code → Profil". Du kannst zusätzliche Informationen mitgeben, die der Service an die Zieladresse weiterreicht.

### Pfad anhängen

```
Tag-Adresse:    dyntag.link/AbC123XYz
Mit Pfad:       dyntag.link/AbC123XYz/dokumente
Wird zu:        app.go-lizard.com/items/leiter-42/dokumente
```

So springst du mit einem einzigen Tag direkt in einen Unterbereich — beispielsweise zur Dokumentenliste oder zur letzten Prüfung.

### Query-Parameter durchreichen

```
Tag-Adresse:    dyntag.link/AbC123XYz?lang=de
Wird zu:        app.go-lizard.com/items/leiter-42?lang=de
```

<Tip>
  Hat die Zieladresse bereits Parameter, werden diese mit den vom Tag übergebenen kombiniert. Bei Konflikten gewinnt der Wert aus dem Tag-Aufruf.
</Tip>

## Tag-Status: Reserviert vs. Verbunden

Jeder DynTag-Code befindet sich in einem von zwei Zuständen:

| Status         | Bedeutung                                                      | Was passiert beim Scan?                      |
| -------------- | -------------------------------------------------------------- | -------------------------------------------- |
| **Reserviert** | Code existiert, ist aber noch keinem Betriebsmittel zugewiesen | Lizard zeigt Dialog *"Tag jetzt verbinden?"* |
| **Verbunden**  | Code zeigt auf ein konkretes Betriebsmittel                    | Sofortige Weiterleitung zum Profil           |

<Note>
  Trennst du eine Verbindung in Lizard, fällt der Code zurück auf **Reserviert**. Er bleibt erhalten und kann jederzeit neu verbunden werden — der Aufkleber muss nicht ersetzt werden.
</Note>

## Das `/json`-Format für externe Systeme

<Info>
  Diese Funktion richtet sich an externe Anwendungen wie Lizard Connect, die Betriebsmittel-Daten programmatisch verarbeiten. Als reiner Endanwender begegnet sie dir typischerweise nicht.
</Info>

Hängst du `/json` an eine DynTag-Adresse an, liefert der Service maschinenlesbare Daten zum Betriebsmittel statt einer Weiterleitung:

```
https://dyntag.link/AbC123XYz/json
```

Das wird häufig genutzt, wenn Drittsysteme den Status oder die öffentlichen Eigenschaften eines Betriebsmittels abfragen — zum Beispiel in einer eigenen Wartungs-App oder einem Kunden-Portal.

## Robust gegen Fehler

<AccordionGroup>
  <Accordion title="Tag existiert nicht oder ist defekt" icon="circle-exclamation">
    Wird ein unbekannter oder fehlerhafter Code aufgerufen, leitet der Service auf eine freundliche Fehlerseite weiter — keine kryptischen 404-Fehler.
  </Accordion>

  <Accordion title="Hohe Last" icon="gauge-high">
    Der Service begrenzt die Anzahl der Anfragen pro Adresse, um sich gegen Überlastung und automatisierte Angriffe zu schützen. Für normale Anwender ist das unsichtbar — du spürst es nur, wenn dieselbe Adresse innerhalb einer Minute hunderte Male aufgerufen wird.
  </Accordion>

  <Accordion title="Tracking-Ausfall blockiert nicht" icon="chart-line">
    Selbst wenn das Analytics-System (für anonyme Statistiken) gerade nicht erreichbar ist, leitet der Service trotzdem korrekt weiter. Die Weiterleitung hat immer Vorrang vor der Statistik.
  </Accordion>
</AccordionGroup>

## Sicherheit der Zieladressen

Beim Verbinden eines Tags mit einer Zieladresse prüft Lizard:

| Prüfung      | Was wird abgelehnt?                                                                             |
| ------------ | ----------------------------------------------------------------------------------------------- |
| **Schema**   | Nur `http://` und `https://` — kein `javascript:`, `data:`, `file:` oder andere Spezialschemata |
| **Hostname** | Adressen ohne Domain (z. B. `https:///pfad`)                                                    |
| **Format**   | Allgemeine URL-Validität (gemäß Internet-Standard)                                              |

<Warning>
  Diese Prüfung verhindert, dass ein Tag versehentlich oder bösartig auf eine Adresse zeigt, die im Browser Code ausführen oder eine lokale Datei öffnen könnte.
</Warning>

## Nächste Schritte

<CardGroup cols={2}>
  <Card title="Datenschutz im Detail" icon="shield-halved" href="datenschutz">
    Welche Daten gespeichert werden — und welche bewusst nicht.
  </Card>

  <Card title="Häufige Fragen" icon="circle-question" href="faq">
    Antworten auf typische Fragen zu DynTags.
  </Card>
</CardGroup>
