feat(triage): Ticket-Fixes (Daten + Code) + prod-fähige Triage
Daten-Fixes (conflict-decisions.json, re-ingest-stabil) für ~30 Tickets:
Merges (Jamie/Hiro/Mino/Jana/Blacky/Sakura/Malou/Socke→Marty), Eltern-Korrekturen
(Jacky/Idefix/Ichika/Roni/Ethan), Kruke→Kuke (+ Todesdatum), Targa-Wurf R14 + Druna,
Stacy/Merle/Domi/Eliza; Joghurt-Phantomwurf entfernt.
Code-Fixes:
- Gaida & alle Verstorbenen: Status wird aus Todesdatum/Abgabe abgeleitet
(Program.cs Startup-Sweep heilt Altfälle; IngestResolved re-derived nach Freeze).
- CoCo: Scheckungsart wird bei jeder Schecke angezeigt (Platzhalter wenn leer).
- M-Wurf/Gale: über-gemergte Fremdtiere via neuem litterChildren-Override entfernt.
- renameTo eltern-verknüpfungssicher (Quell-Name im Index); dateOfDeath als Override.
Prod-fähige Triage (API):
- GET /feedback/{id} + GET /feedback?status= (kein 2-MB-Dump).
- POST /import/ingest-resolved/upload (multipart) → Ingest gegen Prod ohne SSH.
Tests: 280 Backend, 149 Frontend, alle Python, betroffene Playwright grün.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -596,6 +596,23 @@ if _os.path.exists(_resolved):
|
||||
_check_parents("#9 Beatrice", "Beatrice von den kleinen", "Dante", "Malina")
|
||||
_check_parents("#30 Theodore", "Theodore von den Kleinen", "BlackFire", "Katara")
|
||||
|
||||
# ── litterChildren: over-merged foreign animals removed from datierten Würfen ──
|
||||
def _kids(lit_id):
|
||||
return sorted(_G[k]["Name"] for k in _G if _G[k].get("LitterId") == lit_id)
|
||||
_mw = next((l for l in _d["litters"]
|
||||
if (l.get("Date") or "").startswith("2011-03-03") and "Cotton" in _kids(l["Id"])), None)
|
||||
check("4b9f49fb M-Wurf: renamed from 'Ungeklärt' to 'M-Wurf'",
|
||||
_mw is not None and _mw.get("Name") == "M-Wurf")
|
||||
if _mw:
|
||||
check("4b9f49fb M-Wurf: exactly the 5 correct kids",
|
||||
_kids(_mw["Id"]) == ["Cotton", "Kiwi", "Mayu", "Mio", "Mo"])
|
||||
_gw = next((l for l in _d["litters"]
|
||||
if (l.get("Date") or "").startswith("2014-06-21") and "Kai-Uwe" in _kids(l["Id"])), None)
|
||||
check("8d259edf Gale-Wurf: no wrongly-attached 'Unbekannt' kids remain",
|
||||
_gw is not None and "Unbekannt" not in _kids(_gw["Id"]))
|
||||
if _gw:
|
||||
check("8d259edf Gale-Wurf: 3 surviving named juveniles", len(_kids(_gw["Id"])) == 3)
|
||||
|
||||
# ── New ticket-triage fixes (non-genetics import cluster) ─────────────────
|
||||
# Akane: Roni is the FATHER (gender flipped male), mother = Fumi (stub).
|
||||
_check_parents("Akane (wrong-parents)", "Akane", "Roni", "Fumi")
|
||||
@@ -729,7 +746,8 @@ if _os.path.exists(_resolved):
|
||||
check("E-Wurf 2010: present", _el is not None)
|
||||
if _el:
|
||||
check("E-Wurf 2010: father is Blacky", _el.get("FatherId") is not None and _G[_el["FatherId"]]["Name"].startswith("Blacky"))
|
||||
check("E-Wurf 2010: mother is Kruke", _el.get("MotherId") is not None and _G[_el["MotherId"]]["Name"] == "Kruke")
|
||||
# Ticket e0a0c304: 'Kruke' war ein Tippfehler → korrekt 'Kuke'.
|
||||
check("E-Wurf 2010: mother is Kuke", _el.get("MotherId") is not None and _G[_el["MotherId"]]["Name"] == "Kuke")
|
||||
check("Eliza: shares same litter with Eddy", _eliza.get("LitterId") == _eddy.get("LitterId"))
|
||||
|
||||
# Zeus + Beatrice vs Eddy + Sheila same-date litters (2012-06-13)
|
||||
|
||||
Reference in New Issue
Block a user