fix(import): Eltern-Ref-Auswahl geschlechts-bewusst machen (Regression behoben)
Die in 03ad9e6 eingeführte DOB-Bevorzugung war zu grob: ein datierter, aber
geschlechts-falscher Ref (z. B. weibliche „Danielle") gewann den Vater-Slot
gegen einen undatieren männlichen/unbekannten (z. B. „Hagrid Rubeus") — wodurch
Mollys korrekte Mutter Arya Stark in der Rollen-Normalisierung verloren ging.
pick_parent_ref wertet jetzt zuerst das (aus den Tierdaten ermittelte) Geschlecht
für die Rolle: ein klar falsches Geschlecht wird stark abgewertet, erst danach
zählt plausibles DOB > kein DOB > unplausibles DOB. Fixt Molly (Hagrid × Arya)
UND behält Solice (Lui × Molly = Geschwister von Silvain). Keine Abdeckungs-
Regression (0 Selbst-Verpaarungen / 0 Gender-Fehler / 0 Alter-Verletzungen).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -191,6 +191,27 @@ check("pick: no ref for role → None",
|
||||
check("pick: single ref is returned",
|
||||
m.pick_parent_ref([pref("Solo", "father")], "father", "2022-03-27")["name"] == "Solo")
|
||||
|
||||
# Gender-aware: a dated FEMALE ref must not win the father slot over an undated
|
||||
# male/unknown one (Molly regression: Hagrid (unknown, no DOB) vs Danielle
|
||||
# (female, dated) → father must be Hagrid, not Danielle).
|
||||
molly_refs = [
|
||||
pref("Hagrid Rubeus of Black Forest", "father"),
|
||||
pref("Arya Stark von den Kleinen Chaoten", "mother", "30.06.2020"),
|
||||
pref("Danielle von den Kleinen Chaoten", "father", "04.03.2020"),
|
||||
pref("Hagrid Rubeus of Black Forest", "mother", "18.07.2019"),
|
||||
]
|
||||
gender = {
|
||||
m.normalize_name("Hagrid Rubeus of Black Forest"): None, # unknown
|
||||
m.normalize_name("Danielle von den Kleinen Chaoten"): "female",
|
||||
m.normalize_name("Arya Stark von den Kleinen Chaoten"): "female",
|
||||
}
|
||||
gof = lambda name: gender.get(m.normalize_name(name))
|
||||
fr = m.pick_parent_ref(molly_refs, "father", "13.09.2021", gender_of=gof)
|
||||
check("pick(gender): father = unknown-sex Hagrid, not dated female Danielle",
|
||||
fr and fr["name"] == "Hagrid Rubeus of Black Forest")
|
||||
mr = m.pick_parent_ref(molly_refs, "mother", "13.09.2021", avoid_name=fr["name"], gender_of=gof)
|
||||
check("pick(gender): mother = Arya (female)", mr and mr["name"].startswith("Arya"))
|
||||
|
||||
|
||||
if check.failed:
|
||||
print(f"\n{check.failed} test(s) FAILED")
|
||||
|
||||
Reference in New Issue
Block a user