feat(import): resolve color variety ID mappings mismatch, support unnamed parents in virtual litters, and implement SaleContract updates

This commit is contained in:
2026-06-21 21:57:40 +02:00
parent b83e96f552
commit e460cd5905
29 changed files with 3783 additions and 67 deletions

View File

@@ -337,6 +337,65 @@ check("KC-matcher: norm_zucht regression — 'von den Kleinen Chaoten'",
check("KC-matcher: norm_zucht('v.d. Kleinen Chaoten') == 'kleinechaote' (was broken before fix)",
e.norm_zucht("v.d. Kleinen Chaoten") == "kleinechaote")
# --- Stammbaum von Danako validation ---
danako_path = r"C:\Users\gulum\dev\Wurfchronik_Bilder\Stammbaum von Danako.xlsx"
if not os.path.exists(danako_path):
danako_path = r"C:\Users\gulum\dev\Sttammbäume\Stammbaum von Danako.xlsx"
if os.path.exists(danako_path):
print(f"\nFound Danako stammbaum at {danako_path}, running integration validation...")
danako_animals = e.extract_stammbaum(danako_path)
danako_by_name = {a["name"]: a for a in danako_animals}
check("Danako present in Danako sheet", "Danako" in danako_by_name)
if "Danako" in danako_by_name:
d = danako_by_name["Danako"]
check("Danako DOB is 22.08.2018", d["dob"] == "22.08.2018")
check("Danako photo matches image7.png", d["photos"] == ["photos/danako-22082018/image7.png"])
check("Osamu present in Danako sheet", "Osamu" in danako_by_name)
if "Osamu" in danako_by_name:
o = danako_by_name["Osamu"]
check("Osamu DOB is 10.12.2015", o["dob"] == "10.12.2015")
check("Osamu photo matches image4.jpeg", o["photos"] == ["photos/osamu-10122015/image4.jpeg"])
# Check parentRefs of Osamu in Danako sheet
o_parents = o.get("parentRefs", [])
o_father = next((p for p in o_parents if p.get("roleGuess") == "father"), None)
o_mother = next((p for p in o_parents if p.get("roleGuess") == "mother"), None)
check("Osamu father is Porter", o_father is not None and o_father["name"] == "Porter")
check("Osamu mother is Yuka", o_mother is not None and o_mother["name"] == "Yuka")
if o_father:
check("Osamu father DOB is 23.05.2015", o_father["dob"] == "23.05.2015")
if o_mother:
check("Osamu mother DOB is 12.07.2015", o_mother["dob"] == "12.07.2015")
check("Porter present in Danako sheet", "Porter" in danako_by_name)
if "Porter" in danako_by_name:
p = danako_by_name["Porter"]
check("Porter DOB is 23.05.2015", p["dob"] == "23.05.2015")
check("Porter photo matches image6.jpeg", p["photos"] == ["photos/porter-23052015/image6.jpeg"])
check("Yuka present in Danako sheet", "Yuka" in danako_by_name)
if "Yuka" in danako_by_name:
y = danako_by_name["Yuka"]
check("Yuka DOB is 12.07.2015", y["dob"] == "12.07.2015")
check("Yuka photo matches image5.jpeg", y["photos"] == ["photos/yuka-12072015/image5.jpeg"])
check("Eddward present in Danako sheet", "Eddward" in danako_by_name)
if "Eddward" in danako_by_name:
ed = danako_by_name["Eddward"]
check("Eddward DOB is 18.11.2015", ed["dob"] == "18.11.2015")
check("Eddward photo matches image1.jpeg", ed["photos"] == ["photos/eddward-18112015/image1.jpeg"])
check("Harumi present in Danako sheet", "Harumi" in danako_by_name)
if "Harumi" in danako_by_name:
h = danako_by_name["Harumi"]
check("Harumi DOB is 21.02.2015", h["dob"] == "21.02.2015")
check("Harumi photo matches image2.jpeg", h["photos"] == ["photos/harumi-21022015/image2.jpeg"])
else:
print("\nWarning: Danako stammbaum file not found, skipping integration checks.")
if failed:
print(f"\n{failed} test(s) FAILED")
sys.exit(1)