Beim Ablegen eines statischen Codes prüft der Server, ob in derselben Gruppe schon ein statischer Code mit identischem Typ und Inhalt liegt. Wenn ja: 409 mit dem gefundenen Eintrag (Name, Datum), und die Oberfläche zeigt eine Warnung samt Knopf Trotzdem ablegen.
Eine Rückfrage, keine Sperre — zwei Fassungen desselben Codes können gewollt sein.
Abgrenzungen
Nur statische Codes. Zwei dynamische Codes mit demselben Ziel sind der Normalfall, sobald zwei Kampagnen getrennt gezählt werden.
Verglichen wird der Inhalt, nicht die Gestaltung. Derselbe Code in Schwarz-Weiß und in Hausfarben gilt als Dublette — gescannt wird beides Mal dasselbe. Das steht so in der Warnung.
Gesucht wird nur in der Zielgruppe: Ein Treffer aus einer fremden Gruppe wäre nutzlos und verriete deren Bestand.
Der Vergleich läuft über jsonb-Gleichheit — Schlüsselreihenfolge im JSON spielt keine Rolle (mitgeprüft).
Geändert
src/lib/duplicates.ts (neu) — die Suche
src/app/api/codes/route.ts — Feld allowDuplicate, 409-Antwort mit duplicate
src/lib/api-client.ts — ApiError trägt jetzt status und details
Geprüft mit einer eigenen Testreihe: 24 von 24 — über die API (zweiter Anlauf, andere Gestaltung, allowDuplicate, anderer Inhalt, Schlüsselreihenfolge, dynamische Codes unbehelligt) und über die Oberfläche (Warnung, Name im Text, Verschwinden bei geändertem Inhalt, Wiederkehren beim ursprünglichen, „Trotzdem ablegen“).
Beim Ablegen eines statischen Codes prüft der Server, ob in derselben Gruppe schon ein statischer Code mit identischem Typ und Inhalt liegt. Wenn ja: **409** mit dem gefundenen Eintrag (Name, Datum), und die Oberfläche zeigt eine Warnung samt Knopf **Trotzdem ablegen**.
Eine Rückfrage, keine Sperre — zwei Fassungen desselben Codes können gewollt sein.
**Abgrenzungen**
- Nur **statische** Codes. Zwei dynamische Codes mit demselben Ziel sind der Normalfall, sobald zwei Kampagnen getrennt gezählt werden.
- Verglichen wird der **Inhalt**, nicht die Gestaltung. Derselbe Code in Schwarz-Weiß und in Hausfarben gilt als Dublette — gescannt wird beides Mal dasselbe. Das steht so in der Warnung.
- Gesucht wird nur in der **Zielgruppe**: Ein Treffer aus einer fremden Gruppe wäre nutzlos und verriete deren Bestand.
- Der Vergleich läuft über `jsonb`-Gleichheit — Schlüsselreihenfolge im JSON spielt keine Rolle (mitgeprüft).
**Geändert**
- `src/lib/duplicates.ts` (neu) — die Suche
- `src/app/api/codes/route.ts` — Feld `allowDuplicate`, 409-Antwort mit `duplicate`
- `src/lib/api-client.ts` — `ApiError` trägt jetzt `status` und `details`
- `src/components/qr-generator.tsx` — Warnung, „Trotzdem ablegen“
- `docs/funktionen.md`
Geprüft mit einer eigenen Testreihe: 24 von 24 — über die API (zweiter Anlauf, andere Gestaltung, `allowDuplicate`, anderer Inhalt, Schlüsselreihenfolge, dynamische Codes unbehelligt) und über die Oberfläche (Warnung, Name im Text, Verschwinden bei geändertem Inhalt, Wiederkehren beim ursprünglichen, „Trotzdem ablegen“).
Closes #6
Ein statischer Code traegt seinen Inhalt selbst — zweimal derselbe Inhalt
ergibt zweimal exakt dasselbe Bild. Bisher entstand der zweite Eintrag
stillschweigend.
Das Anlegen antwortet nun mit 409 und nennt den vorhandenen Eintrag samt
Namen und Datum; die Oberflaeche zeigt das als Warnung mit dem Knopf
"Trotzdem ablegen". Eine Rueckfrage, keine Sperre — zwei Fassungen
desselben Codes koennen gewollt sein.
Verglichen wird Typ und Inhalt innerhalb der Gruppe, nicht die Gestaltung.
Dynamische Codes bleiben aussen vor: zwei Kurz-Links auf dasselbe Ziel
sind der Normalfall, sobald getrennt gezaehlt werden soll.
ApiError traegt dafuer jetzt Status und Antwortkoerper — eine gemeldete
Dublette ist keine Sackgasse, sondern eine Rueckfrage.
Refs #6
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Beim Ablegen eines statischen Codes prüft der Server, ob in derselben Gruppe schon ein statischer Code mit identischem Typ und Inhalt liegt. Wenn ja: 409 mit dem gefundenen Eintrag (Name, Datum), und die Oberfläche zeigt eine Warnung samt Knopf Trotzdem ablegen.
Eine Rückfrage, keine Sperre — zwei Fassungen desselben Codes können gewollt sein.
Abgrenzungen
jsonb-Gleichheit — Schlüsselreihenfolge im JSON spielt keine Rolle (mitgeprüft).Geändert
src/lib/duplicates.ts(neu) — die Suchesrc/app/api/codes/route.ts— FeldallowDuplicate, 409-Antwort mitduplicatesrc/lib/api-client.ts—ApiErrorträgt jetztstatusunddetailssrc/components/qr-generator.tsx— Warnung, „Trotzdem ablegen“docs/funktionen.mdGeprüft mit einer eigenen Testreihe: 24 von 24 — über die API (zweiter Anlauf, andere Gestaltung,
allowDuplicate, anderer Inhalt, Schlüsselreihenfolge, dynamische Codes unbehelligt) und über die Oberfläche (Warnung, Name im Text, Verschwinden bei geändertem Inhalt, Wiederkehren beim ursprünglichen, „Trotzdem ablegen“).Closes #6