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:
@@ -62,6 +62,32 @@ export interface Gerbil {
|
||||
profilePhotoUrl?: string | null
|
||||
spottingType?: string | null
|
||||
isCastrated?: boolean
|
||||
/**
|
||||
* NACHVERFOLGUNG: Datenherkunft des Import-Eintrags als JSON-String (vom
|
||||
* Python-Merge erzeugt; siehe {@link GerbilProvenance} für die geparste Form).
|
||||
* null = manuell angelegtes Tier / keine Importdaten.
|
||||
*/
|
||||
provenance?: string | null
|
||||
}
|
||||
|
||||
/**
|
||||
* NACHVERFOLGUNG: geparste Datenherkunft eines importierten Tiers (JSON aus
|
||||
* {@link Gerbil.provenance}). Beschreibt, WELCHE Quellinformationen den
|
||||
* Datenbankeintrag erzeugt haben.
|
||||
*/
|
||||
export interface GerbilProvenance {
|
||||
/** Alle Quelldateien (Stammbäume / Wurfchronik), die beigetragen haben. */
|
||||
sourceFiles: string[]
|
||||
/** Anzahl der Rohdatensätze, die zu diesem Tier zusammengeführt wurden. */
|
||||
mergedRecordCount: number
|
||||
/** Hat ein Wurfchronik-Treffer beigetragen? */
|
||||
fromWurfchronik: boolean
|
||||
/** Wie die Eltern abgeleitet wurden (z. B. "chart-position", "decision"). */
|
||||
parentMethod?: string
|
||||
/** Konfidenz der Eltern-Ableitung (z. B. "low" | "medium" | "high"). */
|
||||
parentConfidence?: string
|
||||
/** Menschlich lesbare Herkunftshinweise (deutsch). */
|
||||
notes: string[]
|
||||
}
|
||||
|
||||
/** Payload for POST /gerbils. */
|
||||
|
||||
Reference in New Issue
Block a user