feat(deploy): TrueNAS Custom-App + Auto-Deploy, plus aufgelaufene Arbeit
Some checks failed
CI / Backend Tests (.NET) (push) Successful in 1m11s
CI / Frontend Tests (Node/Vite) (push) Failing after 4m59s
CI / Docker Build & Push (push) Has been skipped
CI / Deploy auf TrueNAS (Custom App) (push) Has been skipped

Deployment:
- custom-app.compose.yaml: self-contained Compose fuer TrueNAS "Custom App"
  (absolute Host-Bind-Pfade, postgres:18, pull_policy always, Port 8090)
- scripts/truenas-deploy.sh: Host-Skript create/redeploy via midclt (App
  bleibt unter Apps sichtbar) inkl. Image-Pull + Health-Check
- ci.yml Deploy-Job: laeuft auf ubuntu-latest-Runner, kopiert Deploy-Dateien
  per SSH auf den NAS-Host und triggert truenas-deploy.sh (statt runs-on goldeye)
- compose.yaml/.env.example: postgres:18 (Locale-Match zur Quell-DB), Port 8090
- .gitignore: .agents/, tools/rag/, deploy/truenas/.env (Secrets/Scratch)

Aufgelaufene Feature-Arbeit (verified/Freeze, Migrationen, Import-Triage):
- GerbilOverride/VerifiedGerbil-Endpoints + GerbilSnapshotService + Tests
- EF-Migrationen (ShowInChronicle, Stillborn, BirthOrder, ManualFlag, DSGVO)
- Frontend VerifizierteTierePage + verified-API + e2e-Spec
- diverse Import-/Triage-Skripte und -Tests

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-19 09:19:11 +02:00
parent 84365bba7f
commit 45b8533f18
93 changed files with 20477 additions and 432 deletions

View File

@@ -1,130 +1,406 @@
# Ticket-Triage — Lauf (56 Tickets)
# Ticket-Triage — Matrix
**Ergebnis:** {'needs-implementation': 24, 'rueckfrage': 8, 'resolved-alreadyfixed': 24}
Stand: automatischer Triage-Lauf. 74 von 77 Tickets ausgewertet, 3 ohne Ergebnis (nachzutriagieren).
## Umzusetzen (needs-implementation) — nach Cluster
- Rückfrage gestellt (wartet auf Züchterin): **25**
- An Umsetzungs-Cluster übergeben: **49**
- fixLayer-Verteilung: {'import-data': 24, 'import-logic': 23, 'frontend': 7, 'needs-info': 19, 'backend': 1}
## Cluster (nach overlapKey)
### Cluster: non-resident (3)
### rpro3-uebernahme (5 Ticket(s) · import-data, import-logic, needs-info)
Dateien: GerbilManagerWebAPI/Endpoints/AcquisitionEndpoints.cs, GerbilManagerWebAPI/Import/Rpro3/Rpro3Dedup.cs, GerbilManagerWebAPI/Import/Rpro3/Rpro3ImportService.cs, GerbilManagerWebAPI/Import/Rpro3/rpro3-decisions.json, GerbilManagerWebAPI/Models/AcquisitionRecord.cs, tools/import/_rpro3.db, tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py, tools/import/rpro3_lookup.py
- [Cluster] **Jana: Daten aus RennmausPro übernehmen (Herkunft Clan of little Longnoses)** (Jana, S/high) — Resolution in tools/import/conflict-decisions.json (per externalRef ...adb0649c... oder name-only "Jana") mit originBreeder="Clan of little longnoses", correctDob="07.12.2009", gender="female", genotype="aa c[chm]c[h] DD ee[f] Gg Pp spsp", farbschlag="Colourpoint-Kohlfuchsschimme
`id=4e7e86bc-c7fc-498b-be5a-1cf019a5768e`
- [Cluster] **RennmausPro-Daten + Fotos für Blacky × Kuke Nachkommen übernehmen** (Domi, L/medium) — rpro3-Übernahme im Cluster umsetzen: rids sicher zuordnen (Blacky=1, Kuke=2, Alvin=3, Eddy=34, Flori=143, Feivel per Namen noch suchen), rpro3-decisions.json um Merge/Farbe/Genotyp/DOB/Herkunft ergänzen, Kruke/Kuke-Namensmerge klären, prüfen welche DB-Tiere den 4 rpro3-Kindern en
`id=ddacd093-b3f4-419f-911d-39ef9e746ae3`
- [Cluster] **RennmausPro-Gesundheitsdaten und Gewichte für Blacky (und alle Tiere) übernehmen** (Blacky von PZ Seligenstadt, L/medium) — Im rpro3-Import (Rpro3ImportService.cs, BuildHealthAndWeights / GerbilIdOfRid) die Weights/Health/Fotos auf das per Identität gematchte, bereits existierende Stammbaum-Gerbil abbilden statt auf ein neues rpro3-Gerbil (Reconciliation rid↔vorhandene Gerbil-Id, analog Ahnen-Merge f3
`id=2bc311df-2f1e-400c-8fa0-2468cc9c9d9b`
- [Cluster] **Blacky von PZ Seligenstadt: Erwerbs- und Todesdaten aus RennerPro übernehmen** (Blacky von PZ Seligenstadt, S/high) — (1) Erwerb: AcquisitionRecord für GerbilId 9b40b9e5… anlegen (Date 2009-09-01, Price 9.50, Note „aus RennmausPro III“) via POST /acquisitions FK-frei und re-ingest-stabil, per Design aus rpro3 herktier_tb. (2) Todesdatum: 2011-07-13 → 2011-06-13 korrigieren (causeOfDeath option
`id=267474c8-bd1d-47e7-8c1f-4250ebfbf2cb`
- [RÜCKFRAGE] **Christinas Eltern/Stammbaum aus RennmausPro verknüpfen** (Christina, M/medium) — Nach Bestätigung der Züchterin: Ist es „Cristina" (fremd_tb id=6398, Eltern MID=125/PID=166), Eltern über den RennmausPro-Ahnen-Import bzw. per conflict-decisions.json (name+dob) re-ingest-stabil setzen; andernfalls die von ihr genannten Eltern-Namen als Verknüpfung eintragen.
`id=a78eaa79-db55-4da1-99b0-ed954f9b07c7`
- **09bcac78-d125-4f3d-9070-809980d2c44e** [import-logic] — Bentley/Alexandria faelschlich als Zuchttiere Residenz-Regel ueber Nachzucht-Herkunft
- Empfehlung: import-logic in tools/import/merge_and_resolve.py: Residenz-Erstmarkierung umbauen. Statt ein Tier resident zu setzen, weil es SELBST den Clan-Namen traegt (Z.1568-1571 is_clan_zucht auf a.zucht), ein Tier nur dann resident markieren, wenn es Nachzucht hat, deren Herkunft/zucht is_clan_zucht erfuellt (Clan kleine Chaoten, nicht 'extern'). Eltern-Propagation (Z.1573-1586) mit is_external_cattery-Ausschluss beibehalten. Dadurch fallen reine Vorfahren-Boxen (Bentley, Alexandria, Bugatti) auf isResident=false, echte Zuchttiere mit Kleine-Chaoten-Nachzucht bleiben true. Wurfchronik-Importpfad (Z.2052ff, IsResident default True) separat pruefen. Danach test_merge_resolve.py gruen halten (#17/#20 Hagrid weiter false), merge_and_resolve + POST /import/ingest-resolved. Gilt fuer ALLE Tiere ('Mach das bitte fuer alle Tiere').
- **45cc501b-be83-4b2c-9aa3-e8fdc229b367** [import-logic] — Alexandria — externer Vorfahre fälschlich als eigenes Zuchttier angezeigt
- Empfehlung: (1) import-logic: in tools/import/merge_and_resolve.py ~Z.1532-1536 die Residency-Propagation so einschränken, dass reine Vorfahren/externe Ahnen NICHT isResident=true (und nicht originBreeder="Clan kleine Chaoten") erben; danach Re-Ingest via POST /import/ingest-resolved. (2) frontend: in gerbil-manager-web/src/pages/GerbilDetailPage.tsx Bestands-spezifische Abschnitte (Würfe ~Z.81-82/432-455, Charakter/Eigenschaften) für isResident=false ausblenden, sodass für reine Vorfahren nur die Stammbaum-relevanten Basisdaten erscheinen. Mit Cluster non-resident-display bündeln (gemeinsamer Fix mit Hagrid).
- **955e39e6-299c-4f46-b6b7-0556aa9c2673** [import-logic] — Wurf-Jungtiere ohne Stammbaum nicht automatisch als Bestandstier (Zuchttier) anzeigen
### jungtier-reihenfolge (4 Ticket(s) · frontend, import-logic, needs-info)
Dateien: EF-Migration, GerbilManagerWebAPI/Dtos/ApiDtos.cs, GerbilManagerWebAPI/Endpoints/GerbilEndpoints.cs, GerbilManagerWebAPI/Migrations, GerbilManagerWebAPI/Models/Gerbil.cs, GerbilManagerWebAPI/Models/Gerbil.cs (neues Order-Feld + Migration), gerbil-manager-web/src/api/types.ts, gerbil-manager-web/src/pages/WurfDetailPage.tsx, tools/import/extract.py, tools/import/merge_and_resolve.py
- [Cluster] **Jungtier-Reihenfolge im Wurf ist alphabetisch statt gewünscht (E-Wurf 2010: Eliza, Eddy)** (E-Wurf 2010, M/medium) — Generalisierbarer Fix: persistiertes, re-ingest-stabiles Order-Feld pro Jungtier (FK-frei analog GerbilOverride, da Import-Tiere) + manuelles Umsortieren in der Wurf-Akte; WurfDetailPage nach diesem Feld statt nach name sortieren. Alternativ Kind-Reihenfolge im Importer (merge_an
`id=573aad81-157e-47fe-8693-c1a4b685222b`
- [RÜCKFRAGE] **Jungtiere im Wurf falsch sortiert (alphabetisch statt Wurfchronik-Reihenfolge)** (C-Wurf 2010, L/medium) — Reihenfolge bei der Zuechterin bestaetigen (Chronik-Listenreihenfolge). Danach Import um ein Kinder-Ordinal je Gerbil erweitern, Backend-Feld plus Migration ergaenzen, WurfDetailPage orderBy von name auf das Ordinal umstellen.
`id=399dbeb2-6909-43fe-b00f-7b6a2b9fc7b2`
- [Cluster] **O-Wurf: Jungtiere alphabetisch statt in Geburtsreihenfolge** (O-Wurf, L/high) — Ein persistiertes int-Reihenfolgefeld (litterOrder/birthOrder) einfuehren: im Import (extract.py/merge_and_resolve.py) aus der Wurfchronik-Zeilenreihenfolge deterministisch je Kind setzen (re-ingest-stabil), am Gerbil-Model + Migration + Summary-DTO ausgeben, und in WurfDetailPag
`id=8ff0ebe6-159a-49ce-80ad-23c100c21056`
- [Cluster] **Jungtier-Reihenfolge im F-Wurf 2010 alphabetisch statt in Wurfchronik-Reihenfolge** (F-Wurf 2010, L/medium) — Wurfchronik-Kind-Reihenfolge im Import (extract.py/merge_and_resolve.py) als sortierbaren Index je Jungtier erfassen und persistieren (neues nullable Feld z. B. BirthOrder/LitterSequence auf Gerbil + EF-Migration), beim Merge den Chronik-Index auch für mitgemergte Stammbaum-Tiere
`id=fa73d0db-53b7-4cc5-ac2a-6cd72dafab4e`
### Cluster: wrong-parents (1)
### extern-badge (3 Ticket(s) · import-data)
Dateien: gerbil-manager-web/src/pages/GerbilDetailPage.tsx, tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [Cluster] **Chris: falsches "Extern"-Badge entfernen (isResident=true setzen)** (Chris, S/high) — In tools/import/conflict-decisions.json eine resolution {"name": "Chris", "dob": "08.05.2010", "isResident": true} ergänzen (Override gewinnt im Sweep, analog Echo/Elia), dann merge_and_resolve.py neu laufen lassen + POST /import/ingest-resolved. Alternativ per UI ein GerbilOverr
`id=73d99dc4-d95c-49a1-b826-ceb359d8f6cf`
- [Cluster] **Extern-Badge bei Kruke entfernen (isResident auf true)** (Kruke, S/high) — In tools/import/conflict-decisions.json den Kruke-addAnimals-Eintrag von isResident:false auf isResident:true ändern (expliziter Override gewinnt im Residenz-Sweep von merge_and_resolve.py immer), Pipeline neu laufen lassen und POST /import/ingest-resolved. Dann verschwindet das
`id=34220307-23bc-420c-80f8-d273615caffd`
- [Cluster] **Krukes Nachzuchten fehlen — fälschlich als nicht-resident (extern) eingestuft** (Kruke, S/high) — In tools/import/conflict-decisions.json den Kruke-Eintrag isResident von false auf true setzen (bzw. den false-Override entfernen — der Sweep macht sie als Elternteil eigener Würfe ohnehin resident) und neu importieren. Domänenkorrekt, da ihre Nachzucht den Clan-Namen 'von den kl
`id=b7016e5f-9985-4f17-a3f6-2048289958aa`
- **88389f8e-8b8b-44c3-940b-93aa9e571c29** [import-data] — Akane: Roni ist Vater (nicht Mutter), Mutter = Fumi von den Kleinen Chaoten
- Empfehlung: In tools/import/conflict-decisions.json: (a) gender-Override fuer Roni (*27.01.2022) auf male (wie Mozart-Eintrag), (b) 'Fumi von den Kleinen Chaoten' (weiblich) als neuen Mutter-Datensatz anlegen (analog #22 Louis/#31 Danny/#27 Hanau), (c) parent-Override fuer Akane/Wurf Z21: father='Roni', mother='Fumi von den Kleinen Chaoten' (father/mother-Mechanik wie #16/#23/#36). merge_and_resolve.py muss gender-Override beruecksichtigen (assign_parent_roles/pick_parent_ref ~Z.640/679) und benannte fehlende Eltern anlegen koennen. Zusaetzlich pruefen: Roni ist Mutter aller drei Wuerfe T21 (3d510e7c) und 22-Wurf (947c6852) -> dort ebenfalls Vater-Rolle setzen; deren Mutter ist aber unbekannt (ggf. spaeter rueckfragen). Danach extract + merge_and_resolve + POST /import/ingest-resolved.
### rpro3-eltern-ergaenzen (2 Ticket(s) · import-data)
Dateien: Stammbaum-Viewer (Danny-Akte), tools/import/_rpro3.db, tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [Cluster] **Dannys Eltern (Daniel × Daniela) aus RennmausPro ergänzen** (Danny von Maintaler PZ, S/high) — Eltern per Hiro-Präzedenz (Commit bbd3058) in tools/import/conflict-decisions.json ergänzen: resolutions-Eintrag auf Danny (dob 09.10.2009) mit father="Daniel"/mother="Daniela" plus addAnimals-Stubs Daniel (male, Marder-Hell, aa c[chm]c[h] DD EE GG PP spsp, Herkunft Maintaler Pri
`id=32d57d3d-8bc3-406b-9844-965f7071ded0`
- [Cluster] **Blacky umbenennen + fehlende Eltern (Snoopy und Bella) aus RennmausPro ergänzen** (Blacky von PZ Seligenstadt, S/high) — In tools/import/conflict-decisions.json (Muster Hiro/Commit bbd3058): resolutions-Eintrag für Blacky (Match via externalRef stammbaum-blackypzseligenstadt-23072009) mit renameTo="Blacky", father="Snoopy", mother="Bella"; dazu addAnimals-Stubs {Snoopy, male} und {Bella, female} al
`id=cf6e2c99-746a-46fb-93e2-8ec81ae55663`
### Cluster: parents (3)
### resident-flag (1 Ticket(s) · import-data)
Dateien: gerbil-manager-web/src/pages/GerbilDetailPage.tsx (extern-Badge), tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [Cluster] **Philo als Zuchttier/Bestandstier markieren (isResident)** (Philo, S/high) — Expliziten isResident=true-Override für Philo in tools/import/conflict-decisions.json aufnehmen (Resolution per name='Philo' + dob=2011-06-11). Ein expliziter isResident-Override gewinnt immer (vgl. Echo/Elia), ist re-ingest-stabil. Danach merge_and_resolve.py neu laufen + POST /
`id=58bb53f2-280c-4676-9b79-f58497be995c`
- **36a3fcde-d14a-46e1-936f-2263863f8207** [import-data] — Akane: Lebenslauf (Zuchtaustausch Black Forest, Tod bei Ulrike Neu) + Wurf Merle/Fanella/Pete fehlt
- Empfehlung: Manuelle Daten-Korrektur/Override für Akane (e087fb7d-7d13-5733-856e-e8cf4277fc7c): status=Deceased, isResident=false, dateOfDeath/causeOfDeath setzen (verstorben bei Ulrike Neu, Kontakt 33130df1-e164-54ae-be74-a9b7d2ced11b), receiverContactId=Ulrike Neu; Abgabe-Historie: 20.04.23 als Zuchttier (0EUR, Austausch) an Clan of Black Forest (a13f62c9-d506-50a6-99f8-65e85e955f96), Rückkehr 01.04.24, dann 02.04.24 an Ulrike Neu. Gewicht 79,1g (01.04.24) für Akane anlegen. Neuen Wurf bei Clan of Black Forest mit Mutter=Akane anlegen: Töchter Merle (62,1g) und Fanella (CP-Agouti Punktschnecke, 62,7g) sowie Sohn Pete (Farbe wie Merle); Fanella ging mit Akane an Ulrike Neu. Da Quelle nur Freitext (Z21-Wurf-Notiz) ist, als manuellen Override/Import-Patch umsetzen, nicht aus bestehender Importquelle ableitbar.
- **0ba551a3-3be7-4042-8ab7-669a270602f1** [import-logic] — Sunny von PZ Karl — falscher Vater (Hiro statt Bill von Privat)
- Empfehlung: In tools/import/conflict-decisions.json eine resolution ergänzen: {"name":"Sunny von PZ Karl","dob":"10.04.2014","father":"Bill von Privat","mother":"Melly von Privat","decision":"Eltern aus Renner-Pro-3/Yurikas-Stammbaum","source":"Züchterin 2026-06-22 Ticket 0ba551a3"}. apply_conflict_decisions (tools/import/extract.py:1149-1167) setzt daraus parentRefs mit method=decision/high und überschreibt den falschen chart-position-Vater Hiro. Danach Pipeline neu: python tools/import/extract.py → merge_and_resolve.py → POST http://localhost:5179/import/ingest-resolved. Virtueller Wurf 8f1bb1d2 wird nur von Sunny genutzt, Änderung ist isoliert. Beim Schließen Changelog: "Bei Sunny von PZ Karl war der Vater falsch (stand Hiro of Golden Lights). Korrekt sind jetzt Vater Bill von Privat und Mutter Melly von Privat. Bitte den Stammbaum neu laden."
- **f77aa4a6-ecb5-4e29-960e-bdd22d327e19** [import-data] — Danielle: Louis+Roswitha sind Großeltern, echte Mutter ist Ella (Geschwisterverpaarung)
- Empfehlung: conflict-decisions.json-Eintrag für name='Danielle von den Kleinen Chaoten', dob='04.03.2020', mother='Ella' — disambiguiert per Ellas dob 10.06.2019 (Tochter von Louis+Roswitha, ebc87c8c), NICHT die zweite Ella *13.04.2023. Vater nicht setzen (unbekannter Bruder). Da zwei gleichnamige Ella existieren, muss der Eltern-Override in merge_and_resolve.py die richtige per Geburtsdatum/ID wählen (ggf. motherDob/motherId-Feld ergänzen). Danach merge_and_resolve.py + POST /import/ingest-resolved. Roswitha rückt damit auf Großeltern-Ebene. Schwester-Ticket #21 (4692fd5c) betrifft denselben Wurf — gebündelt mit demselben Override schließen.
### danny-dublette-maintal (1 Ticket(s) · import-data)
Dateien: tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [Cluster] **Zwei Dannys (Maintaler PZ / PZ Maintal) sind dasselbe Tier — zusammenführen** (Danny von Maintaler PZ, S/high) — Merge-/Alias-Entscheidung in tools/import/conflict-decisions.json ergänzen, damit beide Namensvarianten zu einem Tier deduppen (Ziel-Id 55ce13fc beibehalten). Genotyp-Konflikt beim Merge klären (55ce13fc: "...EE Gg Pp Spsp DP" vs 4756dac8: "...EE Uwuw[d] Pp Spsp DP"). Danach extr
`id=6f521e7c-753c-4947-b8e3-7fe81dba8b12`
### Cluster: genetics-schecke-spsp (1)
### todesursache-nachtrag (1 Ticket(s) · import-logic)
Dateien: tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [Cluster] **Todesursache für Danny von Maintaler PZ nachtragen** (Danny von Maintaler PZ, S/high) — Importer-Weg (re-ingest-stabil): Override-Block in merge_and_resolve.py (~Z. 3204-3309) um ein Feld deathCause/causeOfDeath erweitern (analog notes/originBreeder), das g["CauseOfDeath"] setzt und in has_ovr aufgenommen wird; dann Decision-Eintrag in conflict-decisions.json per ex
`id=42782b23-784f-4125-8002-c372de244fdf`
- **e09d6f22-2658-435e-8ef3-7453e366ee65** [import-logic] — Namenloses Tier (*13.08.2025): faelschlich als Schecke berechnet, soll spsp sein
- Empfehlung: Sp-Locus dieses Tieres auf spsp korrigieren (Soll-Genotyp "aa Cc[chm] D- ee[f] Gg Pp spsp", Anzeige ohne "Schecke"). Mechanik: merge_and_resolve.py:471-485 schreibt bei is_schecke den Genotyp auf Spsp um; entweder clean_color_name()-Schecke-Erkennung fuer diese Zeile korrigieren ODER den Quell-Genotyp-Sp-Locus nicht durch das Farblabel ueberschreiben. Wichtig: Standard-Override conflict-decisions.json matcht per name+dob (extract.py:1088-1133), aber das Tier ist NAMENLOS (externalRef stammbaum-unbekannt-13082025-3) -> name+dob nicht eindeutig; daher Override-Schluessel um externalRef erweitern oder die Heuristik fixen. Danach extract -> merge_and_resolve -> POST /import/ingest-resolved.
### nachzucht-link-route (1 Ticket(s) · frontend)
Dateien: gerbil-manager-web/src/pages/GerbilDetailPage.tsx
- [Cluster] **Nachzucht-Links auf der Tier-Akte tot (falsche Route /tiere/)** (Danny von Maintaler PZ, S/high) — In gerbil-manager-web/src/pages/GerbilDetailPage.tsx Zeile 687 den Link-Pfad von `/tiere/${child.id}` auf `/rennmaeuse/${child.id}` ändern (Einzeiler). Danach npx tsc --noEmit und die Nachzucht-e2e-Specs prüfen; keine Datenänderung, kein Re-Ingest nötig.
`id=20a6cc0e-3798-4f3c-8452-efb32ce6dc84`
### Cluster: genetics-farbschlag (3)
### chris-genotyp (1 Ticket(s) · import-data)
Dateien: tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [Cluster] **Chris: Gencode korrigieren (Punktschecke)** (Chris, S/high) — Resolution in tools/import/conflict-decisions.json für Chris ergänzen (Match name "Chris" + dob 08.05.2010) mit "genotype":"aa Cc[-] DD Ee gg P- Spsp" (optional "farbschlag":"Punktschecke"), dann merge_and_resolve.py + POST /import/ingest-resolved. R-Locus bleibt wie in bestehend
`id=d8debbb8-5e82-4e5f-8313-209c6caae0d4`
- **5826e8e2-bc83-4572-a09d-9b51ac6e59e9** [genetics-engine] — Genetik: ef/e (Fuchsschimmel) wird als Rotaugenschimmel statt Goldfuchsschimmel errechnet
- Empfehlung: Katalog-Matching in catalog.ts E-Locus-zygotie-bewusst machen: ef/ef -> Schimmel-Eintraege (Rotaugenschimmel/Silberschimmel/Orangeschimmel), ef/e -> Fuchsschimmel-Eintraege (Goldfuchsschimmel etc.). Konkret ein Fuchsschimmel-Token (oder eFamily-Nutzung) einfuehren, sodass Schimmel-Basiseintraege bei ef/e nicht mehr greifen. Tests in genetics.test.ts erweitern: efef pp -> Rotaugenschimmel bleibt; ef/e (ee[f]) + A_ + pp -> Goldfuchsschimmel. Backend-Farbschlag-Mirror und tools/import/genotype.py mitziehen. Separat (import-data): gespeichertes colorVarietyId='Gold' ist ebenfalls falsch importiert.
- **1aac054f-3798-45af-868d-8f905bc90ca1** [import-data] — Namenloses Weibchen (*13.08.2025): gespeicherter Farbschlag "Gold" falsch — korrekt ist berechneter "Kohlfuchsschimmel Schecke"
- Empfehlung: Gespeicherten Farbschlag des Tieres 8bc0445e von 'Gold' auf den berechneten Wert 'Kohlfuchsschimmel' korrigieren (Schecke ist Modifier). Quelle des Fehlers: Import las 'Farbschlag' aus 'Stammbaum von Martin.xlsx'. Mechanik: conflict-decisions.json hat ein farbschlag-Override (Match per name+dob), aber das Tier ist namenlos — Override-Key fuer namenlose Tiere pruefen (ggf. ueber externalRef 'stammbaum-unbekannt-13082025-2'). Sauberere Alternative: colorVarietyId bei vorhandenem Genotyp aus genotypeToFarbschlag denormalisiert ableiten. Betroffen: tools/import/merge_and_resolve.py, tools/import/conflict-decisions.json, Referenz gerbil-manager-web/src/genetics/catalog.ts.
- **998087e2-1265-41a3-a7d5-13ab11576325** [import-logic] — Farbschlag falsch (Agouti statt Dilute Agouti) bei namenlosem dd-Weibchen
- Empfehlung: resolve_color_and_genotype (tools/import/merge_and_resolve.py:455-486) leitet colorVarietyId namensbasiert aus der Quell-Farbschlag-Zelle ab (clean_color_name 400-453, Mapping "a"->"agouti"), nicht aus dem Genotyp - deshalb wird das dd (Dilute) ignoriert. Empfehlung: Wenn ein Genotyp vorhanden ist, colorVarietyId aus dem genotyp-berechneten Farbschlag ableiten (Port der TS-Logik aus gerbil-manager-web/src/genetics/catalog.ts genotypeToFarbschlag) und bei Konflikt Genotyp gewinnen lassen + Provenance-Hinweis. Mindestens fuer dieses Tier colorVarietyId auf 00000000-0000-0000-0000-000000000029 (Dilute Agouti) setzen. Danach merge_and_resolve.py neu laufen + POST /import/ingest-resolved. Gleiche Klasse wie Cluster genetics-farbschlag (#3, #24).
### wurf-foto (1 Ticket(s) · needs-info)
Dateien: GerbilManagerWebAPI/Endpoints/LitterEndpoints.cs, GerbilManagerWebAPI/Models/Litter.cs, gerbil-manager-web/src/pages/WurfDetailPage.tsx, tools/import/extract.py
- [RÜCKFRAGE] **Foto des N-Wurfs aus der Wurfchronik anzeigen — nicht vorhanden/kein Feature** (N-Wurf, L/high) — Zunächst per Rückfrage klären, ob die Züchterin irgendwo ein Wurf-Foto gespeichert hat (Ordner/Datei) oder die Jungtier-Einzelfotos meint. Falls Wurf-Fotos gewünscht: Feature bauen (Litter-Foto-Feld + Migration + Upload/Import + UI-Anzeige auf WurfDetailPage). Kein Importer-Daten
`id=97a3b4d9-4859-4b0a-8e20-2c602ec2c167`
### Cluster: color-scheme (3)
### rpro3-ahnen-uebernahme (1 Ticket(s) · import-data)
Dateien: tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [Cluster] **Stammbaum von Malina of minor diabolus aus RennerPro ergänzen** (Malina of minor diabolus, M/high) — Eltern re-ingest-stabil im Importer materialisieren: conflict-decisions.json addAnimals für Big Donat (externer Ahn, DOB 2008-05-09, Clan of Amazing (CH), isResident=false) und Skarlett B (DOB 2009-03-03, Sunny's Sun, isResident=false) + addLitters {mother:Skarlett mit motherDob
`id=ed0eef40-3ccd-4c36-899c-0cf274bab8a9`
- **3f5942a2-60c4-4353-809a-77ee6071dd03** [import-logic] — Goldfuchs (ee) falsch als "Gold" (EE) klassifiziert
- Empfehlung: In tools/import/merge_and_resolve.py, resolve_color_and_genotype() (Z.464-468): Substring-Fallback nicht beim ersten Treffer abbrechen. Stattdessen exakte Treffer priorisieren und unter Substring-Kandidaten den längsten/spezifischsten wählen (z.B. Kandidaten sammeln, nach Länge absteigend sortieren). So wird "Goldfuchs" statt "Gold" gematcht. Danach extract.py + merge_and_resolve.py neu laufen lassen und POST /import/ingest-resolved. Erwartet korrigiert: Jill (235c6a7fedde), 2e7efb127308, bf6f4507 (98f77953d2d1), Banjo of Fiomi (b0e0081ce25d), Christine/Chrissi (c3995ebd0d15) — alle Fuchs-Genotyp ee, aktuell Farbschlag Gold/0012, sollen Goldfuchs/0014 (bzw. passende Fuchs-Variante) werden.
- **06217eb3-7521-4533-ab3d-4bb425f08aa5** [import-logic] — Dilute Anthrazit (ohne Namen, w) — gespeicherter Farbschlag "Anthrazit" statt Dilute Anthrazit
- Empfehlung: Punktfix: colorVarietyId des Tiers aa7978ed von 00000000-0000-0000-0000-000000000009 (Anthrazit) auf 00000000-0000-0000-0000-000000000032 (Dilute Anthrazit) setzen. Systemisch: resolve_color_and_genotype in tools/import/merge_and_resolve.py so erweitern, dass bei vorhandenem Genotyp der genotyp-abgeleitete Farbschlag Vorrang/Plausibilitaetspruefung gegenueber dem reinen Quell-Textlabel hat (insb. dd=Dilute vs. nicht-dilute Label), dann Import neu generieren + POST /import/ingest-resolved. Engine (catalog.ts/phenotype.ts) ist korrekt und nicht zu aendern.
- **3deab547-ece1-4de5-8989-f90c79580b7e** [genetics-engine] — Farbschlag: Dilute CP-Blaufuchs wird als "Unbekannt"/"blau" angezeigt
- Empfehlung: In gerbil-manager-web/src/genetics/catalog.ts den Eintrag 'Dilute Blaufuchs' (Zeile 116) von tokens.P:'p' auf tokens.P:'P' aendern (Dilution dd ist unabhaengig vom Augenpigment-Locus P; das Basis-Blaufuchs Z.75 ist bereits P). Danach resolved die Engine den gespeicherten Genotyp aa c[chm]c[chm] dd ee gg P- korrekt zu 'Dilute CP-Blaufuchs (Schecke)' statt 'Unbekannter Farbschlag'. Zusaetzlich pruefen, ob weitere Dilute-*-Eintraege faelschlich P:'p' tragen (z.B. 'Dilute Topas' Z.115) und ggf. mit ihren Nicht-Dilute-Basisfarben abgleichen. Verifiziert per vitest-Patch.
### totgeburt-tg-tracking (1 Ticket(s) · import-logic)
Dateien: GerbilManagerWebAPI/Dtos/ApiDtos.cs, GerbilManagerWebAPI/Models/Litter.cs, gerbil-manager-web/src/api/types.ts, gerbil-manager-web/src/pages/WurfDetailPage.tsx, gerbil-manager-web/src/pages/WurfFormPage.tsx, gerbil-manager-web/src/strings/de.ts, tools/import/merge_and_resolve.py
- [Cluster] **C-Wurf 2010: Totgeburt (TG) wird nicht angezeigt — Wurfchronik-Mortalität geht im Merge verloren** (C-Wurf 2010, M/high) — Full-Stack, re-ingest-stabil: (1) neues Litter-Feld Stillborn (int?, "Totgeburten") + EF-Migration + DTO + api/types.ts; (2) in merge_and_resolve.py stillborn→Stillborn und diedLater→DeathsWithin8Weeks aus dem Extrakt übernehmen (Fallback via survivedToGoHome); (3) WurfDetailPage
`id=f4935e41-3ec9-4a9b-895f-6a817e63d8b3`
### Cluster: genetics-farbschlag-schimmel-klammer (1)
### abnehmer-zeile-akte (1 Ticket(s) · frontend)
Dateien: gerbil-manager-web/src/pages/GerbilDetailPage.tsx
- [Cluster] **Abnehmer-Zeile fehlt bei verstorbenen Tieren auf der Tier-Akte** (Momo, S/high) — In GerbilDetailPage.tsx Zeile 510 den Deceased-Guard entfernen und die Abnehmer-Zeile statusunabhängig zeigen, wenn ein receiverContactId vorliegt (z. B. `{g.receiverContactId && (<Kv label={t.fields.receiver}>…</Kv>)}`). Reine UI-Änderung, Daten sind korrekt; WurfDetailPage zeig
`id=f628ae14-0edb-4120-a84f-0da1fe054b0a`
- **e22764aa-9801-4e02-83c7-5b763652973a** [import-logic] — Blaufuchsschimmel statt Blaufuchs (Klammer-Schimmel = "moeglich, unbekannt")
- Empfehlung: In tools/import/merge_and_resolve.py clean_color_name (Z.412-415) die parenthetische Variante "(schimmel)" NICHT mehr zu definitivem "schimmel" anhaengen, sondern strippen und als "Schimmel moeglich/unbestimmt" fuehren -> Farbschlag auf Blaufuchs (Variety ...020) aufloesen statt Blaufuchsschimmel (...037); den Moeglich-Schimmel-Hinweis separat (Provenance/Flag) ablegen, damit die App "Blaufuchs (Schimmel moeglich, klaert sich mit ~2 J)" zeigen kann. Konsistent mit Genotyp ee[-] (Fuchs, Schimmel-Modifier unbekannt). Betrifft nur dieses 1 Tier (einziges mit (schimmel)-Klammer im Quelldatensatz). Danach extract/merge_and_resolve neu + POST /import/ingest-resolved. Abgrenzung: NICHT Teil von #42 (Engine ee[-]->ee) oder #37-41 (Punnett-Wildcard) - hier Import-Farbnamen-Aufloesung.
### rennmauspro-eltern-ergaenzen (1 Ticket(s) · import-data)
Dateien: Gerbil Charlie (7d301ab5-6043-5d6f-914b-7550f5b0154e), Gerbil Dante (93457716-65d2-5432-a52a-553ae873ca6d), Wurf C-Wurf 2010 (f1fece40-f31a-5757-b89c-402fa47abbd4), tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [Cluster] **Charlie: Mutter Evy fehlt (RennmausPro-Ahnin nicht importiert)** (Charlie von den Kleinen Chaoten, S/high) — Wie Commit bbd3058 (Hiros Eltern): in conflict-decisions.json Evy als nicht-residenten Ahnen-Stub via addAnimals {name:"Evy", gender:female, dob:"20.09.2008"} anlegen und je Kind (Charlie + Dante, dob 08.05.2010) eine resolution mit mother:"Evy", motherDob:"20.09.2008" setzen. Da
`id=a419a933-83e1-4383-bf29-6af8c504ae6b`
### Cluster: genotype-engine (4)
### wurfchronik-ocr-mutter-fehlname (1 Ticket(s) · import-logic)
Dateien: Wurfchronik_Bilder/Wurfchronik Teil 1_page_0017.md, gerbil-manager-web WurfDetailPage (Scan-Beleg), tools/import/conflict-decisions.json, tools/import/extract.py, tools/import/merge_and_resolve.py
- [Cluster] **Z-Wurf: falsche Mutter "Macy" ist OCR-Fehllesung von "Mary"** (Z-Wurf, M/high) — Z-Wurf-motherId und die 4 Jungtiere (Zeus/Pina/Flummy/Lea) auf 6ec4527c (Mary v. PZ Seligenstadt) umbiegen und das synthetische "Macy" (516752f8) aufloesen/mergen. Re-ingest-stabil umsetzen: entweder Namenskorrektur in der Wurfchronik-Extraktion (page_0017 "Macy"->"Mary", damit D
`id=f42b6215-0896-4352-ae24-572829e6b42e`
- **cc9ea3fe-db44-46e3-85b6-ab9f34c4433f** [genetics-engine] — Mamta Mini: E-Locus Ee[-] statt Ee (Vererbung vom ee-Vater Geely)
- Empfehlung: Eltern-basierte Allel-Inferenz/Validierung in der Genetik-Engine ergaenzen: pro Locus pruefen, ob ein Elternteil homozygot ist und damit ein Kind-Allel erzwingt; unbekannte Allele ([-]/?) entsprechend aufloesen. Konkret Mamta Mini (da911047) E-Locus 'Ee[-]' -> 'Ee', weil Vater Geely (b71c0fda) homozygot 'ee' ist und nur 'e' vererben kann. Implementieren in gerbil-manager-web/src/genetics (genotype.ts/breed.ts/punnett.ts/warnings.ts) als resolveFromParents/validateAgainstParents mit Hinweis-Chip in der Tier-Akte; optional zusaetzlich im Import (tools/import/genotype.py, merge_and_resolve.py) den gespeicherten Genotyp vervollstaendigen. Vorsicht: Mamta Minis Wurf 23-Wurf (b4b6ffcf) hat derzeit keine verlinkten Eltern in der DB - Inferenz braucht die korrekte Eltern-Verknuepfung. Identisch zu #38 (1a508c04), gebuendelt umsetzen.
- **efa2b232-71f9-4fac-aba6-9100a3d6037e** [genetics-engine] — Farbschlag-Berechnung (Genetik-Engine): aa cchm dd ee gg → Dilute CP-Blaufuchs
- Empfehlung: Genetik-Engine/-Katalog (gerbil-manager-web/src/genetics/catalog.ts): (1) Im aa-Colourpoint-Zweig von colourpointName bzw. in BASE_COLORS eine aa-dd-ee-gg-Fuchs-Basis fuer schwarzaeugige Tiere (P) ergaenzen, sodass aa cchm dd ee gg → "Dilute CP-Blaufuchs" statt "Dilute CP-Anthrazit" erzeugt wird. (2) Unbekanntes E-Allel (ee[-]) so behandeln, dass die Fuchs-Familie nicht durch Default-auf-dominantes-E verdeckt wird (phenotype.ts/loci.ts). Zielwert "Dilute CP-Blaufuchs" stammt aus der Antwort der Zuechterin im Schwester-Ticket 3deab547 — keine neue Rueckfrage noetig.
- **1a508c04-018b-4b93-bf7f-f820fbe9433e** [genetics-engine] — Mamta Mini: E-Locus Ee[-] muss per Vererbung zu Ee aufgeloest werden
- Empfehlung: Eltern-basierte Allel-Inferenz/Validierung in der Genetics-Engine ergaenzen (z.B. resolveFromParents/validateAgainstParents): pro Locus pruefen, ob ein Elternteil homozygot ist und damit ein Kind-Allel erzwingt; unbekannte Allele ([-]/-) entsprechend aufloesen (Ee[-] -> Ee, da Geely homozygot ee). In der Tier-Akte das aufgeloeste Allel + Hinweis-Chip anzeigen. Eltern-Genotypen ueber den Stammbaum/Pedigree beziehen (Mamta Minis gespeicherte litter b4b6ffcf hat keine father/motherId; Geely+Gaida kommen aus der chart-position-Heuristik). Optional schon im Import (tools/import/genotype.py, merge_and_resolve.py) anwenden. Betroffen: gerbil-manager-web/src/genetics/genotype.ts (Ee[-]-Notation, Z.190-275), breed.ts, punnett.ts, warnings.ts. SEPARAT halten von den Wildcard-Expansions-Tickets #37/#39/#41 (punnett.ts parentAlleleWeights, erwartete Wurf-Farbschlaege) - hier geht es um Rueck-Inferenz eines GESPEICHERTEN Genotyps.
- **3e643ef1-6998-45c2-a3e1-45dff666a7c5** [genetics-engine] — Genetik-Engine: Wildcard-Allel (D-/E-) erzeugt unmoegliche Dilute-/Unbekannt-Farbschlaege im Wurf
- Empfehlung: In punnett.ts parentAlleleWeights: ein unbekanntes Allel '?' (aus '-') neben einem bekannten Allel als KOPIE des bekannten dominanten Allels behandeln (A-=AA, D-=DD, E-=EE), statt es ueber unknownPartnerOptions auf gleich-/rezessivere Allele zu streuen. Nur wenn beide Allele unbekannt sind -> Locus voll unbestimmt (dominantestes Allel, konsistent mit phenotype.ts/catalog.ts resolvedPair). Damit fallen Dilute (dd), efef und 'Unbekannter Farbschlag' aus dieser Verpaarung weg. Tests in gerbil-manager-web/src/genetics/__tests__ anpassen. Betroffen: punnett.ts (parentAlleleWeights, unknownPartnerOptions), breed.ts. Loest Sibling-Tickets 3c46d0b4 (#41), 1e7b66e6 (#40), c8ce27e2 (#37) mit.
### zuchttier-badge (1 Ticket(s) · frontend)
Dateien: gerbil-manager-web/src/index.css, gerbil-manager-web/src/pages/GerbilDetailPage.tsx, gerbil-manager-web/src/pages/GerbilsPage.tsx, gerbil-manager-web/src/strings/de.ts
- [Cluster] **Positives „Zuchttier"-Icon/Badge vor dem Verstorben-Status** (Flori von den Kleinen Chaoten, S/medium) — Neues positives „Zuchttier"-Badge/Icon im .ak-heroover-Block der GerbilDetailPage.tsx VOR der ak-statusbadge (Z.267-269) einfügen, analog zum Extern-Badge (Z.270-274). String in de.ts (bei externalBadge, Z.59-60), CSS-Variante in index.css. Kriterium: Tier hatte mind. einen eigen
`id=ec669e7a-1e9a-46aa-9498-bd6efab8a4d7`
### Cluster: gender-override (1)
### domi-todesdatum (1 Ticket(s) · needs-info)
Dateien: tools/import/conflict-decisions.json
- [RÜCKFRAGE] **Domi: Todesdatum-Zweifel der Züchterin** (Domi, S/high) — Datum ist quellenkonform und traceable, daher keine Korrektur ohne Bestätigung. Falls die Züchterin ein anderes Datum nennt: variables Import-Tier (isResident=false, fromWurfchronik) über conflict-decisions.json als name+dob-Resolution mit dateOfDeath-Override korrigieren (analog
`id=929273e9-5463-4934-92ff-60cf25c71030`
- **94892100-3849-4ed8-a2e9-cfcc1a2df982** [import-data] — Cherry Berry's Quqquluuruu — Geschlecht (Weibchen-Icon fehlt, Fragezeichen)
- Empfehlung: In tools/import/conflict-decisions.json eine gender-Override-Resolution ergaenzen (Praezedenzfall: Mozart of Lennylengo, Z.270-275): {"name":"Cherry Berry's Quqquluuruu","dob":"","decision":"gender = female (Box-Farbe weiss nicht als Geschlecht erkannt; Vorfahre ohne Geburtsdatum)","gender":"female","source":"Zuechterin 2026-06-22 — Ticket Weibchen-Icon fehlt"}. dob MUSS leer ("") sein, da das Tier kein Geburtsdatum hat und der Override-Key (canon_name + norm_dob) sonst nicht matcht. Verbraucht in extract.py _apply_conflict_decisions Z.1100-1148. Danach extract.py -> merge_and_resolve.py neu laufen lassen, App neu starten, POST /import/ingest-resolved, anschliessend Ticket schliessen.
### dante-wurf (1 Ticket(s) · needs-info)
Dateien: gerbil 93457716-65d2-5432-a52a-553ae873ca6d, gerbil-manager-web/src/pages/GerbilDetailPage.tsx, litter eb8047f2-c234-512b-b719-fe6ac6610d9c, tools/import/conflict-decisions.json
- [RÜCKFRAGE] **Dante: gemeldeter fehlender Wurf ist bereits vorhanden (Q-Wurf)** (Dante, S/medium) — Antwort abwarten: (a) meint sie den Q-Wurf und sieht ihn nicht → Anzeige/Refresh prüfen und Ticket schließen; (b) zusätzlicher, wirklich fehlender Wurf → per addLitters in conflict-decisions.json ergänzen + neu importieren. Separat prüfen (eigenes Thema): Vertrags-Mismatch — Prov
`id=9af81ae2-464c-480b-8199-6f73fcda8619`
### Cluster: rpro3-pedigree (1)
### todesursache-am-suffix (1 Ticket(s) · import-logic)
Dateien: tools/import/merge_and_resolve.py (parse_death_info), tools/import/test_merge_resolve.py
- [Cluster] **Todesursache bei Eliza: überflüssiges "am" abschneiden** (Eliza, S/high) — Im cod-Cleanup-Block von parse_death_info (tools/import/merge_and_resolve.py ~Z.729-731) trailing Datums-Bindewörter generisch abschneiden, z. B. cod = re.sub(r'\s+(am\|vom\|den\|im)$', '', cod, flags=re.I).strip(' ,;.-'). Danach neu extrahieren + POST /import/ingest-resolved. no
`id=47e66759-1790-4da9-baba-6357c96011d3`
- **f3ad5ec9-7ba5-4e9f-a503-f0afab42d27c** [import-logic] — Hiro of Golden Lights — Stammbaum fehlt (Eltern nur in RennmausPro)
- Empfehlung: Import-Pipeline um eine RennmausPro-Ahnen-Quelle erweitern: neuer Extractor liest _rpro3.db (stamm_tb=eigene Tiere via Name+DOB-Match, baum_tb=Eltern-Links id->_MID/_PID, fremd_tb=externe Ahnen mit u-Präfix); JDN-Datumskonvertierung + smart_decode aus tools/import/compare_rpro3.py wiederverwenden. In merge_and_resolve.py externe Ahnen als nicht-residente Gerbils (isResident=false, deterministische generate_guid auf stabilem rpro-Key) anlegen, Eltern über Litter (fatherId/motherId) verknüpfen, parent_age_plausible anwenden, Provenance-Eintrag 'aus RennmausPro III ergänzt'. Danach resolved_import.json neu generieren + POST /import/ingest-resolved. Betrifft potenziell viele Tiere -> als Cluster behandeln. Betroffene Dateien: tools/import/extract.py (bzw. neuer extract_rpro3.py), tools/import/merge_and_resolve.py.
### flori-vaterschaft (1 Ticket(s) · needs-info)
- [RÜCKFRAGE] **Flori als Vater von 4 Würfen verlinkt Züchterin erwartet nur JD** (Flori von den Kleinen Chaoten, M/medium) — Nach Bestätigung der Züchterin (welche der 4 Würfe wirklich von Flori sind) in tools/import/conflict-decisions.json die fälschlich Flori zugeordneten Litter-Vater-Links austragen/korrigieren (Litter-Parent-Override bzw. resolution), dann merge_and_resolve.py neu laufen lassen und
`id=b7fbdb94-202b-488b-ab5f-6a2b868e65e3`
### Cluster: origin-label (1)
### falscher-vater-dublette-verstorben (1 Ticket(s) · import-logic)
Dateien: gerbil:04b14348-Feivel-tot, gerbil:be5bca76-Feivel-vdKC, litter:47d3b15a-P2-Wurf, litter:692c382b-Z2-Wurf, tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [Cluster] **Feivels Würfe fehlen Vater dem falschen Namensvetter zugeordnet** (Feivel von den Kleinen Chaoten, M/high) — Im Importer (merge_and_resolve.py) die Vater/Mutter-Namensauflösung der Wurfchronik-Würfe um eine Sterbedatum-Plausibilität erweitern (Kandidat muss zum Wurfdatum leben) -> der 2012 verstorbene Feivel fällt weg, der lebende Feivel von den Kleinen Chaoten gewinnt. Fallback: geziel
`id=b441c5ea-ec07-4f87-aa2e-09399ab2a027`
- **b1629f97-3e06-4ef1-9605-95d7492eb352** [import-logic] — Hagrid Rubeus of Black Forest — Herkunft/Zuchtname sollte "Clan of Black Forest" sein
- Empfehlung: In tools/import/merge_and_resolve.py Zeile 204 den Wert von "blackforestgv" von "Black Forest" auf "Clan of Black Forest" ändern. Danach `python tools/import/merge_and_resolve.py` neu generieren und `POST http://localhost:5179/import/ingest-resolved` ausführen. Effekt: der separate Kontakt "Black Forest" (id 2f08f4ef-bfce-5323-aaa6-f1eedfb4c0f7) verschmilzt mit dem bereits existierenden Kontakt "Clan of Black Forest" (id a13f62c9-d506-50a6-99f8-65e85e955f96); die 31 Tiere mit Suffix "of Black Forest" zeigen dann originBreeder="Clan of Black Forest" und verlinken auf den einen Kontakt. Prüfen, dass keine Tiere zurückbleiben, die noch auf den alten "Black Forest"-Kontakt zeigen. Hinweis: Ticket-gerbilId 73759a6a (Hagrid Rubeus) existiert nach Re-Import nicht mehr; Verifikation erfolgte über Namens- und Kontakt-Abgleich.
### charlett-mwurf-owurf (1 Ticket(s) · import-data)
Dateien: tools/import/conflict-decisions.json, tools/import/extract.py, tools/import/merge_and_resolve.py
- [Cluster] **M-Wurf/O-Wurf: Mutter Charlett fehlt, M-Wurf unvollständig** (M-Wurf, M/medium) — Charlett per conflict-decisions.json addAnimals mit rpro3-Daten anlegen (female, dob 2010-05-14, Kohlfuchs-hell-Schecke, genotype aa Cc[chm] DD ee G- PP Spsp, Herkunft Clan of little longnoses, Eltern Sébastian×Angéline), als Mutter von M-Wurf (2011-03-03) und O-Wurf (2011-04-12)
`id=7d032fc5-f6b8-4c72-891d-f87fc4935ac9`
### Cluster: duplicate-merge (1)
### extern-nachzucht-versteckt (1 Ticket(s) · frontend)
Dateien: gerbil-manager-web/src/pages/GerbilDetailPage.tsx
- [Cluster] **Eddys Nachzucht (Sohn Oskar) fehlt auf der Akte externer Ahnen** (Eddy von den Kleinen Chaoten, S/high) — Frontend-Fix in gerbil-manager-web/src/pages/GerbilDetailPage.tsx: Abschnitt "Nachzucht in der Zucht" (breedingOffspring, ~Zeile 673) auch für nicht-residente Tiere rendern, damit externe Ahnen ihre residenten Nachkommen zeigen. Oskar erscheint dann automatisch (steht bereits in
`id=e5900a79-c21c-435d-af3e-9dc9518c5b40`
- **f618dcc3-31c5-4d41-9517-8e1cf422562b** [import-logic] — Namenloser Bock *15.02.2024 (Kind von Inochi gen. Picu) doppelt aufgeführt
- Empfehlung: Namenlose Tiere werden in merge_and_resolve.py (Z.2518-2532) als Placeholder bewusst NIE gemerged, und name-basierte conflict-decisions greifen ohne Namen nicht. Daher einen externalRef-basierten Merge-Override einführen (neues Feld z.B. 'mergeExternalRefs' in conflict-decisions.json), der den Placeholder-Ausschluss für explizit gepaarte Records überbrückt: (a) Kind 13944d01 in 5b5af108 mergen (primary = Picus-Son-Record); (b) Mutter 1ddfceaf in 6864eaef mergen (oder DOB-Remap 13.11.2022->13.11.2023 ebenfalls externalRef-basiert); (c) Folge: die zwei virtuellen Würfe 48bb7715 und 6430018f kollabieren zu einem (gleicher Vater+Mutter+Datum). Betroffen: tools/import/merge_and_resolve.py (Placeholder/Sub-Group Z.2504-2590), tools/import/extract.py (Override-Lader Z.1051/1088), tools/import/conflict-decisions.json. Danach extract.py + merge_and_resolve.py neu laufen lassen + POST /import/ingest-resolved. Schließ-fixNote-Vorschlag (Laiensprache): "Der namenlose Bock (geboren am 15.02.2024, Kind von Inochi gen. Picu) war versehentlich doppelt eingetragen — jetzt gibt es nur noch einen Eintrag und einen Wurf. Bitte die Seite neu laden."
### zuchtpartner-zeile (1 Ticket(s) · frontend)
Dateien: gerbil-manager-web/e2e/mock-api.ts, gerbil-manager-web/src/pages/GerbilDetailPage.tsx, gerbil-manager-web/src/strings/de.ts
- [Cluster] **Zuchtpartner-Zeile in der Tier-Akte anzeigen** (Alvin von den kleinen Chaoten, S/high) — Frontend-only: In GerbilDetailPage.tsx aus den bereits geladenen parentLitters eine Distinct-Liste der jeweils anderen Elternteile ableiten (litter.motherId wenn Tier=Vater, sonst fatherId) und als eigene Kv-Zeile "Zuchtpartner" mit Links auf die Partner-Akten rendern; nur bei is
`id=ce309e79-4e4a-4219-a112-8706dc80de42`
### Cluster: litter-expected-colors (1)
### nachzucht-verlinkung (1 Ticket(s) · import-logic)
Dateien: GerbilManagerWebAPI/Import/Rpro3/rpro3-decisions.json, gerbil-manager-web/src/pages/GerbilDetailPage.tsx, tools/import/merge_and_resolve.py
- [Cluster] **Nachzucht-Verlinkung bei Blacky und Flori fehlerhaft** (Danny von Maintaler PZ, M/medium) — Blacky-Record 22fe841c in 9b40b9e5 zusammenfuehren (Import-Dedup, deterministische IDs, re-ingest-stabil), analog zum "zwei Danny"-Fall; dann konsolidieren sich Wuerfe/Nachzucht. Fuer Flori Feivels Zuchteinsatz/Residenz anhand der handschriftlichen Wurfchronik pruefen (laeuft ueb
`id=8e402d22-f5cb-4993-af05-cfab8c62ccb2`
- **c8ce27e2-8ebe-4662-a816-7899be9c6a82** [genetics-engine] — Wurf-Detail: erwartete Farbschläge falsch (unbekannte Allele erzeugen Phantom-Farben)
- Empfehlung: Erwartete-Farbschlag-Liste in der Genetik-Engine bereinigen: (1) winzige (<1%) spekulative Wildcard-Artefakte, die nur aus unbekannten Eltern-Allelen (D-, P-) entstehen, nicht prominent als 'erwartet' anzeigen, sondern aggregieren oder unter 'unsicher' zusammenfassen; (2) 'Unbekannter Farbschlag' und technische Pseudo-Farben wie 'C-Separator' aus der erwarteten-Liste herausfiltern (Catalog-Gap #39); (3) optional Hinweis 'Eltern tragen unbekannte Allele (D-/P-), erwartete Farben daher unsicher'. Kern: parentAlleleWeights/unknownPartnerOptions in punnett.ts laesst das unbekannte Partner-Allel an D-/P- rezessiv werden (rank(d)>=rank(D)); da beide Eltern D-/P- tragen, entstehen dd/pp -> Dilute/Blau/Platin-Phantome. Betroffen: gerbil-manager-web/src/genetics/punnett.ts, breed.ts (byFarbschlag-Aggregation/Filter), catalog.ts (Unbekannter-Farbschlag-Gap), pages/WurfDetailPage.tsx + components/BreedingResultView.tsx.
### toter-elternteil-namensdublette (1 Ticket(s) · import-logic)
Dateien: Gerbil 29cbd5e6 (Eliza *2010), Litter 2afbbfda-80d3-5e8e-88b5-852b9eaa942a (J5-Wurf), tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py (_resolve_name, parent_age_plausible), tools/import/test_merge_resolve.py
- [RÜCKFRAGE] **Toter Elternteil als Mutter: falscher Wurf auf Elizas Akte (Namensdublette)** (Eliza, M/high) — In merge_and_resolve.py::_resolve_name / parent_age_plausible einen Sterbedatum-Filter ergänzen: Kandidat ausschließen, wenn DateOfDeath vor dem Wurfdatum liegt (Gestations-Marge ~25 Tage). Regressionstest in test_merge_resolve.py. Nach Antwort der Züchterin die korrekte lebende
`id=b22896bc-755c-48a2-aa01-e3788453feb2`
## Rückfragen (NeedsInfo, warten auf Züchterin)
### geschlecht-override (1 Ticket(s) · import-logic)
Dateien: tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [Cluster] **Domi als weiblich statt männlich importiert** (Domi, S/high) — Zwei Teile: (1) conflict-decisions.json-Eintrag für Domi {name:"Domi", dob:"2010-06-25", gender:"m"}; (2) in merge_and_resolve.py (~Z.3291) den Guard lockern, sodass ein expliziter decision-gender auch ein bereits gesetztes Geschlecht überschreibt (aktuell nur bei unknown/None).
`id=4edc51d5-1792-4f2a-b75f-c9e57363f70d`
- b8f8b6fb-5d68-4c15-bd58-daee382ea9af — Falscher Name "1.) Butter2.) Trixi" — Vergesellschaftungs-Partner statt Tiername
- 8fe0e93e-45f2-41e7-b27d-aa3cd0bb15e3 — Sunny von PZ Karl — falscher Vater (chart-position geraten)
- d99563fa-a5cf-43da-aaa6-78bd4b677cb2 — Falsches Foto bei Odelia von den Kleinen Chaoten
- 38c26381-ad17-4255-b480-b2ebee3f2133 — Odelia „Falsche Eltern!!" (Cash × Elena)
- 4692fd5c-5929-435b-b7b4-75ccb7ba3e08 — Danielle falsche Mutter, Vater fehlt (Stammbaum)
- ba63325a-4c23-4c5b-b52a-c0dc091bc59b — Gaida: falsche Eltern - echte Eltern (Kinder von Nisha & Zenon) fehlen in den Daten
- 7bbc045c-a23b-4d1d-905f-18b087fe90aa — Catelyn Stark — Eltern (Vater fehlt, Mutter vermutlich falsch)
- 1e7b66e6-e46b-49ff-acab-579e9088f859 — Erwartete Farbschläge/Gencodes am Wurf Mamta Mini + Gold
### a-wurf-jungtierzahl (1 Ticket(s) · needs-info)
Dateien: GerbilManagerWebAPI/Endpoints/LitterEndpoints.cs, tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [RÜCKFRAGE] **A-Wurf: gemeldete Geburtenzahl (4/2 Todgeburten) widerspricht 3 eingetragenen Jungtieren** (A-Wurf, S/medium) — Antwort der Züchterin abwarten: entweder totalBorn=5 (3 Pups + 2 Todgeburten) oder ein Pup gehört nicht in den Wurf (dann Merge 0001/0013 korrigieren). Danach totalBorn/deathsWithin8Weeks im Importer setzen (merge_and_resolve.py / conflict-decisions.json bzw. addLitters), kein Li
`id=a93938a6-f2d1-4fb6-ba0f-c96b72671236`
## Bereits behoben (geschlossen mit Changelog)
### kruke-dob (1 Ticket(s) · import-data)
Dateien: tools/import/conflict-decisions.json
- [Cluster] **Kruke: Geburtsdatum 18.09.2009 ergänzen** (Kruke, S/high) — In tools/import/conflict-decisions.json beim Kruke-Eintrag (ca. Zeile 949) "dob": "18.09.2009" ergänzen (Format DD.MM.YYYY wie beim Wynn-Eintrag), dann merge_and_resolve.py laufen lassen und POST /import/ingest-resolved. Kein Code- oder Schema-Change nötig; plausibel als Mutter e
`id=b72acf1e-4999-44ae-a2dc-58408864e242`
- f92a9650-eb2b-4298-87aa-0a230ee0aeff — Stich von Privatzucht Gießen — Mutter bekannt
- e9790985-306d-4f32-94f1-a02a9469e3ad — Arya Stark — Abgabe an Clan of Black Forest / Bestandsanzeige
- 50b17699-7113-4348-9d46-95abe2d2b239 — Bill von Privat — Eltern unbekannt (Stammbaum)
- bee684ed-ced6-408b-825c-4248f3bf17cf — Melly von Privat — Eltern unbekannt
- aa530d1b-1811-469d-990a-d834a9cb65b7 — Beatrice von den kleinen Chaoten — "Eltern fehlen" im Stammbaum
- 671f8b5d-e5ce-4b47-aafa-db96fa180e37 — Silver: Vater Taro + Mutter Beatrice-Stammbaum (missing-parents)
- e09bf10e-1a72-494a-92c0-6824129eebf0 — Tony v.d. Kleinen Chaoten — Vater Sammy
- b46d5807-fe23-4922-b09e-dffaf411177c — Cooky vom Zooladen (OBI): Eltern unbekannt (Zooladen-Gruendertier)
- 32de49fe-db33-4b14-bb1e-55ba19b2ed1c — Arya Stark — falsche Mutter (Eltern Sansa Stark + Vance, Geschwisterverpaarung)
- dfaae8fb-6f16-45d9-bf30-3b3480325188 — Hagrid Rubeus of Black Forest — externer Ahne zeigte fälschlich Würfe
- d7189414-5028-4e20-838d-8e6fcf09f8a0 — Hagrid Rubeus of Black Forest — Eltern (Snickers + Milka)
- b3908b69-eddc-4cb1-984c-37fe18e19f17 — Hagrid Rubeus of Black Forest — Charakter/Eigenschaften bei externem Vorfahren ausblenden
- 4493fd8a-1136-4c1c-a6a6-9a7de45a5a8c — Yuki von den Kleinen Chaoten — falscher Vater, Eltern Camaro & Izumi
- ce404b2d-77a9-44bf-80fc-9750b6312fce — Belica gen. Emi - Mutter Hana
- 684f5b7d-8d20-4159-80b2-16b3387b78da — Zadar from Zeko i ptica, Croatia Eltern unbekannt (Stammbaum)
- 1a51dc7a-05bf-4eac-bfbc-0b6b53e619fc — Theodore von den Kleinen Chaoten — Vater BlackFire
- 864f0c55-5a84-4a99-8314-dfa3496dfee0 — Jamie: Vater = Danny von Privatzucht Maintal
- 473dc345-a610-42b7-b897-121716b36cf4 — Vance: "unbekannter Farbschlag" statt Kohlfuchs
- 46c635ba-53da-4196-a486-106a2adce1e4 — Vance: fehlende Mutter (sollte Enya sein)
- 5151ab20-147c-4e44-b57e-7a28fe962d85 — Vance: Genotyp zeigte "uw" statt G-Locus
- 81a3126b-0414-49a0-ae91-1ba775b2766f — Zac gen. Action — fehlende Mutter (Dorie of Black Forest)
- 2cd5c28f-a353-4477-ac15-9ee78f8c73a9 — Gold v.d. Kleinen Chaoten — Muttertier (Chelsea)
- 3c46d0b4-3cfc-4e7c-ad93-36f45b288410 — E-Locus: Schimmel (efef) faellt bei Mamta Mini x Gold
- b034ddd2-9df7-4d36-8c79-957f30cc19f7 — Algierfuchs / E-Locus e- Validierung (ee[-])
### scheckungsart-erfassung (1 Ticket(s) · import-logic)
Dateien: gerbil-manager-web/src/pages/GerbilDetailPage.tsx, tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [Cluster] **Alvins Scheckungsart (Punktschecke) wird nicht angezeigt Feld leer** (Alvin von den kleinen Chaoten, S/high) — spottingType="Punktschecke" für Alvin (b04dc268…, DOB 2010-02-18) setzen. Kanonisch/re-ingest-stabil: conflict-decisions.json-Resolution per name+dob um Feld spottingType erweitern UND merge_and_resolve.py-Resolutions-Anwender (~Zeile 3235-3279) um einen spottingType-Zweig analog
`id=9d86a7c2-c4dc-4ad2-aedd-4abaf13ca26b`
### herkunft-clan-kleine-chaoten (1 Ticket(s) · import-logic)
Dateien: GerbilManagerWebAPI/Import/Rpro3/Rpro3ImportService.cs, POST /import/ingest-resolved, tools/import/merge_and_resolve.py
- [Cluster] **Herkunft "Clan kleine Chaoten" global auf "Zucht der Kleinen Chaoten" vereinheitlichen** (Bodo, M/high) — Kanonisches Herkunfts-Label "Zucht der Kleinen Chaoten" definieren und beide Importer darauf normalisieren: (1) RPRO3-Importer an der OriginBreeder-Zuweisung (Rpro3ImportService.cs ~Z.444) "Clan kleine Chaoten"/Varianten mappen; (2) Python-Importer (merge_and_resolve.py) Literal
`id=aaee068b-16a8-46a7-b973-a06577cc5ab1`
### wurfchronik-dublette-merge (1 Ticket(s) · import-logic)
Dateien: gerbil JackJack ff6735c6-ddc9-5277-a976-1867e5242818, gerbil JackSack b6d8b3ef-3077-53cf-bc52-93fd82e3982b, litter A-Wurf 29f4bae9-ca7d-56c4-b8bc-8283d5284b87, tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [RÜCKFRAGE] **JackJack und JackSack im A-Wurf sind dasselbe Tier (Dublette)** (A-Wurf, M/high) — Beide Datensätze zu einem Tier zusammenführen und den reichen Datensatz (JackSack, page_0013, id b6d8b3ef: Farbe/Genotyp/Sterbedatum/Abnehmer) behalten, den Stub (JackJack, page_0001, id ff6735c6) unterdrücken. Da der Decision-Layer bisher nur isResident/notes/receiver kann (kein
`id=0cf6b838-3ee1-4ec0-ac9d-43901e6b5320`
### wurfchronik-eltern-fehlen (1 Ticket(s) · import-logic)
Dateien: tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [Cluster] **Wurf S1 fehlt bei Flori (Eltern Flori x Delia of cb-animals nicht verknüpft)** (Flori von den Kleinen Chaoten, M/medium) — Wurf S1 im Importer mit Vater Flori (90a37fe0) und Mutter Delia of cb-animals (81204d7e) verknüpfen; beide existieren und sind altersplausibel. Bevorzugt per conflict-decisions.json. Achtung Dubletten-Risiko: addLitters erzeugt eine neue Litter (decision-litter-wurf-s1) und würde
`id=55ff9203-58c3-4470-b960-5ca035cb4666`
### dastan-fehlmerge (1 Ticket(s) · import-logic)
Dateien: 7 Wuerfe 2015 (T6/Y4/E6/H6/Dastan+Elly/Snoops+Dastan/Z5), Genotyp + isResident + Farbschlag, Gerbil fba979a3 (Dastan), Litter 1eb3e1fb (D-Wurf 2010, Blacky+Kuke), tools/import/conflict-decisions.json, tools/import/extract.py, tools/import/merge_and_resolve.py
- [Cluster] **Dastan: Import-Fehl-Merge trennt Pet- und Zucht-Dastan nicht** (Dastan, L/high) — Force-Split im Dedup (merge_and_resolve.py + conflict-decisions.json): 2015er-Zucht-Dastan-Quellzeilen (Teil1 p45/46/50, Teil2 p6) nicht in den 2010er Pet-Dastan mergen. Pet-Dastan fba979a3 korrigieren: Genotyp aa C- DD E- G- P- Spsp (Kragenschecke), isResident=false, "Breeding F
`id=0ebc250f-17a7-45d8-8b21-91e563fbfd9c`
### rpro3-erwerb-uebernahme (1 Ticket(s) · needs-info)
Dateien: GerbilManagerWebAPI/Endpoints/AcquisitionEndpoints.cs, GerbilManagerWebAPI/Import/Rpro3/Rpro3ImportService.cs, GerbilManagerWebAPI/Models/AcquisitionRecord.cs, tools/import/_rpro3.db
- [RÜCKFRAGE] **Erwerb-Daten aus RennmausPro für Bodo, Coco, JackJack übernehmen** (Bodo, S/medium) — Erwerbs-Felder (Datum, von wem bzw. „eigene Zucht", ggf. Preis/Notiz) für die drei Tiere von der Züchterin erfragen (Rückfrage gestellt) und via POST /acquisitions als ingest-stabile AcquisitionRecords eintragen. Alternativ vollständigen RennmausPro-Export beschaffen und den rpro
`id=efe47d3f-6da8-4928-a05d-875d7a410a44`
### rpro3-foto-import (1 Ticket(s) · needs-info)
Dateien: /photos-Endpoint, GerbilManagerWebAPI/Import/Rpro3, GerbilPhotosTab.tsx, tools/import/_rpro3.db (photo_tb)
- [RÜCKFRAGE] **Blacky: Fotos aus RennerPro fehlen (nur Dateinamen, keine Bilddateien)** (Blacky von PZ Seligenstadt, L/high) — Speicherort der echten RennerPro-Bilddateien klaeren (Rueckfrage gestellt), dann rpro3-Foto-Import bauen: photo_tb-Dateinamen je stamm-id/rid auf die Bilddateien mappen und ueber den /photos-Endpoint an die gematchten Gerbils haengen (ingest-stabil, deterministisch). Gilt generel
`id=00493a79-b4e1-4856-b0c4-9e08508ca484`
### tod-abgabe-erfassung (1 Ticket(s) · backend)
Dateien: GerbilDetailPage.tsx (Felder Tod/Abgabe/Abnehmer), GerbilManagerWebAPI Endpoints/GerbilEndpoints.cs (Edit → GerbilOverride), Kontakt-Anlage (Abnehmer Caroline Emmert)
- [Cluster] **Gaida: Tod (09.10.2025, Lungenentzündung) und Abgabe an Caroline Emmert erfassen** (Gaida von den Kleinen Chaoten, S/high) — Neuen Abnehmer-Kontakt "Caroline Emmert" anlegen (existiert nicht, 20 Kontakte geprüft). Auf Gaidas Akte via UI-Edit setzen: dateOfDeath=2025-10-09, causeOfDeath="Lungenentzündung mit Fieber", receiverContactId=neuer Kontakt, status→Verstorben/Deceased, goHomeDate leer lassen. De
`id=c3f374ec-83a2-4999-bbeb-ef3bdbbd9bfb`
### eltern-namensdopplung (1 Ticket(s) · needs-info)
Dateien: gerbil-manager-web/src/pages/GerbilDetailPage.tsx, tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [RÜCKFRAGE] **Alvins „Nachkommen mit Zuchteinsatz“ zeigt falsche Tiere (Namensdopplung)** (Alvin von den kleinen Chaoten, M/medium) — Eltern-Links der 2014-2016er Würfe von Sunny(31533666)/Zora(527a353c)/Lexy(bd97a229)/Zorro(f50bcf7f) auf die korrekten jüngeren gleichnamigen Tiere umhängen (DOB-Plausibilität im Resolver bzw. conflict-decisions.json) und neu importieren; für Lee(8eb68783) & Sam(5b86e826) nach An
`id=d1069edb-1001-4e24-b436-147948b85c8a`
### gerbil-name-suffix (1 Ticket(s) · import-logic)
Dateien: gerbil c7dbc0b0-8a35-57a1-8f64-2b5351a273d6 (Uriana), tools/import/merge_and_resolve.py
- [Cluster] **Mutter-Name auf Xhemiles Akte ohne Zuchtsuffix ("Uriana" statt "Uriana von den Kleinen Chaoten")** (Xhemile gen. Chanel von den Kleinen Chaoten, S/high) — In tools/import/merge_and_resolve.py in get_normalized_gerbil_name (gerbil_norm_map, Zeile 389ff) Eintrag "uriana": "Uriana von den Kleinen Chaoten" ergänzen (Norm-Key eindeutig, nur dieser Proband). Danach neu generieren (extract.py + merge_and_resolve.py) und POST /import/inges
`id=c55a677c-be2e-4f34-820e-a695ef9260b2`
### xtra-bounty (1 Ticket(s) · import-data)
Dateien: tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [Cluster] **Tiername falsch: „Extra Bounty" muss „Xtra Bounty" heißen** (Extra Bounty, S/high) — Im bereits vorhandenen conflict-decisions.json-Block für externalRef „Wurfchronik Teil 2_page_0006.md-0c9c7be0-de7f-48fa-b8be-c6e87cbcd8fa" ein Feld "renameTo": "Xtra Bounty" ergänzen (Match-Key externalRef bleibt stabil, renameTo greift in merge_and_resolve.py). Danach merge_and
`id=878f4b6e-e5c2-4c35-8b91-e08127914fe4`
### kuke (1 Ticket(s) · import-data)
Dateien: tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py, tools/import/test_merge_resolve.py
- [Cluster] **Kuke (fälschlich "Kruke"): Name korrigieren + RennmausPro-Daten ergänzen** (Kruke, M/high) — Im Importer beheben: addAnimals-Stub weiterhin auf "Kruke" gekeyt lassen (deterministische Id + 6 Wurf-Elternlinks hängen an dieser Schreibweise), Anzeigenamen via resolutions {name:Kruke, renameTo:Kuke} korrigieren. Reichfelder ergänzen: dob 18.09.2009, zucht "M.Knoss" (OriginBr
`id=1fffdd0e-b9c3-4bcf-a7c9-705fdb111acb`
### wurfchronik-teil2-phantom (1 Ticket(s) · needs-info)
Dateien: GerbilManagerWebAPI/Import/IngestResolvedService.cs (Stale-Removal), tools/import (Wurfchronik-Teil-2-Import), tools/import/conflict-decisions.json
- [RÜCKFRAGE] **Unbekanntes Tier „Nymphs" aus Wurfchronik Teil 2 (Phantom-Zuchtrüde)** (Nymphs, M/medium) — Antwort der Züchterin abwarten. Bei echtem Tier: korrekte Felder/Namen via Override bzw. Chronik-Parsing ergänzen. Bei Phantom/OCR-Fehler: Datensatz unterdrücken/entfernen. Prüfen, ob Nymphs vom aktuellen tools/import-Lauf überhaupt noch erzeugt wird (Teil-2-Import ohne committet
`id=ca8a1c48-1407-44ed-908f-986cbc0e5e0b`
### willow (1 Ticket(s) · import-data)
Dateien: Live-DB Gerbil 3f9c5a26-af3a-55dc-9c4b-4ebdea4ce36f, Wurfchronik Teil 2 Excel Quelle (Seite 6), tools/import (Wurfchronik Teil 2 Import), tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py (Dedup-Regel)
- [Cluster] **Willow: falsches Geschlecht (m→w) + fehlende Eltern/Geburtsdatum aus Wurfchronik Teil 2** (Willow, M/medium) — Als variables Wurfchronik-Tier im Importer korrigieren (re-ingest-stabil): Geschlecht auf weiblich setzen; DOB + Eltern aus der Wurfchronik-Teil-2-Excel (Seite 6) bzw. per Dublettenabgleich mit „Willow of Black Forest" (DOB 16.01.2017, Black-Forest-Stammbaum) ermitteln und über c
`id=9935323f-883e-4686-b3ff-de8d10de4722`
### hero-abgabe-widerspruch (1 Ticket(s) · needs-info)
Dateien: Gerbil Hero 7f0d43cc-0cf6-5afc-98bd-63ab6f031c04, Litter D3-Wurf 421851c3-dedd-5620-80ec-a06e27c9cec9, tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [RÜCKFRAGE] **Hero (Alvins Sohn): Abgabe-/Sterbenotiz widerspricht D3-Wurf-Vaterschaft** (Alvin von den kleinen Chaoten, S/medium) — Antwort abwarten. Fall A (blieb bei ihr, D3 korrekt): in conflict-decisions.json name+dob-Resolution fuer Hero (*31.10.2010) die falsche Abgabe-/Sterbenotiz per notes-Override korrigieren, isResident bleibt true. Fall B (2011 abgegeben, D3 gehoert anderem Hero): D3-Vaterlink loes
`id=72d18800-342b-4935-9aad-311a1607b3da`
### genna-herkunft (1 Ticket(s) · import-data)
Dateien: Herkunft/originBreeder, Stammbaum (Eltern Epoxy x Reika), tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [Cluster] **Genna: falsche Herkunft (soll "Clan of Golden Lights" sein)** (Genna, M/high) — In tools/import/conflict-decisions.json eine name(+dob)-Resolution fuer Genna anlegen: originBreeder="Clan of Golden Lights" (merge_and_resolve.py wendet den Override ~Z.3236 an). Optional anreichern: DOB 2014-06-20, Farbe Zobel, Genotyp aa c[chm]c[chm] DD Ee gg Pp spsp. Stammbau
`id=2fbbc0a2-a80c-4d90-a250-567fdd915abe`
### extern-zuchttier-wurfleiste (1 Ticket(s) · needs-info)
Dateien: gerbil-manager-web/src/pages/GerbilDetailPage.tsx, tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [RÜCKFRAGE] **Extern zugekauftes Zuchttier (Blacky von PZ Seligenstadt) zeigt Wurf-Leiste** (Blacky von PZ Seligenstadt, M/medium) — Antwort abwarten. (a) "Nur Vorfahre, nie selbst gezüchtet" -> Blacky per isResident=false-Override in conflict-decisions.json extern markieren (analog Akane/Naémi/Bentley), Wurf-Leiste verschwindet automatisch; dabei die fälschlich "von den Kleinen Chaoten" benannten Nachkommen (
`id=7dedec07-99b8-4b0c-9f51-bf14a583ec67`
### xhemile-falsche-mutter (1 Ticket(s) · import-data)
Dateien: Wurf 5b6c873a-a508-5c4d-af5b-66a37c071391, tools/import/conflict-decisions.json, tools/import/extract.py (chart-position Eltern-Resolver), tools/import/merge_and_resolve.py
- [Cluster] **Xhemile gen. Chanel: falsche Mutter (Uriana statt Oyama), Vater korrekt** (Xhemile gen. Chanel von den Kleinen Chaoten, S/high) — Re-ingest-stabiler Fix im Importer (variables Tier, kein Live-DB-Patch): conflict-decisions.json-Resolution fuer Xhemile (name+dob 2021-05-16) mit Mutter-Override auf Oyama von den Kleinen Chaoten (89c61419-4681-5c79-954f-7010a3feefa6, *2018-12-26); Vater Ramzi (6a6d47ec-6ace-5e1
`id=25890c71-dfde-4a1c-b77e-b04a6b5a9ad3`
### verpaarung-phantom-tiere (1 Ticket(s) · import-logic)
Dateien: resolved_import.json, tools/import/extract.py, tools/import/test_extract.py
- [Cluster] **"Verpaarung von …" als Tiername importiert (Phantom-Tiere)** (Verpaarung von Chevrolet Camaro of Topolino, M/high) — In tools/import/extract.py Namenszellen, die mit "Verpaarung von" (case-insensitive) beginnen, nicht als Eigennamen/Tier akzeptieren, sondern verwerfen (mit verworfen-Provenance). Danach extract.py, merge_and_resolve.py, POST /import/ingest-resolved; die stale Phantom-Tiere werde
`id=cc85c890-042f-4393-bbcf-f919716a3b12`
### elliot (1 Ticket(s) · import-data)
Dateien: Contact (neu: Luise Neubert-Kutschke), Gerbil.gender, Gerbil.goHomeDate, Gerbil.receiverContactId, tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [Cluster] **Elliot (*2023): Geschlecht auf männlich korrigieren + Abgabe an Luise Neubert-Kutschke nachtragen** (Elliot, M/high) — Fix im Importer (re-ingest-stabil): conflict-decisions.json-Resolution auf name=Elliot + dob=25.02.2023 (NICHT nur Name — zweiter Elliot *11.09.2015 existiert; alternativ externalRef docx-161-elliot-2023-02-25) mit gender=male; addContact für Luise Neubert-Kutschke (Am Steinberg
`id=6af0ad73-5987-4310-a757-a47282a4f1f9`
### shelly-name-merge (1 Ticket(s) · import-data)
Dateien: tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py, tools/import/output/animals.json
- [RÜCKFRAGE] **Shelly: Name unvollständig Wurfchronik-Rufname nicht mit Stammbaum-Vollnamen gemergt** (Shelly, S/high) — In tools/import/conflict-decisions.json einen Namens-/Dedup-Alias hinterlegen, der den Wurfchronik-„shelly" mit dem Stammbaum-Vollnamen-Record (samgenshellyvdbuntenfellnasen / sammygenshellyvdbuntenfellnasen) merged bzw. den korrekten Vollnamen setzt (merge_and_resolve.py Dedup),
`id=7deec818-ad29-4053-86fb-5e67ac180e70`
### tai-verstorben (1 Ticket(s) · needs-info)
- [RÜCKFRAGE] **Tai als verstorben markieren Todesdatum fehlt in RennerPro-Kopie** (Tai, S/high) — Todesdatum (und ggf. Ursache) bei der Züchterin erfragen, dann status=Deceased + dateOfDeath (+ causeOfDeath) auf das Tier setzen. Dabei Ingest-Persistenz beachten: Status wird laut CLAUDE.md nicht per GerbilOverride eingefroren entweder Freeze-Scope prüfen oder eine name+dob-R
`id=b222b459-57c5-40ea-88b0-0fa696869c6b`
### elena-dublette (1 Ticket(s) · import-data)
Dateien: gerbil a0aff85b (Elena of KK Chaos), gerbil bc2400c9 (Elena), litter f26293c2, tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [Cluster] **Elena ohne Stammbaum ist Dublette von „Elena of KK Chaos"** (Elena, M/high) — Manuelle Merge-/Dubletten-Entscheidung in tools/import/conflict-decisions.json anlegen, die die Wurfchronik-Elena (bc2400c9) mit „Elena of KK Chaos" (a0aff85b) zusammenführt → ein Tier mit vollem Stammbaum (Eltern-Wurf f26293c2 Ibo × Skarlett), DOB 2013-12-05, Genotyp, Status Dec
`id=6cdb22b4-f8c0-4d0b-913c-d16392031585`
### stammbaum-ohne-eltern (1 Ticket(s) · needs-info)
Dateien: gerbil-manager-web/src/pages/GerbilDetailPage.tsx, gerbil-manager-web/src/pages/StammbaumPage.tsx, tools/import/conflict-decisions.json
- [RÜCKFRAGE] **Aaren: Stammbaum wirkt leer (keine Eltern hinterlegt)** (Aaren, S/high) — Rückfrage an die Züchterin, ob Aarens Eltern bekannt sind. Falls ja: über conflict-decisions.json (addAnimals/parents, deterministische GUID) ergänzen + Re-Ingest, dann füllt sich der Stammbaum. Falls Eltern unbekannt (zugekauft): leerer Stammbaum ist korrekt; ggf. UX-Hinweis "ke
`id=7a9831f6-4d68-41e7-add2-bc06393e6ed6`
### drake-jr-eltern (1 Ticket(s) · needs-info)
Dateien: gerbil-manager-web/src/pedigree/build.ts, tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [RÜCKFRAGE] **Drake Jr: Stammbaum leer, weil keine Eltern hinterlegt** (Drake Jr, S/medium) — Zur Frage der Züchterin: Ja, Drake Jr ist Vater von Q3-Wurf (2014-06-21) mit Jacky v.d. Kleinen Chaoten, 12 Jungtiere. Nach Antwort der Züchterin die Eltern von Drake Jr im Importer verknüpfen (conflict-decisions.json name+dob-Resolution bzw. addLitters mit Drake Jr als Kind, mer
`id=31811914-257b-4c83-bb42-85cc2d140277`
### vorfahre-nachzucht-zeile (1 Ticket(s) · frontend)
Dateien: gerbil-manager-web/src/pages/GerbilDetailPage.tsx, gerbil-manager-web/src/strings/de.ts
- [Cluster] **Vorfahren: Wurf-Karten durch Nachzucht-Zeile ersetzen** (Percy of little runners, S/high) — In GerbilDetailPage.tsx fuer isResident===false zusaetzlich zum/statt des nonResidentNote eine kompakte Zeile rendern, die die Nachzucht(en) benennt (Kinder-Namen/Links aus dem offspring-Query, der unabhaengig von der Residenz feuert, oder die Wurf-Namen). Neuen de.ts-String (z.B
`id=fbb732a3-f20b-4f12-8408-748be6cf8625`
### berni-montana-merge (1 Ticket(s) · import-logic)
Dateien: Gerbil 763bf91f (Montana), Gerbil 999baccb (Berni), tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [RÜCKFRAGE] **Berni ist vermutlich Rufname von Montana (Dublette)** (Berni, M/high) — Nach Bestätigung der Züchterin: Alias/Merge-Decision in conflict-decisions.json anlegen (Berni → Montana v.d. Kleinen Chaoten 763bf91f…), die 3 Berni-Würfe (M10/Polar/M12) auf Montana umhängen und den datumsgleichen 2017-07-20-Wurf deduplizieren, dann neu importieren.
`id=0921dba5-d3a7-47d7-ae95-0c6e535815d1`
### x16-wurf-eltern-fehlen (1 Ticket(s) · import-data)
Dateien: Stammbaum von Goldfuchs Sp (Pikachu) Kids.xlsx, Wurfchronik der Kleine Chaoten Teil1.xlsx (Wurf X16), tools/import/conflict-decisions.json, tools/import/extract.py, tools/import/merge_and_resolve.py
- [RÜCKFRAGE] **Zhuāngzǐ: Eltern/Wurf fehlen — Wurf X16 (Nisha × Zenon von Elea) eindeutig bestimmt** (Zhuāngzǐ von den Kleinen Chaoten, M/medium) — Data-driven, re-ingest-stabil in conflict-decisions.json: name+dob-Resolution (bzw. addLitters für X16) für Zhuāngzǐ UND die gleich betroffene Schwester Zaibunissa, die Wurf X16 mit Mutter Nisha of Black Forest (06dc519d-f92e-5d09-95b4-61d7bbdc228a) und Vater Zenon von Elea (cd2e
`id=785851d0-7b37-45a7-adcc-e78db9c3c4b9`
### chiko (1 Ticket(s) · needs-info)
Dateien: Gerbil 7d3b7c47-6320-5181-b612-56676e4516d5 (Chiko), tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [RÜCKFRAGE] **Chiko: leerer Stammbaum, reiner Wurfchronik-Partner ohne weitere Daten** (Chiko, S/medium) — Ruckfrage an Zuchterin nach Herkunft/Farbe/DOB von Chiko gestellt. Nach Antwort: falls Daten vorhanden -> Anreicherung via conflict-decisions.json (name+dob-Resolution bzw. addAnimals) + Re-Import; falls nur Partnertier ohne Daten -> als korrekt bestatigen (ggf. GerbilOverride/ve
`id=bc859109-32df-4506-9f7d-6f6415c00f02`
### kruemmel-todesdatum (1 Ticket(s) · needs-info)
Dateien: Gerbil 38c6b3c9-18ca-530f-8657-02d62e7c0e59 (Krümmel), Litter 10ddf880 (F-Wurf 2010), tools/import/_rpro3.db (geprüft, kein Treffer)
- [RÜCKFRAGE] **Krümmel (F-Wurf 2010): kein Todesdatum in keiner Quelle** (F-Wurf 2010, S/high) — Auf Todesdatum der Züchterin warten. Nennt sie eines, per UI/GerbilOverride direkt am Tier 38c6b3c9 nachtragen (ingest-stabil) KEIN Importer-Fix nötig, da die Daten in keiner Quelldatei existieren. Nennt sie keins, Feld bleibt korrekt leer und Ticket kann geschlossen werden.
`id=21c8ff24-cc03-4508-b6c6-849ab36ba5b2`
### percy-eltern (1 Ticket(s) · import-logic)
Dateien: tools/import/conflict-decisions.json, tools/import/extract.py, tools/import/merge_and_resolve.py
- [RÜCKFRAGE] **Percy of little runners: Mutter nicht verknüpft (Stammbaum-Fehlparse + Selbstreferenz)** (Percy of little runners, M/high) — 1) extract.py chart-position: Kandidaten, die auf das Tier selbst zeigen (gleiche id/Name+DOB), als Elternteil ausschließen (Logik-Bug, unabhängig vom Einzelfall). 2) Sobald die Züchterin die echte Mutter nennt: Eltern-Link (Mutter, ggf. Vater Rasputin of little runners) in confl
`id=e87a6da5-0ff1-46b6-b4ec-5d05a1605f5f`
### dusty-stammbaum-dublette (1 Ticket(s) · needs-info)
Dateien: DB-Gerbil 41d7577e-bcaf-5967-a6ed-fe0b52171f77, DB-Gerbil 43e784a4-61bd-5b52-af74-c007c9cd6996, tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py
- [RÜCKFRAGE] **Dusty: Stammbaum fehlt vermutete Dublette (m. Zuchtbock vs. w. Jungtier)** (Dusty, M/medium) — Bei Bestätigung durch die Züchterin: beide Dusty per Force-Merge in conflict-decisions.json zusammenführen (merge_and_resolve.py), Geschlecht auf männlich korrigieren und Eltern Hero × Mira / Geburtslitter D3-Wurf übernehmen; danach neu importieren + re-ingest → Stammbaum erschei
`id=034b4988-5447-4c54-ad28-9a6708133517`
### rpro3-stammbaum-verknuepfung (1 Ticket(s) · import-logic)
Dateien: GerbilManagerWebAPI/Import/Rpro3/Rpro3Dedup.cs, GerbilManagerWebAPI/Import/Rpro3/Rpro3ImportService.cs, GerbilManagerWebAPI/Import/Rpro3/rpro3-decisions.json, Stammbaum-Viewer (StammbaumPage.tsx), tools/import/_rpro3.db
- [Cluster] **Katinka: RennmausPro-Daten nicht mit Excel-Stammbaum verknüpft (Farbe/Genotyp/Nachzucht fehlen)** (Katinka of little runner's, L/medium) — rpro3-Importer so erweitern, dass externe Ahnen per Name (+Eltern/DOB) an bestehende Stammbaum-Records gematcht und Felder (Farbe, genotype, DOB, weitere Ahnen, Nachzucht) übernommen werden, statt Duplikate anzulegen — re-ingest-stabil mit deterministischen GUIDs. Für Katinka kon
`id=740360e5-151d-4dca-a596-f71bc128771b`
### foto-fehlattribution (1 Ticket(s) · import-logic)
Dateien: Foto-Import-Heuristik, tools/import/extract.py (_attach_photos)
- [Cluster] **Percy: Profilfoto zeigt uni-schwarz statt schwarz-schecke** (Percy of little runners, M/medium) — Cluster: Foto-Zuordnung fuer Percy in tools/import/extract.py (_attach_photos, ~Z.388) gegen die Quell-xlsx pruefen; korrektes schwarz-schecke-Foto zuordnen bzw. das fehlattribuierte uni-schwarz-Foto entfernen; danach re-ingest (re-ingest-stabil). Kein Genotyp-/Farbschlag-Fix noe
`id=e04ceda2-1701-4820-b21f-376dc6d0c5d1`
### rpro3-ahnen-import (1 Ticket(s) · import-data)
Dateien: GerbilManagerWebAPI/Import/Rpro3/rpro3-decisions.json, gerbil 509f4aae-1189-585c-b410-555e75d5d907, litter 4d3afe0a-1d78-5c55-bd99-4f216bd84afc, tools/import/_rpro3.db, tools/import/conflict-decisions.json, tools/import/merge_and_resolve.py, tools/import/rpro3_lookup.py
- [Cluster] **Stammbaum von Fast Boy unvollständig Eltern aus RennmausPro ergänzen** (Fast Boy of Golden Lights, M/medium) — Fast Boys echte Eltern Charly × Ziwa aus _rpro3.db data-driven materialisieren/verknüpfen (statt Danjo-of-Golden-Lights × Xtra-Bounty), Großeltern Ziwa=Danjo × Isiri ergänzen; korrekte Charly-rid über RPRO3-Eltern-Relation wählen; falsche Platzhalter-Eltern + Litter 4d3afe0a erse
`id=0e139f1f-8aa7-4705-a430-0985cf9aa625`
## Offene Rückfragen (NeedsInfo)
- **Foto des N-Wurfs aus der Wurfchronik anzeigen — nicht vorhanden/kein Feature** (N-Wurf): Aktuell zeigt die App Fotos nur bei einzelnen Tieren (aus den Stammbaum-Dateien). Bei Würfen gibt es noch keine Fotos und in der Wurfchronik-Datei selbst sind gar keine Bilder gespeichert. Hast du von diesem N-Wurf (Wurfdatum 28.03.2011) irgendwo ein Foto abgelegt, das du hier sehen möchtest? Wenn ja, sag mir bitte, in welchem Ordner oder welcher Datei es liegt dann kann ich es einbauen.
`id=97a3b4d9-4859-4b0a-8e20-2c602ec2c167`
- **Jungtiere im Wurf falsch sortiert (alphabetisch statt Wurfchronik-Reihenfolge)** (C-Wurf 2010): Aktuell werden die Jungtiere eines Wurfs alphabetisch nach ihrem Namen sortiert. In welcher Reihenfolge sollen sie stattdessen erscheinen - genau so, wie sie in der Wurfchronik von oben nach unten aufgelistet sind?
`id=399dbeb2-6909-43fe-b00f-7b6a2b9fc7b2`
- **Domi: Todesdatum-Zweifel der Züchterin** (Domi): Bei Domi steht als Sterbedatum der 15.07.2012 (Mittelohrentzündung) — sie wäre damit knapp 2 Jahre alt geworden (geboren 25.06.2010). Dieses Datum stammt so aus deiner Wurfchronik. Passt es, oder erinnerst du dich an ein anderes Datum? Dann korrigiere ich es gern.
`id=929273e9-5463-4934-92ff-60cf25c71030`
- **Dante: gemeldeter fehlender Wurf ist bereits vorhanden (Q-Wurf)** (Dante): Bei Dante ist unter „Würfe“ bereits ein Wurf eingetragen: der Q-Wurf vom 13.06.2011, Mutter Malina, mit den vier Jungtieren Amy, Beatrice, Quentin (Eddy) und Quvin. Meinst du genau diesen Wurf siehst du ihn auf Dantes Seite vielleicht gerade nicht? Oder geht es um einen anderen, zusätzlichen Wurf, den ich noch ergänzen soll?
`id=9af81ae2-464c-480b-8199-6f73fcda8619`
- **Flori als Vater von 4 Würfen verlinkt Züchterin erwartet nur JD** (Flori von den Kleinen Chaoten): In der App ist Flori zurzeit als Vater von vier Würfen eingetragen: R-Wurf (08.10.2011, Mutter Yumi), W-Wurf (25.12.2011, Mutter Jana hier steht Feivel), A1-Wurf (15.02.2012, Mutter Jana) und Wurf J1 (11.06.2012, Mutter Delia hier steht JD). Alle vier kommen aus deiner Wurfchronik. Du meinst, Flori war nur bei einem Wurf der Vater (bei JD). Magst du in deiner handgeschriebenen Wurfchronik nachschauen und mir sagen, welche dieser vier Würfe wirklich von Flori stammen? Die falschen Vater-Angaben trage ich dann aus, dann verschwindet z. B. Feivel aus Floris Nachzuchten.</questionPosted> <parameter name="affectedAreas">tools/import/conflict-decisions.json,tools/import/merge_and_resolve.py,GerbilDetailPage.tsx (Nachzuchten-Ansicht)
`id=b7fbdb94-202b-488b-ab5f-6a2b868e65e3`
- **Toter Elternteil als Mutter: falscher Wurf auf Elizas Akte (Namensdublette)** (Eliza): Es gibt in den Daten mehrere Rennmäuse mit dem Namen Eliza. Der Wurf mit Vanille, Jake und Jerry (geboren am 28.02.2015, Vater Jack Jr.) ist versehentlich bei der ältesten Eliza gelandet (geboren am 20.08.2010) diese Eliza war Anfang 2015 aber schon nicht mehr am Leben, deshalb zeigt ihre Akte fälschlich einen Wurf. Zwei andere Eliza-Mäuse kommen als echte Mutter in Frage: eine geboren am 31.08.2013 und eine geboren am 13.02.2014. Welche der beiden hat diesen Wurf bekommen?
`id=b22896bc-755c-48a2-aa01-e3788453feb2`
- **A-Wurf: gemeldete Geburtenzahl (4/2 Todgeburten) widerspricht 3 eingetragenen Jungtieren** (A-Wurf): Im A-Wurf (18.02.2010) sind aktuell drei männliche Jungtiere eingetragen: Alvin, JackSack und JackJack. Du schreibst, es wurden 4 Junge geboren, davon 2 Todgeburten. Damit ich die Zahlen richtig eintrage: Kamen die 2 tot geborenen Jungtiere zusätzlich zu diesen drei dazu (dann wären es insgesamt 5 Geburten)? Oder gehört eines der drei genannten Tiere nicht in diesen Wurf, sodass es genau 4 Geburten waren?
`id=a93938a6-f2d1-4fb6-ba0f-c96b72671236`
- **JackJack und JackSack im A-Wurf sind dasselbe Tier (Dublette)** (A-Wurf): Kurze Rückfrage zu diesem Tier aus dem A-Wurf: In der Wurfchronik steht es mit zwei leicht unterschiedlichen Namen einmal „JackJack" (auf der Wurf-Übersicht) und einmal „JackSack" (auf der Einzelseite mit Farbe, Genetik und Abgabe an Larissa Draeger). Beide meinen dasselbe Tier, geboren am 18.02.2010. Wie heißt die Rennmaus richtig? Sobald du mir das sagst, führe ich die beiden Einträge zu einem einzigen zusammen.
`id=0cf6b838-3ee1-4ec0-ac9d-43901e6b5320`
- **Erwerb-Daten aus RennmausPro für Bodo, Coco, JackJack übernehmen** (Bodo): Ich trage dir die Erwerbs-Daten (woher das Tier kam, das Datum und falls vorhanden Preis oder eine Notiz) gerne so in die App ein, wie sie bei „Erwerb" in RennmausPro stehen. In der RennmausPro-Sicherung, die mir vorliegt, finde ich Bodo, Coco und JackJack aber nicht. Magst du mir für die drei jeweils kurz aufschreiben, was bei „Erwerb" steht (Datum, von wem bzw. „eigene Zucht", und ggf. Preis oder Notiz)? Dann pflege ich es ein.
`id=efe47d3f-6da8-4928-a05d-875d7a410a44`
- **Blacky: Fotos aus RennerPro fehlen (nur Dateinamen, keine Bilddateien)** (Blacky von PZ Seligenstadt): Die RennerPro-Daten, die wir vorliegen haben, nennen zwar die Dateinamen von Blackys Fotos (blacky.jpg, B1.JPG, bla.JPG), enthalten die Bilder selbst aber nicht. Wo liegen denn die echten Foto-Dateien aus deinem RennerPro-Programm - zum Beispiel in einem Bilder-Ordner auf dem Rechner oder auf dem TrueNAS? Sobald wir an diesen Ordner kommen, koennen wir Blackys Fotos (und die der anderen Tiere) uebernehmen.
`id=00493a79-b4e1-4856-b0c4-9e08508ca484`
- **Alvins „Nachkommen mit Zuchteinsatz“ zeigt falsche Tiere (Namensdopplung)** (Alvin von den kleinen Chaoten): Bei Alvin zeigt die App unter „Nachkommen mit Zuchteinsatz“ gerade Hero, Flippi und Gimli — aber zusätzlich auch Sunny, Zora, Lexy und Zorro, während Lee und Sam fehlen. Damit ich es richtig zuordnen kann, eine kurze Rückfrage: Hatten Lee und Sam bei dir eigene Babys (jeweils einen eigenen Wurf)? Und stimmt es, dass Sunny, Zora, Lexy und Zorro NICHT in deiner Zucht waren (deren angezeigte Würfe gehören vermutlich zu gleichnamigen, später geborenen Mäusen)?
`id=d1069edb-1001-4e24-b436-147948b85c8a`
- **Unbekanntes Tier „Nymphs" aus Wurfchronik Teil 2 (Phantom-Zuchtrüde)** (Nymphs): Das Tier „Nymphs" habe ich aus deiner eingescannten Wurfchronik Teil 2 (Seite 26) übernommen. Dort taucht es nur als Zuchtrüde auf (im Original „CP-Nymphs") — ganz ohne Geburtsdatum, Farbe, Eltern oder zugeordneten Wurf. Kannst du dich an einen Rennmaus-Rüden namens „Nymphs" erinnern, oder ist das ein Lese-/Übertragungsfehler, den ich entfernen soll?
`id=ca8a1c48-1407-44ed-908f-986cbc0e5e0b`
- **Hero (Alvins Sohn): Abgabe-/Sterbenotiz widerspricht D3-Wurf-Vaterschaft** (Alvin von den kleinen Chaoten): Bei Hero (Sohn von Alvin, geboren am 31.10.2010) steht in den Notizen, dass er am 1.4.2011 an Brigitta Struve abgegeben wurde und dort am 4.4.2014 verstarb. Gleichzeitig ist er als Vater des D3-Wurfs mit Mira vom 22.11.2013 eingetragen - also mitten in der Zeit, in der er laut Notiz schon bei Brigitta war. Das passt zeitlich nicht zusammen. Was stimmt: Blieb Hero bei dir und hatte mit Mira seinen einen Wurf (dann ist die Abgabe an Brigitta ein Versehen)? Oder wurde er 2011 abgegeben - und der D3-Wurf gehoert eigentlich zu einem anderen Rennmaeuserich?
`id=72d18800-342b-4935-9aad-311a1607b3da`
- **Extern zugekauftes Zuchttier (Blacky von PZ Seligenstadt) zeigt Wurf-Leiste** (Blacky von PZ Seligenstadt): Kurze Frage zu Blacky von PZ Seligenstadt: Hast du früher selbst mit ihm gezüchtet, sind also bei dir eigene Würfe mit ihm gefallen? Oder ist er nur ein Vorfahre aus einer fremden Zucht, den du selbst nie zur Zucht eingesetzt hast? Danach richte ich, ob und welche Würfe bei ihm angezeigt werden.
`id=7dedec07-99b8-4b0c-9f51-bf14a583ec67`
- **Shelly: Name unvollständig Wurfchronik-Rufname nicht mit Stammbaum-Vollnamen gemergt** (Shelly): In Ihrem Stammbaum taucht dieses Tier mit einem laengeren Namen auf: einmal als „Sammy gen. Shelly v.d. bunten Fellnasen" und einmal als „Sam gen. Shelly v.d. bunten Fellnasen". In der Wurfchronik (Vater vom R5-Wurf) steht aber nur „Shelly". Wie lautet sein vollstaendiger, richtiger Name genau und heisst er „Sam" oder „Sammy"?
`id=7deec818-ad29-4053-86fb-5e67ac180e70`
- **Tai als verstorben markieren Todesdatum fehlt in RennerPro-Kopie** (Tai): Danke für den Hinweis! In unserer RennerPro-Kopie ist Tai (Tai gen. Karlchen, geboren am 01.10.2011) leider noch nicht als verstorben eingetragen dort steht kein Todesdatum. Kannst du mir bitte sagen, wann Tai ungefähr gestorben ist (Monat und Jahr reichen), und falls bekannt woran? Dann trage ich das direkt ein.</questionPosted> <parameter name="affectedAreas">GerbilManagerWebAPI/Endpoints/GerbilEndpoints.cs,GerbilManagerWebAPI/Import/IngestResolvedService.cs,tools/import/conflict-decisions.json,tools/import/_rpro3.db (Backup 27.06., ohne Todesdatum für Tai)
`id=b222b459-57c5-40ea-88b0-0fa696869c6b`
- **Aaren: Stammbaum wirkt leer (keine Eltern hinterlegt)** (Aaren): Zu Aaren (geb. 20.04.2024): In der App ist er als zugekauftes Zuchttier aus einem Kaufvertrag eingetragen - seine Eltern (Vater/Mutter) sind bei uns bisher nicht hinterlegt. Deshalb bleibt seine Ahnentafel leer, es gibt oberhalb von ihm nichts zum Anzeigen. Weißt du, wie Aarens Mutter und Vater heißen? Dann können wir sie ergänzen und der Stammbaum füllt sich. Falls er mit unbekannten Eltern gekauft wurde, ist der leere Stammbaum korrekt so.
`id=7a9831f6-4d68-41e7-add2-bc06393e6ed6`
- **Drake Jr: Stammbaum leer, weil keine Eltern hinterlegt** (Drake Jr): Ja, Drake Jr hat einen Wurf gezeugt: den 'Q3-Wurf' am 21.06.2014 mit Jacky v.d. Kleinen Chaoten (12 Jungtiere, darunter Quebec, Pünktchen und Kai-Uwe). Der Stammbaum bleibt aber leer, weil bei Drake Jr keine Eltern hinterlegt sind - in der Wurfchronik (Seite 9) war er nur als Elternteil genannt, ohne eigene Abstammung. Weißt du, wer die Eltern von Drake Jr waren? Zum Beispiel: Ist er ein Nachkomme von 'Drake von den kleinen Chaoten' (geb. 06.06.2012)? Dann können wir seinen Stammbaum ergänzen.</questionPosted> <parameter name="rootCause">Drake Jr hat keine verknüpften Eltern (litterId=null); als reiner Elternteil-Eintrag aus der Wurfchronik importiert, fehlt seine eigene Abstammung, daher zeigt der Ahnenbaum nur Platzhalter.
`id=31811914-257b-4c83-bb42-85cc2d140277`
- **Christinas Eltern/Stammbaum aus RennmausPro verknüpfen** (Christina): Ich habe die RennmausPro-Daten durchsucht, finde dort aber keinen Eintrag genau unter dem Namen „Christina". Am ehesten passt eine „Cristina" (ohne „h", weiblich, geboren am 16.09.2014, mit fremder Herkunft). Ist das dieselbe Maus wie deine Christina? Falls ja, sag mir bitte kurz Bescheid dann verknüpfe ich ihre Eltern/den Stammbaum. Falls nein, nenn mir einfach die Namen von Christinas Mutter und Vater, dann trage ich sie ein.</questionPosted> <parameter name="affectedAreas">["tools/import/_rpro3.db", "tools/import/conflict-decisions.json", "tools/import/merge_and_resolve.py", "GerbilManagerWebAPI/Import/Rpro3"]
`id=a78eaa79-db55-4da1-99b0-ed954f9b07c7`
- **Berni ist vermutlich Rufname von Montana (Dublette)** (Berni): Bei diesem Tier „Berni" steht in deiner Wurfchronik der Wurf „M10 Berni (Montana) + Frodo" also Berni mit Montana in Klammern. Ist „Berni" einfach der Rufname deiner „Montana v.d. Kleinen Chaoten" (geboren 14.06.2015), sodass beide dasselbe Tier sind? Dann führen wir die beiden Einträge zusammen.
`id=0921dba5-d3a7-47d7-ae95-0c6e535815d1`
- **Zhuāngzǐ: Eltern/Wurf fehlen — Wurf X16 (Nisha × Zenon von Elea) eindeutig bestimmt** (Zhuāngzǐ von den Kleinen Chaoten): Ich habe in der Wurfchronik den Wurf vom 21.02.2020 gefunden: Zhuāngzǐs Eltern sind demnach Nisha (of Black Forest) als Mutter und Zenon von Elea als Vater — im Chronik-Eintrag stehen „Zhuāng Zhōu" (= Zhuāngzǐ) und Zaibunissa ausdrücklich als die behaltenen Jungtiere dieses Wurfs. „Gandari" und „Gaidas" finde ich allerdings nirgends in der App. Kannst du mir kurz sagen, wer Gandari und Gaidas sind und wie sie mit Zhuāngzǐ zusammenhängen (z. B. seine Wurfgeschwister aus genau diesem Wurf, die noch fehlen)?
`id=785851d0-7b37-45a7-adcc-e78db9c3c4b9`
- **Chiko: leerer Stammbaum, reiner Wurfchronik-Partner ohne weitere Daten** (Chiko): Chiko taucht bei dir nur ein einziges Mal auf: als Vater von Sherrys Wurf am 26.04.2018 (aus der Wurfchronik Teil 2, Seite 35). Zu Chiko selbst gibt es sonst keine Angaben - kein Geburtsdatum, keine Farbe und keine eigenen Eltern, deshalb bleibt sein Stammbaum leer. Weisst du noch, woher Chiko kam (z. B. zugekauft und von wem) und welche Farbe er hatte? Dann koennen wir seine Akte ergaenzen. Falls er einfach nur Sherrys Partner ohne weitere Daten war, sag kurz Bescheid - dann lassen wir es so.
`id=bc859109-32df-4506-9f7d-6f6415c00f02`
- **Krümmel (F-Wurf 2010): kein Todesdatum in keiner Quelle** (F-Wurf 2010): Hallo! Ich habe jetzt auch die RennmausPro-Dateien durchgeschaut, wie du vorgeschlagen hast. Dort gibt es zwar zwei Tiere namens „Krümel"/„Krümmel" die sind aber viel älter (geboren 2003 bzw. 2005) und haben ganz andere Nachkommen, das ist also nicht unser Krümmel aus dem F-Wurf 2010. Für unseren Krümmel (geboren am 21.09.2010) ist damit weder in der handschriftlichen Wurfchronik noch in den RennmausPro-Dateien ein Todesdatum eingetragen. Weißt du vielleicht noch ungefähr, wann er gestorben ist (Jahr oder Alter reicht schon)? Dann tragen wir es gerne nach ansonsten lassen wir das Feld einfach leer.
`id=21c8ff24-cc03-4508-b6c6-849ab36ba5b2`
- **Percy of little runners: Mutter nicht verknüpft (Stammbaum-Fehlparse + Selbstreferenz)** (Percy of little runners): Bei Percy (of little runners, geboren am 16.12.2017) konnte die automatische Stammbaum-Erkennung die Mutter leider nicht sicher zuordnen: sie hat sich im Diagramm „verheddert" und versehentlich Percy selbst in die Mutter-Rolle gesetzt. Als Vater erkennen wir Rasputin of little runners. Kannst du mir bitte sagen, wie Percys Mutter mit vollem Namen heißt? Dann trage ich sie fest ein.
`id=e87a6da5-0ff1-46b6-b4ec-5d05a1605f5f`
- **Dusty: Stammbaum fehlt vermutete Dublette (m. Zuchtbock vs. w. Jungtier)** (Dusty): Bei dir gibt es zwei Mäuse mit dem Namen „Dusty": einmal den Zuchtbock Dusty, der 2015 Vater der Würfe mit Bleach, Sanza und Harumi war (genau bei ihm fehlt der Stammbaum), und einmal eine Dusty, die am 22.11.2013 im D3-Wurf aus Hero × Mira geboren wurde. Ist das dieselbe Maus? Falls ja, können wir Dustys Eltern (Hero und Mira) verknüpfen und sein Stammbaum wird angezeigt die genannte Dusty ist nämlich als Weibchen erfasst, der Zuchtbock aber als Männchen, deshalb sind sie bisher getrennt.
`id=034b4988-5447-4c54-ad28-9a6708133517`
## Ohne Triage-Ergebnis (nachziehen)
- Domi `id=7c6d53ac-c353-4a6f-874f-96d363e732d0`
- A-Wurf `id=a555dd0a-f693-487c-8c7f-db8e29b363f5`
- Blacky von PZ Seligenstadt `id=690946e6-714f-4816-b6b9-b76a5da6057a`