Files
MABEA/arbeitskacheln/02_identity.md
T
patrickandClaude Sonnet 5 5524ef9ce9
CI / backend-tests (push) Failing after 1m53s
CI / frontend-build (push) Successful in 17s
docs: Arbeitskacheln-Backlog als Dateien angelegt (arbeitskacheln/)
Master-Prompt-Ergebnis vom 2026-09-05 (Epic-Übersicht, vollständige Kachel-
Liste, Abhängigkeitsgraph, MVP-Abgrenzung, Details zu den ersten 20 Kacheln)
aus dem Chat in Dateien überführt statt nur im Gespräch zu bleiben.

00_index.md: Decisions Required, Epic-Übersicht, vollständige Kachel-Tabelle,
Abhängigkeitsgraph, MVP-Abgrenzung.
01_foundation.md / 02_identity.md / 03_digital_file.md: Detailspezifikation
je Kachel (Ziel/Beschreibung/Datenmodell/Rechte/Akzeptanzkriterien/Tests/DoD),
jeweils mit Abgleich gegen den aktuellen MABEA-Ist-Stand.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KC8HYvv6UkCVYheYiTw9DD
2026-09-05 15:16:14 +02:00

210 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Epic 02 — Identity
Details zu IDENT-001, 002, 004, 005010. IDENT-003 (Nummernschemata) noch nicht detailliert,
siehe `00_index.md`-Tabelle.
---
## IDENT-001 — Objekt-ID-Schema
- **Ziel:** Jede Ressource ist technisch eindeutig identifizierbar, unabhängig von
Fachfeldern.
- **Beschreibung:** Primärschlüssel-Strategie für alle Ressourcentypen festlegen (UUID vs.
fortlaufende ID je Tabelle), Konvention dokumentieren.
- **Benutzerwert:** Grundlage für QR-Code/Verknüpfungen — ohne stabile ID keine verlässliche
digitale Identität.
- **Abhängigkeiten:** FOUND-002
- **Datenmodell:** Konvention (kein neues Feld, sondern Festlegung für alle künftigen
Tabellen)
- **Backend/Frontend/Mobile:** —
- **QR-Code:** Grundlage für spätere QR-Kacheln
- **Seriennummer/Inventarnummer:** getrennt davon, siehe IDENT-002/004
- **Akte:** die ID ist der Aufhänger der Akte
- **Rechte:** keine
- **Audit:** nein
- **Akzeptanzkriterien:** dokumentierte Entscheidung (ADR), mind. ein Beispiel-Modell nutzt
sie.
- **Tests:** keine (reine Konvention)
- **DoD:** ADR verabschiedet, in FOUND-002-Migrationsvorlage verankert.
## IDENT-002 — Inventarnummer (manuell)
- **Ziel:** Organisationseigene, menschenlesbare Kennzeichnung neben der technischen ID.
- **Beschreibung:** Freitextfeld, Eindeutigkeit je Organisation erzwingen.
- **Benutzerwert:** Materialwart kann Ressourcen anhand vertrauter Nummern wiederfinden
(Etiketten, Inventarlisten).
- **Abhängigkeiten:** IDENT-001
- **Datenmodell:** `inventarnummer` (Textfeld, UNIQUE je Organisation) an Asset-Tabelle
(folgt ab ASSET-003)
- **Backend:** Validierung Eindeutigkeit bei Anlage/Änderung
- **Frontend:** Eingabefeld bei Ressourcenanlage
- **Mobile:** Anzeige in der Akte
- **QR-Code:** kann Teil des gedruckten Labels sein (Klartext-Fallback)
- **Seriennummer:** getrennt, siehe IDENT-004
- **Akte:** Kernfeld der Identität
- **Rechte:** Ändern nur Materialwart/Administrator
- **Audit:** Änderung der Inventarnummer wird geloggt
- **Akzeptanzkriterien:** doppelte Inventarnummer wird abgelehnt (409), Änderung wird
protokolliert.
- **Tests:** Konflikt-Test, Erfolgstest.
- **DoD:** funktioniert für mind. einen Ressourcentyp (Vorgriff auf ASSET-003, kann testweise
an Dummy-Tabelle validiert werden).
## IDENT-004 — Seriennummer + Eindeutigkeitsprüfung
- **Ziel:** Herstellerseitige eindeutige Kennzeichnung erfassen.
- **Beschreibung:** Seriennummernfeld, Eindeutigkeit optional je Materialtyp konfigurierbar
(manche Ressourcen brauchen keine SN-Eindeutigkeit global, sondern nur je Objektposition
— Lehre aus MABEA: SN ist nur innerhalb einer Position eindeutig, nicht global).
- **Benutzerwert:** Rückverfolgbarkeit bei Rückrufaktionen/Garantiefällen/Diebstahl.
- **Abhängigkeiten:** IDENT-001
- **Datenmodell:** `seriennummer` (Text) an Asset-Instanz
- **Backend:** Eindeutigkeitsprüfung im konfigurierten Scope
- **Frontend:** Eingabefeld, ggf. Scan-Unterstützung (Kamera, spätere Mobile-Kachel)
- **Mobile:** Anzeige/Erfassung
- **QR-Code:** SN kann im gedruckten Label als Klartext stehen, nicht im QR-Inhalt selbst
- **Inventarnummer:** getrennt, siehe IDENT-002
- **Akte:** Kernfeld
- **Rechte:** Ändern nur Materialwart/Administrator
- **Audit:** Änderung wird geloggt
- **Akzeptanzkriterien:** doppelte SN im gleichen Scope wird abgelehnt, in unterschiedlichem
Scope erlaubt.
- **Tests:** beide Fälle abgedeckt.
- **DoD:** wie IDENT-002, funktioniert an Dummy-/Vorgriffs-Tabelle.
## IDENT-005 — Hersteller/Modell-Stammdaten
- **Ziel:** Herstellerangaben strukturiert statt als Freitext im Namen.
- **Beschreibung:** Stammdatentabelle Hersteller, Modellfeld am AssetType, Verknüpfung.
- **Benutzerwert:** Ersatzteilsuche/Rückrufabgleich nach Hersteller möglich, saubere
Filterung.
- **Abhängigkeiten:** IDENT-004
- **Datenmodell:** `hersteller` (id, name), `asset_type.hersteller_id`, `asset_type.modell`
- **Backend:** CRUD Hersteller, Modellfeld in AssetType-Endpunkten
- **Frontend:** Herstellerauswahl im AssetType-Formular
- **Mobile:** Anzeige in Akte
- **QR-Code:** nein
- **Seriennummer/Inventarnummer:** nein
- **Akte:** Stammdatenbereich
- **Rechte:** Ändern nur Materialwart/Administrator
- **Audit:** Änderung wird geloggt
- **Akzeptanzkriterien:** Hersteller anlegen, AssetType damit verknüpfen, Anzeige in Akte
korrekt.
- **Tests:** CRUD-Test, Verknüpfungstest.
- **DoD:** funktioniert für mind. einen AssetType.
## IDENT-006 — QR-Code-Erzeugung
- **Ziel:** Jede Ressource bekommt einen QR-Code, der auf ihre Identität verweist.
- **Beschreibung:** QR-Inhalt = URL-Pfad (`/akte/{ressourcentyp}/{id}`), nicht Volldaten
(Decision Required #3 in `00_index.md` — entschieden: URL-Pfad).
- **Benutzerwert:** Grundlage für schnelles Scannen statt manueller Suche.
- **Abhängigkeiten:** IDENT-001
- **Datenmodell:** kein neues Feld — QR wird aus der Objekt-ID zur Laufzeit generiert, nicht
gespeichert
- **Backend:** Funktion/Endpoint, das QR-Payload (PNG/SVG) für eine ID liefert
- **Frontend:** QR-Vorschau-Komponente
- **Mobile:** gleiche Erzeugung
- **QR-Code:** ist diese Kachel
- **Seriennummer/Inventarnummer:** stehen NICHT im QR-Inhalt (nur Klartext-Fallback auf dem
Label, siehe IDENT-007)
- **Akte:** Ziel des QR-Verweises
- **Rechte:** Erzeugen wie Lese-Recht der Ressource
- **Audit:** nein (reine Generierung, kein Datenzustand)
- **Akzeptanzkriterien:** QR-Code für existierende ID erzeugt, für unbekannte ID Fehler.
- **Tests:** Erzeugungstest, Dekodier-Test (Payload ergibt korrekte URL).
- **DoD:** QR-Bild lässt sich mit Standard-Scanner lesen und ergibt korrekten Pfad.
## IDENT-007 — QR-Code-Druck (Label)
- **Ziel:** Druckfertiges Etikett mit QR + Klartext-Fallback.
- **Beschreibung:** PDF-Label-Generierung (Vektor, skaliert verlustfrei), Klartext = Name +
Inventarnummer/Seriennummer.
- **Benutzerwert:** Materialwart kann Etiketten für neue Ressourcen direkt drucken.
- **Abhängigkeiten:** IDENT-006
- **Datenmodell:** keins
- **Backend:** GET-Endpoint liefert PDF
- **Frontend:** Druckbutton in der Akte/Ressourcenliste
- **Mobile:** eher Desktop-Funktion (Etikettendrucker), Mobile nur Anzeige
- **QR-Code:** wird hier eingebettet
- **Seriennummer/Inventarnummer:** als Klartext auf dem Label
- **Akte:** Aktion aus der Akte heraus auslösbar
- **Rechte:** wie Lese-Recht
- **Audit:** nein
- **Akzeptanzkriterien:** PDF enthält scanbaren QR + korrekten Klartext.
- **Tests:** Label-Erzeugungstest (Snapshot/Struktur, nicht Pixel).
- **DoD:** auf echtem Etikettendrucker test-gedruckt und scanbar.
## IDENT-008 — QR-Scan → Akte öffnen
- **Ziel:** Zentraler Einstiegspunkt „scannen → sofort alle Infos sehen".
- **Beschreibung:** Frontend-Route, die den QR-Pfad auflöst und direkt FILE-006 lädt.
- **Benutzerwert:** Kernnutzen des ganzen Identity-Konzepts — ohne das bleibt QR nur Deko.
- **Abhängigkeiten:** IDENT-006, FILE-006
- **Datenmodell:** keins
- **Backend:** keins zusätzlich (nutzt FILE-001-Aggregations-Endpoint)
- **Frontend:** Scan-Route + Kamera-Komponente
- **Mobile:** zentraler mobiler Workflow-Einstieg (siehe MOBILE-002)
- **QR-Code:** ist diese Kachel
- **Seriennummer/Inventarnummer:** nur Anzeige
- **Akte:** Zielseite
- **Rechte:** wie Akte-Lese-Recht, 404 falls Ressourcen-ID unbekannt/kein Zugriff
- **Audit:** nein
- **Akzeptanzkriterien:** Scan eines gültigen QR öffnet korrekt die Akte; ungültiger Code
zeigt Fehlermeldung, keinen Absturz.
- **Tests:** Routing-Test mit gültiger/ungültiger ID.
- **DoD:** funktioniert auf echtem Smartphone im Feldtest.
## IDENT-009 — QR-Neuvergabe & QR-Historie
- **Ziel:** Verlorenes/beschädigtes Etikett ersetzen, ohne die Ressourcen-ID zu verlieren.
- **Beschreibung:** Da QR nur die ID referenziert (IDENT-006), ist „neu vergeben" technisch
nur ein neuer Druck — Kachel deckt aber den Sonderfall ab, dass zwischenzeitlich ALTE
gedruckte Etiketten im Umlauf sein können und das nachvollziehbar bleiben muss.
- **Benutzerwert:** Klarheit, welches physische Etikett aktuell gültig ist.
- **Abhängigkeiten:** IDENT-006
- **Datenmodell:** `qr_druck_ereignis` (ressourcen_id, zeitpunkt, benutzer_id) — nur
Protokoll, kein Zustand am Objekt selbst
- **Backend:** Log-Eintrag bei jedem Label-Druck (Kopplung an IDENT-007)
- **Frontend:** „zuletzt gedruckt am" in der Akte anzeigen
- **Mobile:** nur Anzeige
- **QR-Code:** Kernthema
- **Seriennummer/Inventarnummer:** nein
- **Akte:** Historienbereich
- **Rechte:** wie Lese-Recht
- **Audit:** ist selbst ein Audit-Protokoll
- **Akzeptanzkriterien:** jeder Druckvorgang erzeugt einen Eintrag, in der Akte sichtbar.
- **Tests:** Protokoll-Test bei Druckaufruf.
- **DoD:** funktioniert an mind. einer Ressource nachweisbar.
## IDENT-010 — Barcode/GTIN (optional, P3)
- **Ziel:** Handelsübliche Verbrauchsgüter über Hersteller-Barcode statt eigener Nummer
erfassen.
- **Beschreibung:** Zusatzfeld GTIN/EAN, optionale Barcode-Scan-Unterstützung neben QR.
- **Benutzerwert:** Schnellere Ersterfassung bei Standard-Verbrauchsmaterial (z.B.
Verbandsmaterial mit Herstellerbarcode).
- **Abhängigkeiten:** IDENT-001
- **Datenmodell:** `gtin` (Text, optional) an Asset/Consumable
- **Backend:** Validierung Format (EAN-13/GTIN-Prüfsumme)
- **Frontend:** Barcode-Scan-Eingabehilfe
- **Mobile:** Scan-Unterstützung
- **QR-Code:** eigenständig daneben, kein Ersatz
- **Seriennummer/Inventarnummer:** ergänzend, nicht Ersatz
- **Akte:** Stammdatenbereich
- **Rechte:** wie Materialwart-Schreibrecht
- **Audit:** Änderung wird geloggt
- **Akzeptanzkriterien:** gültige GTIN wird angenommen, ungültige abgelehnt.
- **Tests:** Prüfsummen-Test.
- **DoD:** funktioniert für mind. ein Verbrauchsmaterial-Beispiel. Priorität P3 — kann
grundsätzlich zurückgestellt werden.
---
**MABEA-Ist-Stand-Abgleich:** IDENT-001 (Code/UUID), 002/003 (`objekt.code`/
`objektposition.code`, Nummernschema mit Präfix), 004 (Seriennummer je Objektposition/
GeraetInstanz, Eindeutigkeit korrekt scope-begrenzt), 006/007/008 (Code128-Label + PDF +
Scan→Kontrolle-Route) sind vorhanden, allerdings Code128 statt QR und ohne
Digital-File-Zielseite (die gibt es noch nicht, siehe FILE-Epic). IDENT-005
(Hersteller/Modell), IDENT-009 (QR-Historie), IDENT-010 (Barcode/GTIN) fehlen komplett.