feat(rennmausakte): Datenherkunft/Nachverfolgung pro Rennmaus
Neuer „Datenherkunft"-Button in der Rennmausakte öffnet einen Dialog, der zeigt, aus welchen Quellen der Eintrag erzeugt wurde: Quelldateien (Stammbäume + Wurfchronik), Anzahl zusammengeführter Datensätze, Eltern-Herleitung (Methode/Konfidenz) und Hinweise (z. B. „per manueller Entscheidung zugeordnet", „Konflikt gelöst", „aus N Datensätzen zusammengeführt"). Import: build_provenance() in merge_and_resolve.py sammelt die Herkunft über alle deduplizierten Datensätze und schreibt sie als Provenance-JSON je Tier in resolved_import.json. Backend: Gerbil.Provenance (nullable text) + Migration AddGerbilProvenance, gemappt im Ingest und im GerbilDto zurückgegeben. Frontend: ProvenanceDialog + Typen + Strings. Tests: Ingest-Round-trip (vorhanden/abwesend), e2e provenance.spec.ts. dotnet(212)/vitest(129)/playwright/tsc/eslint grün. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -878,6 +878,37 @@ export const de = {
|
||||
idCopied: 'ID kopiert',
|
||||
idCopyFailed: 'ID konnte nicht kopiert werden.',
|
||||
},
|
||||
/** NACHVERFOLGUNG: Datenherkunft eines importierten Tiers (Rennmausakte). */
|
||||
provenance: {
|
||||
/** Button-Beschriftung in den Akten-Aktionen. */
|
||||
button: 'Datenherkunft',
|
||||
dialogTitle: 'Nachverfolgungsinformationen',
|
||||
intro: 'Woher stammen die Daten dieses Eintrags? Diese Angaben werden beim Import automatisch erfasst.',
|
||||
/** Überschriften / Feldbeschriftungen. */
|
||||
sourceFilesTitle: 'Quelldateien',
|
||||
sourceFilesCount: (n: number) => (n === 1 ? 'aus 1 Quelle' : `aus ${n} Quellen`),
|
||||
mergedTitle: 'Datensätze',
|
||||
mergedCount: (n: number) =>
|
||||
n === 1 ? 'aus 1 Datensatz' : `zusammengeführt aus ${n} Datensätzen`,
|
||||
fromWurfchronik: 'Enthält Angaben aus der Wurfchronik',
|
||||
parentsTitle: 'Eltern-Herkunft',
|
||||
parentMethodLabel: 'Methode',
|
||||
parentConfidenceLabel: 'Konfidenz',
|
||||
/** Übersetzungen für die technischen Methoden-/Konfidenz-Werte. */
|
||||
methods: {
|
||||
'chart-position': 'Position im Stammbaum',
|
||||
decision: 'Manuelle Entscheidung',
|
||||
} as Record<string, string>,
|
||||
confidences: {
|
||||
low: 'niedrig',
|
||||
medium: 'mittel',
|
||||
high: 'hoch',
|
||||
} as Record<string, string>,
|
||||
notesTitle: 'Hinweise',
|
||||
/** Wenn ein Tier keine Importdaten hat (manuell angelegt). */
|
||||
empty: 'Keine Herkunftsdaten vorhanden.',
|
||||
close: 'Schließen',
|
||||
},
|
||||
common: {
|
||||
loading: 'Lädt …',
|
||||
retry: 'Erneut versuchen',
|
||||
|
||||
Reference in New Issue
Block a user