Genetik-Engine (bde4ec70, f89e95ad, 2322c2a8):
- Saphir/Platin/Platin-Hell unterscheiden sich NUR in der C-Zygotie und waren im
Katalog identisch (locusToken reduziert auf das dominante Allel) → Saphir war
unerreichbar. Token darf jetzt ein exaktes, ungeordnetes Allelpaar "x/y"
verlangen: Platin C/C, Saphir C/cchm, Platin-Hell C/ch. TS- und Python-Mirror
identisch, Seeds regeneriert, Migration ReseedColorVarietiesGen6Saphir.
- c[hm] wird als Alias auf c[chm] normalisiert (Tippfehler in zwei Charts) —
vorher war Jays Gencode unparsebar und ergab "Zobel-Hell".
- 6 Tiere wechseln den errechneten Farbschlag (5x Platin→Saphir, Jay→Zobel).
Importer-Logik:
- renameTo-Notiz-Sweep: der alte Name blieb in Wurf-Notizen stehen ("Blacky +
Kruke") — jetzt wortgenau ersetzt, mit vier Guards gegen Kollateralschaden.
- Neuer Resolution-Schlüssel goHomeDate (autoritativ, zieht GivenAway nach) und
spottingType; Gencode-Overrides gewinnen jetzt bei präzisem Match (vorher
wurden Entscheidungen stumm verschluckt, z. B. Eliza und Chris).
- parse_date verwirft implausible Jahre (JackJack hatte 1310-05-13).
- extract.py erkennt Stammbaum-Blöcke auch ohne Stern vor dem Geburtsdatum
(Bijou bekam dadurch den Nachbar-Ast als Mutter).
- Backend-Ingest überträgt SpottingType (nur bei Payload-Wert).
Daten (conflict-decisions.json, re-ingest-stabil): Kuke-Merge + Zuchtname,
Jamie- und Sakura-Dubletten, Phantom-Tier "Unbekannt", Eltern von Kathlin,
Fast Boy/Ziwa und dem Q4-/TS-Wurf, Eliza-Gencode, Merle-Abgabe, JackJack.
Frontend (24522f5f): Abgabedatum steht in der Tier-Akte jetzt direkt unter dem
Abnehmer und hängt nicht mehr am Status.
Tests: +25 Checks test_merge_resolve, +7 test_genotype, +8 genetics.test.ts,
neuer Extract- und Ingest-Test, e2e GOHOME-ROW. Alles grün.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
427 lines
10 KiB
JSON
427 lines
10 KiB
JSON
[
|
|
{
|
|
"name": "REW",
|
|
"english": "Pink Eyed White",
|
|
"canonicalGenotype": "AA c[h]c[h] DD EE GG pp spsp",
|
|
"sortOrder": 0,
|
|
"image": "rotaugen-weiss-pew-d-sep-e-sep.jpg"
|
|
},
|
|
{
|
|
"name": "Hermelin",
|
|
"english": "Dark Tailed White",
|
|
"canonicalGenotype": "aa c[h]c[h] DD EE GG PP spsp",
|
|
"sortOrder": 1,
|
|
"image": "hermelin.jpeg"
|
|
},
|
|
{
|
|
"name": "Himalaya",
|
|
"english": "Himalayan",
|
|
"canonicalGenotype": "AA c[h]c[h] DD EE GG PP spsp",
|
|
"sortOrder": 2,
|
|
"image": "himalaya.jpg"
|
|
},
|
|
{
|
|
"name": "Zobel",
|
|
"english": "Sable",
|
|
"canonicalGenotype": "aa c[chm]c[chm] DD EE gg PP spsp",
|
|
"sortOrder": 3,
|
|
"image": "zobel.jpeg"
|
|
},
|
|
{
|
|
"name": "Rotaugenschimmel",
|
|
"english": "Red-Eyed Roan",
|
|
"canonicalGenotype": "AA CC DD e[f]e[f] GG pp spsp",
|
|
"sortOrder": 4,
|
|
"image": "rotaugen-schimmel.jpg"
|
|
},
|
|
{
|
|
"name": "Agouti",
|
|
"english": "Golden Agouti",
|
|
"canonicalGenotype": "AA CC DD EE GG PP spsp",
|
|
"sortOrder": 5,
|
|
"image": "agouti-mit-erklaerung-der-genloci.JPG"
|
|
},
|
|
{
|
|
"name": "Schwarz",
|
|
"english": "Black",
|
|
"canonicalGenotype": "aa CC DD EE GG PP spsp",
|
|
"sortOrder": 6,
|
|
"image": "schwarz.jpg"
|
|
},
|
|
{
|
|
"name": "Silberagouti",
|
|
"english": "Grey Agouti",
|
|
"canonicalGenotype": "AA CC DD EE gg PP spsp",
|
|
"sortOrder": 7,
|
|
"image": "silberagouti.jpg"
|
|
},
|
|
{
|
|
"name": "Anthrazit",
|
|
"english": "Slate",
|
|
"canonicalGenotype": "aa CC DD EE gg PP spsp",
|
|
"sortOrder": 8,
|
|
"image": "anthrazit.jpg"
|
|
},
|
|
{
|
|
"name": "Algierfuchs",
|
|
"english": "Dark-Eyed Honey",
|
|
"canonicalGenotype": "AA CC DD ee GG PP spsp",
|
|
"sortOrder": 9,
|
|
"image": "algierfuchs.jpg"
|
|
},
|
|
{
|
|
"name": "Blau",
|
|
"english": "Blue",
|
|
"canonicalGenotype": "aa CC dd EE GG PP spsp",
|
|
"sortOrder": 10,
|
|
"image": "blau-schwarz-dd.JPG"
|
|
},
|
|
{
|
|
"name": "Gold",
|
|
"english": "Argente Golden",
|
|
"canonicalGenotype": "AA CC DD EE GG pp spsp",
|
|
"sortOrder": 11,
|
|
"image": "gold.jpg"
|
|
},
|
|
{
|
|
"name": "Platin",
|
|
"english": "Lilac",
|
|
"canonicalGenotype": "aa CC DD EE GG pp spsp",
|
|
"sortOrder": 12,
|
|
"image": "platin.JPG"
|
|
},
|
|
{
|
|
"name": "Goldfuchs",
|
|
"english": "Yellow Fox",
|
|
"canonicalGenotype": "AA CC DD ee GG pp spsp",
|
|
"sortOrder": 13,
|
|
"image": "goldfuchs.jpg"
|
|
},
|
|
{
|
|
"name": "Rotfuchs",
|
|
"english": "Argente Nutmeg",
|
|
"canonicalGenotype": "aa CC DD ee GG pp spsp",
|
|
"sortOrder": 14,
|
|
"image": "rotfuchs.JPG"
|
|
},
|
|
{
|
|
"name": "Dilute Gold",
|
|
"english": "dd Argente Golden",
|
|
"canonicalGenotype": "AA CC dd EE GG pp spsp",
|
|
"sortOrder": 15,
|
|
"image": "gold-dd.jpg"
|
|
},
|
|
{
|
|
"name": "Dilute Platin",
|
|
"english": "dd Lilac",
|
|
"canonicalGenotype": "aa CC dd EE GG pp spsp",
|
|
"sortOrder": 16,
|
|
"image": "platin-dd.jpg"
|
|
},
|
|
{
|
|
"name": "Altweiss (REW)",
|
|
"canonicalGenotype": "aa CC DD EE gg pp spsp",
|
|
"sortOrder": 17,
|
|
"image": "altweiss-rew.jpeg"
|
|
},
|
|
{
|
|
"name": "Apricot (Blassfuchs)",
|
|
"canonicalGenotype": "AA CC DD ee gg pp spsp",
|
|
"sortOrder": 18,
|
|
"image": "apricot-blassfuchs.jpg"
|
|
},
|
|
{
|
|
"name": "Blaufuchs",
|
|
"canonicalGenotype": "aa CC DD ee gg PP spsp",
|
|
"sortOrder": 19,
|
|
"image": "blaufuchs.jpg"
|
|
},
|
|
{
|
|
"name": "C-Separator",
|
|
"canonicalGenotype": "aa CC DD ee gg pp spsp",
|
|
"sortOrder": 20,
|
|
"image": "c-separator.jpg"
|
|
},
|
|
{
|
|
"name": "Elfenbein",
|
|
"canonicalGenotype": "AA CC DD EE gg pp spsp",
|
|
"sortOrder": 21,
|
|
"image": "elfenbein.jpg"
|
|
},
|
|
{
|
|
"name": "Kohlfuchs",
|
|
"canonicalGenotype": "aa CC DD ee GG PP spsp",
|
|
"sortOrder": 22,
|
|
"image": "kohlfuchs.jpg"
|
|
},
|
|
{
|
|
"name": "Polarfuchs",
|
|
"canonicalGenotype": "AA CC DD ee gg PP spsp",
|
|
"sortOrder": 23,
|
|
"image": "polarfuchs.jpg"
|
|
},
|
|
{
|
|
"name": "Saphir",
|
|
"canonicalGenotype": "aa Cc[chm] DD EE GG pp spsp",
|
|
"sortOrder": 24,
|
|
"image": "saphir.jpg"
|
|
},
|
|
{
|
|
"name": "Orangeschimmel",
|
|
"canonicalGenotype": "AA CC DD e[f]e[f] GG PP spsp",
|
|
"sortOrder": 25,
|
|
"image": "schimmel-orangeschimmel.jpg"
|
|
},
|
|
{
|
|
"name": "Topas",
|
|
"canonicalGenotype": "AA CC DD EE GG pp spsp",
|
|
"sortOrder": 26,
|
|
"image": "topas.jpg"
|
|
},
|
|
{
|
|
"name": "Platin-Hell",
|
|
"canonicalGenotype": "aa Cc[h] DD EE GG pp spsp",
|
|
"sortOrder": 27,
|
|
"image": "platin-hell.jpg"
|
|
},
|
|
{
|
|
"name": "Dilute Agouti",
|
|
"canonicalGenotype": "AA CC dd EE GG PP spsp",
|
|
"sortOrder": 28,
|
|
"image": "agouti-dd.jpg"
|
|
},
|
|
{
|
|
"name": "Dilute Silberagouti",
|
|
"canonicalGenotype": "AA CC dd EE gg PP spsp",
|
|
"sortOrder": 29,
|
|
"image": "silberagouti-dd.jpg"
|
|
},
|
|
{
|
|
"name": "Dilute Kohlfuchs",
|
|
"canonicalGenotype": "aa CC dd ee GG PP spsp",
|
|
"sortOrder": 30,
|
|
"image": "kohlfuchs-dd.jpg"
|
|
},
|
|
{
|
|
"name": "Dilute Anthrazit",
|
|
"canonicalGenotype": "aa CC dd EE gg PP spsp",
|
|
"sortOrder": 31,
|
|
"image": "anthrazit-dd.jpg"
|
|
},
|
|
{
|
|
"name": "Dilute Algierfuchs",
|
|
"canonicalGenotype": "AA CC dd ee GG PP spsp",
|
|
"sortOrder": 32
|
|
},
|
|
{
|
|
"name": "Dilute Goldfuchs",
|
|
"canonicalGenotype": "AA CC dd ee GG pp spsp",
|
|
"sortOrder": 33
|
|
},
|
|
{
|
|
"name": "Dilute Rotfuchs",
|
|
"canonicalGenotype": "aa CC dd ee GG pp spsp",
|
|
"sortOrder": 34
|
|
},
|
|
{
|
|
"name": "Dilute Polarfuchs",
|
|
"canonicalGenotype": "AA CC dd ee gg PP spsp",
|
|
"sortOrder": 35
|
|
},
|
|
{
|
|
"name": "Silberschimmel",
|
|
"canonicalGenotype": "AA CC DD e[f]e[f] gg PP spsp",
|
|
"sortOrder": 36,
|
|
"image": "silberschimmel.jpg"
|
|
},
|
|
{
|
|
"name": "Polarfuchsschimmel",
|
|
"canonicalGenotype": "AA CC DD ee[f] gg PP spsp",
|
|
"sortOrder": 37,
|
|
"image": "polarfuchsschimmel.jpg"
|
|
},
|
|
{
|
|
"name": "Algierfuchsschimmel",
|
|
"canonicalGenotype": "AA CC DD ee[f] GG PP spsp",
|
|
"sortOrder": 38,
|
|
"image": "algierfuchsschimmel.jpg"
|
|
},
|
|
{
|
|
"name": "Kohlfuchsschimmel",
|
|
"canonicalGenotype": "aa CC DD ee[f] GG PP spsp",
|
|
"sortOrder": 39,
|
|
"image": "kohlfuchsschimmel.jpg"
|
|
},
|
|
{
|
|
"name": "Blaufuchsschimmel",
|
|
"canonicalGenotype": "aa CC DD ee[f] gg PP spsp",
|
|
"sortOrder": 40,
|
|
"image": "blaufuchsschimmel.jpg"
|
|
},
|
|
{
|
|
"name": "Kohlfuchs, hell",
|
|
"canonicalGenotype": "aa CC DD ee GG PP spsp",
|
|
"sortOrder": 41,
|
|
"image": "kohlfuchs-hell.jpg"
|
|
},
|
|
{
|
|
"name": "Goldfuchs, hell",
|
|
"canonicalGenotype": "AA CC DD ee GG pp spsp",
|
|
"sortOrder": 42,
|
|
"image": "goldfuchs-hell.jpg"
|
|
},
|
|
{
|
|
"name": "Goldfuchsschimmel",
|
|
"canonicalGenotype": "AA CC DD ee[f] GG pp spsp",
|
|
"sortOrder": 43,
|
|
"image": "goldfuchsschimmel.jpg"
|
|
},
|
|
{
|
|
"name": "Gold-Hell",
|
|
"canonicalGenotype": "AA CC DD EE GG pp spsp",
|
|
"sortOrder": 44,
|
|
"image": "gold-hell.jpg"
|
|
},
|
|
{
|
|
"name": "Blaufuchs, hell",
|
|
"canonicalGenotype": "aa CC DD ee gg PP spsp",
|
|
"sortOrder": 45,
|
|
"image": "blaufuchs-hell.jpeg"
|
|
},
|
|
{
|
|
"name": "Rotfuchsschimmel",
|
|
"canonicalGenotype": "aa CC DD ee[f] GG pp spsp",
|
|
"sortOrder": 46,
|
|
"image": "rotfuchsschimmel.jpg"
|
|
},
|
|
{
|
|
"name": "Polarfuchs, hell",
|
|
"canonicalGenotype": "AA CC DD ee gg PP spsp",
|
|
"sortOrder": 47,
|
|
"image": "polarfuchs-hell.jpeg"
|
|
},
|
|
{
|
|
"name": "Kohlfuchsschimmel, hell",
|
|
"canonicalGenotype": "aa CC DD ee[f] GG PP spsp",
|
|
"sortOrder": 48,
|
|
"image": "kohlfuchsschimmel-hell.jpg"
|
|
},
|
|
{
|
|
"name": "Rotfuchs, hell",
|
|
"canonicalGenotype": "aa CC DD ee GG pp spsp",
|
|
"sortOrder": 49,
|
|
"image": "rotfuchs-hell.jpg"
|
|
},
|
|
{
|
|
"name": "Kohlfuchs-Hell",
|
|
"canonicalGenotype": "aa CC DD ee GG PP spsp",
|
|
"sortOrder": 50,
|
|
"image": "kohlfuchs-hell-2.jpg"
|
|
},
|
|
{
|
|
"name": "Algierfuchs, hell",
|
|
"canonicalGenotype": "AA CC DD ee GG PP spsp",
|
|
"sortOrder": 51,
|
|
"image": "algierfuchs-hell.JPG"
|
|
},
|
|
{
|
|
"name": "Dilute Topas",
|
|
"canonicalGenotype": "AA CC dd EE GG pp spsp",
|
|
"sortOrder": 52,
|
|
"image": "topas-dd.jpg"
|
|
},
|
|
{
|
|
"name": "Dilute Blaufuchs",
|
|
"canonicalGenotype": "aa CC dd ee gg PP spsp",
|
|
"sortOrder": 53,
|
|
"image": "blaufuchs-dd.jpg"
|
|
},
|
|
{
|
|
"name": "Marder",
|
|
"canonicalGenotype": "aa c[chm]c[chm] DD EE GG PP spsp",
|
|
"sortOrder": 54,
|
|
"image": "marder.JPG"
|
|
},
|
|
{
|
|
"name": "Siam",
|
|
"canonicalGenotype": "aa c[chm]c[h] DD EE GG PP spsp",
|
|
"sortOrder": 55,
|
|
"image": "siam-marder-hell.JPG"
|
|
},
|
|
{
|
|
"name": "Zobel-Hell",
|
|
"canonicalGenotype": "aa c[chm]c[h] DD EE gg PP spsp",
|
|
"sortOrder": 56,
|
|
"image": "zobel-hell.jpg"
|
|
},
|
|
{
|
|
"name": "CP-Agouti",
|
|
"canonicalGenotype": "AA c[chm]c[chm] DD EE GG PP spsp",
|
|
"sortOrder": 57,
|
|
"image": "agouti-cp.jpg"
|
|
},
|
|
{
|
|
"name": "CP-Agouti-Hell",
|
|
"canonicalGenotype": "AA c[chm]c[h] DD EE GG PP spsp",
|
|
"sortOrder": 58
|
|
},
|
|
{
|
|
"name": "CP-Silberagouti",
|
|
"canonicalGenotype": "AA c[chm]c[chm] DD EE gg PP spsp",
|
|
"sortOrder": 59,
|
|
"image": "silberagouti-cp.JPG"
|
|
},
|
|
{
|
|
"name": "CP-Silberagouti-Hell",
|
|
"canonicalGenotype": "AA c[chm]c[h] DD EE gg PP spsp",
|
|
"sortOrder": 60
|
|
},
|
|
{
|
|
"name": "CP-Algierfuchs",
|
|
"canonicalGenotype": "AA c[chm]c[chm] DD ee GG PP spsp",
|
|
"sortOrder": 61,
|
|
"image": "algierfuchs-cp.jpg"
|
|
},
|
|
{
|
|
"name": "CP-Algierfuchs-Hell",
|
|
"canonicalGenotype": "AA c[chm]c[h] DD ee GG PP spsp",
|
|
"sortOrder": 62
|
|
},
|
|
{
|
|
"name": "CP-Polarfuchs",
|
|
"canonicalGenotype": "AA c[chm]c[chm] DD ee gg PP spsp",
|
|
"sortOrder": 63,
|
|
"image": "polarfuchs-cp.jpg"
|
|
},
|
|
{
|
|
"name": "CP-Polarfuchs-Hell",
|
|
"canonicalGenotype": "AA c[chm]c[h] DD ee gg PP spsp",
|
|
"sortOrder": 64
|
|
},
|
|
{
|
|
"name": "CP-Fuchs",
|
|
"canonicalGenotype": "AA c[chm]c[chm] dd ee GG PP spsp",
|
|
"sortOrder": 65
|
|
},
|
|
{
|
|
"name": "CP-Fuchs-Hell",
|
|
"canonicalGenotype": "AA c[chm]c[h] dd ee GG PP spsp",
|
|
"sortOrder": 66
|
|
},
|
|
{
|
|
"name": "CP-Blaufuchs",
|
|
"canonicalGenotype": "AA c[chm]c[chm] dd ee gg PP spsp",
|
|
"sortOrder": 67
|
|
},
|
|
{
|
|
"name": "CP-Orangeschimmel",
|
|
"canonicalGenotype": "AA c[chm]c[chm] DD e[f]e[f] GG PP spsp",
|
|
"sortOrder": 68
|
|
},
|
|
{
|
|
"name": "CP-Orangeschimmel-Hell",
|
|
"canonicalGenotype": "AA c[chm]c[h] DD e[f]e[f] GG PP spsp",
|
|
"sortOrder": 69
|
|
}
|
|
]
|