feat(import): isResident-Override + Vorfahren Bentley/Alexandria/Bugatti
- Neuer isResident-Override im Import (merge_and_resolve, NACH dem Dedup, damit die Zusammenführung ihn nicht überschreibt). Matcht über externalRef (präzise, auch für namenlose Tiere) oder normalize(call-name)+dob. Ein Nicht-Bestandstier verliert den eigenen Zucht-Breeder. - conflict-decisions.json: Bentley, Alexandria, Bugatti = nur Vorfahren (isResident=false), bestätigt von der Züchterin (Tickets 09bcac78 / 45cc501b). - Regressionstests ergänzt/aktualisiert (Bentley/Alexandria/Bugatti isResident; Danielle Vater Makoto; Catelyn Eddard×Milena; Gaida Zhuāngzǐ×Zaibunissa). Alle python test_*.py grün. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -559,17 +559,30 @@ if _os.path.exists(_resolved):
|
||||
# Sunny von PZ Karl: father corrected Hiro → Bill von Privat.
|
||||
_check_parents("Sunny (parents)", "Sunny von PZ Karl", "Bill von Privat", "Melly von Privat")
|
||||
|
||||
# Danielle: mother = Ella *10.06.2019 (the elder one), father unknown.
|
||||
# Danielle: mother = Ella *10.06.2019, father = Makoto (sibling pairing; Ticket 4692fd5c).
|
||||
_dan = _find("Danielle von den Kleinen")
|
||||
_df, _dm = _parents(_dan)
|
||||
check("Danielle: mother is Ella", (_dm or "") == "Ella")
|
||||
check("Danielle: father unknown (sibling pairing)", _df is None)
|
||||
check("Danielle: father is Makoto", (_df or "").startswith("Makoto"))
|
||||
if _dan and _dan.get("LitterId"):
|
||||
_dl = _L.get(_dan["LitterId"])
|
||||
_dmom = _G.get(_dl.get("MotherId")) if _dl else None
|
||||
check("Danielle: mother Ella is the *2019-06-10 one (not the *2023 Ella)",
|
||||
_dmom is not None and _dmom.get("DateOfBirth") == "2019-06-10")
|
||||
|
||||
# Catelyn (Ticket 7bbc045c): father Eddard Stark of Sunset Glow, mother Milena.
|
||||
_check_parents("Catelyn", "Catelyn Stark von den Kleinen", "Eddard Stark", "Milena")
|
||||
|
||||
# Gaida (Ticket ba63325a): Geschwisterverpaarung Zhuāngzǐ × Zaibunissa (beide *2020-02-21).
|
||||
_check_parents("Gaida", "Gaida von den Kleinen Chaoten", "Zhuāngzǐ", "Zaibunissa")
|
||||
|
||||
# Bentley / Alexandria / Bugatti (Ticket 09bcac78 / 45cc501b): nur Vorfahren → isResident False.
|
||||
for _tag, _ref in [("Bentley", "Wurfchronik Teil 1_page_0054.md-50505050-0003-4000-8000-000000000003"),
|
||||
("Alexandria", "Wurfchronik Teil 1_page_0054.md-50505050-0004-4000-8000-000000000004"),
|
||||
("Bugatti", "Wurfchronik Teil 1_page_0054.md-40404040-0003-4000-8000-000000000003")]:
|
||||
_g = next((g for g in _d["gerbils"] if g.get("ExternalRef") == _ref), None)
|
||||
check(f"{_tag}: isResident override == False", _g is not None and _g.get("IsResident") is False)
|
||||
|
||||
# Cherry Berry's Quqquluuruu: gender override female (box colour misread).
|
||||
_cherry = _find("Cherry Berry")
|
||||
check("Cherry Berry: gender override female",
|
||||
|
||||
Reference in New Issue
Block a user