Phase A: acht weitere QR-Typen
E-Mail, SMS, WhatsApp, WLAN, Standort, vCard, Zahlung und App-Link sind umgesetzt. Damit sind 9 der 15 Typen nutzbar. Erweiterungen am Typ-Vertrag, die dafuer noetig waren: - supportsStatic: nicht jeder Typ kann statisch. Beim App-Link steht das Ziel erst beim Scannen fest, also gibt es ihn nur dynamisch. - RedirectContext: die Weiterleitung reicht den User-Agent durch, damit der App-Link iOS, Android und alles Uebrige unterscheiden kann. - assertDynamicPossible(): supportsDynamic ist eine Eigenschaft des Typs, aber nicht jede Eingabe taugt dafuer. Ein GiroCode ist kein Web-Ziel, obwohl der Typ 'Zahlung' als Zahlungslink sehr wohl dynamisch sein kann. Ohne diese Probe liess sich ein Code speichern, der erst beim Scannen aufgefallen waere - also nach dem Drucken. Greift beim Anlegen und beim Bearbeiten. Sorgfalt bei den Formaten, gesammelt in src/lib/qr/encoding.ts: - WLAN maskiert ; , : \\ und setzt rein hexadezimale Werte in Anfuehrungszeichen, sonst deuten Geraete sie als Hexzahl. - vCard 3.0 mit CRLF, Maskierung und Faltung nach 75 Oktetten, oktettweise gezaehlt, damit kein mehrbytiges Zeichen zerrissen wird. - GiroCode nach EPC069-12 mit fester Feldreihenfolge, IBAN-Pruefsumme nach Modulo 97 und der 331-Byte-Grenze. - Rufnummern werden nach E.164 normalisiert, '(0)' faellt weg. - Standort nimmt Koordinaten auch aus einem Google-Maps- oder Apple-Link an. Formular-Bausteine (Select, Textarea, Checkbox, FieldRow, FieldSet) fuer die mehrfeldrigen Typen ergaenzt. Geprueft: 225 Pruefungen, davon 80 neu - Dekodierung je Typ aus dem fertigen PNG, Validierung, Betriebsarten, geraeteabhaengige Weiterleitung und die Formulare im Browser.
This commit is contained in:
@@ -3,9 +3,9 @@
|
||||
Eine Webanwendung zum Erzeugen von QR-Codes — als Docker-Compose-Stack aus
|
||||
zwei Containern: der Next.js-Anwendung und einer PostgreSQL-Datenbank.
|
||||
|
||||
**Version 1** unterstützt den QR-Typ **Website/URL**, statisch wie dynamisch.
|
||||
Die übrigen 14 Typen sind bereits in der Oberfläche sichtbar und für Version 2
|
||||
vorbereitet.
|
||||
Umgesetzt sind **9 der 15 QR-Typen**. Die übrigen sechs sind in der Oberfläche
|
||||
sichtbar, als Platzhalter markiert und lassen sich über die Verwaltung
|
||||
ausblenden.
|
||||
|
||||
---
|
||||
|
||||
@@ -137,9 +137,41 @@ werden — der Hostname darin bleibt `db` (der Servicename aus
|
||||
|
||||
### 1. Typ wählen
|
||||
|
||||
Die Startseite zeigt unter „Was möchtest du erstellen?“ ein Kachel-Grid aller
|
||||
15 QR-Typen. In Version 1 ist **Website** aktiv (Badge „Beliebt“); die übrigen
|
||||
Kacheln sind sichtbar, aber deaktiviert (Badge „Bald verfügbar“).
|
||||
Die Startseite zeigt unter „Was möchtest du erstellen?“ ein Kachel-Grid der
|
||||
freigegebenen QR-Typen. Umgesetzte Typen sind anklickbar, die übrigen tragen
|
||||
das Badge „Bald verfügbar“.
|
||||
|
||||
| Typ | Kodiert als | Statisch | Dynamisch |
|
||||
| --- | --- | :-: | :-: |
|
||||
| Website | die URL selbst | ✓ | ✓ |
|
||||
| E-Mail | `mailto:` mit Betreff und Text | ✓ | ✓ |
|
||||
| SMS | `SMSTO:` | ✓ | ✓ |
|
||||
| WhatsApp | `https://wa.me/…` | ✓ | ✓ |
|
||||
| Standort | `geo:` — dynamisch über OpenStreetMap | ✓ | ✓ |
|
||||
| vCard | vCard 3.0 | ✓ | — |
|
||||
| WLAN | `WIFI:` | ✓ | — |
|
||||
| App-Link | Weiterleitung je nach Gerät | — | ✓ |
|
||||
| Zahlung | GiroCode (EPC069-12) oder Zahlungslink | ✓ | nur Link |
|
||||
|
||||
Warum manche Typen nur eine Betriebsart können:
|
||||
|
||||
- **vCard und WLAN** werden vom Gerät direkt ausgewertet — die Kamera legt
|
||||
einen Kontakt an oder richtet das Netz ein. Über eine Kurz-URL würde
|
||||
stattdessen nur ein Browser aufgehen.
|
||||
- **App-Link** kann nicht statisch sein: welches Ziel richtig ist, steht erst
|
||||
beim Scannen fest. Die Weiterleitung wertet den User-Agent aus und schickt
|
||||
iOS in den App Store, Android zu Google Play und alles Übrige auf die
|
||||
Ausweichadresse.
|
||||
- **GiroCode** ist kein Web-Ziel, sondern ein Datensatz für Banking-Apps. Als
|
||||
dynamischer Code funktioniert daher nur die Variante „Zahlungslink“ — die
|
||||
Anwendung weist das beim Speichern ausdrücklich ab, statt einen Code
|
||||
entstehen zu lassen, der beim Scannen ins Leere führt.
|
||||
|
||||
> **Zum WLAN-Code:** Das Passwort steht im Klartext im Code — wer ihn scannt
|
||||
> oder abfotografiert, kennt es. Für Gästenetze ist das gewollt. Besteht ein
|
||||
> Netzwerkname oder Passwort ausschließlich aus Hex-Ziffern (etwa `abc123`),
|
||||
> setzt die Anwendung ihn wie in der Spezifikation vorgesehen in
|
||||
> Anführungszeichen — sonst würden manche Geräte den Wert als Hexzahl deuten.
|
||||
|
||||
### 2. Statisch oder dynamisch
|
||||
|
||||
|
||||
Reference in New Issue
Block a user