# RennmausPro III — Feature-Gap-Analyse vs. GerbilManager

> Read-only-Untersuchung. Quelle: RPRO3-Backup `_rpro3.db` (SQLite, 43 Tabellen) vs.
> GerbilManager-IST (laufende API-Routen, `Models/`, `Endpoints/`, `src/pages/`).
> **Schreibt nichts in die DB** — reine Analyse. Datumsfelder in RPRO3 = Julianische Tageszahlen.

## Management-Summary — die wichtigsten Lücken

- **Verpaarungs-/Deck-Management (`zucht_tb`, 148 Zeilen)** fehlt komplett. RPRO3 dokumentiert je
  Verpaarung Zusammensetzen → Decken → Trennen + Notiz und verknüpft sie mit dem entstandenen Wurf.
  Das ist die zentrale aktive Zuchtarbeit, die wir gar nicht abbilden — **Top-Priorität**.
- **Welpen-Wiegekurven (`jungwaage_tb`, 1022 Zeilen!)** sind der mit Abstand am intensivsten genutzte
  Datenbestand. Wir haben Gewicht je adultem Tier (`waage_tb`-Äquivalent), aber **keine wurfweisen
  Welpen-Wiegekurven**. Größter Daten-Hebel, mittlerer Aufwand.
- **Krankheits-/Behandlungs-Historie ist bei uns generisch, RPRO3 deutlich reicher**: `krank_tb`
  (Diagnose + Medikament je Termin), `dauerkrank_tb` (Dauermedikation mit Dosierung), `tod_tb`
  (Todesursache strukturiert, 51 Zeilen), plus Tierarzt-Stammdaten (`arzt_tb`) und ein
  Medikamenten-/Behandlungs-Nachschlagewerk (`notiz_tb`).
- **Gehege-Reinigungszyklus (`becken_tb` `_CLEANED/_CYCLUS/_NEXT`)** und **Tagebuch je Tier
  (`diary_tb`)** fehlen — kleine Features mit hohem Alltagsnutzen (Quick Wins).
- **Erwerb/Preis je Tier (`herktier_tb`, 251 Zeilen)** und **Abgabe-/Reservierungs-Status
  (`abgeben_tb`/`abstat_tb`/`getback_tb`)** sind in RPRO3 strukturiert; bei uns nur teilweise über
  Verträge/Kontakte abgedeckt. **Rücknahmen** (`getback_tb`, Tier kommt zurück) fehlen ganz.
- **Vorhanden, aber von dieser Züchterin ungenutzt** (in RPRO3 leer): Finanzen
  (`einnahme_/ausgabe_/artikel_/bestand_tb`), Ausstellungen/Auszeichnungen (`ausz_tb`),
  Termin-Kalender (`termin_tb`). Niedrige Priorität — keine Migrationsdaten, kein belegter Bedarf.

---

## Feature-Gap-Tabelle (sortiert: Quick Wins / hoher Nutzen zuerst)

| # | Feature (RPRO3) | Was RPRO3 macht | Status bei uns | RPRO3-Tabelle(n) (Zeilen) | Nutzen | Aufwand | Empfehlung |
|---|---|---|---|---|---|---|---|
| 1 | **Welpen-Wiegekurven** | Gewichtsverlauf je **Welpe im Wurf**, viele Messpunkte über die Aufzucht | **Teilweise** — wir haben `WeightRecord` je Tier, aber keine wurfweise Welpen-Wiegung/-Kurve vor der Vergabe | `jungwaage_tb` (1022), `juwa_tb` (129, Sammeldaten) | Hoch — meistgenutzter Datentyp, Aufzuchtkontrolle | M | **Hoch** — WeightRecord auf Welpen/Litter erweitern + Kurven-Ansicht im Wurf |
| 2 | **Verpaarungs-/Deck-Management** | Je Verpaarung: Zusammensetzen (`_ZUS`), Decken (`_DECK`), Trennen (`_TRENN`), Notiz (`_BEM`), Verknüpfung zum Wurf (`_WID`) | **Fehlt** — wir haben nur den fertigen Wurf, nicht den Paarungsprozess | `zucht_tb` (148) | Hoch — Kern der aktiven Zuchtarbeit, Planung & Nachverfolgung | M–L | **Hoch** — neue Entity „Verpaarung/Pairing" mit Status-Zeitachse, an Litter gekoppelt |
| 3 | **Gehege-Reinigungszyklus** | Becken hat Reinigungsintervall (`_CYCLUS` Tage), letzte Reinigung (`_CLEANED`), nächste fällige (`_NEXT`) → Erinnerung; dazu Maße (`_SIZE`) + Kapazität (`_MENGE`) | **Teilweise** — `Enclosure` hat nur Name + Notes | `becken_tb` (6) | Hoch — konkreter Alltagsnutzen, wenig Daten | S | **Quick Win** — Felder Größe/Kapazität/Reinigungszyklus + „nächste Reinigung"-Hinweis auf Becken |
| 4 | **Tagebuch je Tier** | Datierte Freitext-Einträge je Tier (Verpaarungen, Beobachtungen, Vorfälle) | **Fehlt** — Gerbil hat nur ein `Notes`-Freitextfeld (kein datierter Verlauf) | `diary_tb` (14) | Hoch — laufende Beobachtungsdoku, ergänzt Provenance/Gesundheit | S | **Quick Win** — datierte Diary-Einträge je Gerbil (loses nullable GerbilId, wie Feedback) |
| 5 | **Todesursache strukturiert** | Eigene Tabelle: Todesdatum (`_AM`) + Ursache (`_WARUM`) je Tier | **Teilweise** — `Gerbil.DateOfDeath` + `CauseOfDeath` als Freitext vorhanden | `tod_tb` (51) | Mittel — schon weitgehend abgedeckt; ggf. Statistik nach Ursache | S | **Niedrig/Teilweise** — Felder existieren; optional Ursachen-Statistik |
| 6 | **Erwerb/Kauf je Tier** | Kaufdatum (`_DATE`) + Preis (`_PRICE`) + Notiz je zugekauftem Tier | **Fehlt** — Herkunft (Kontakt/Breeder) ja, aber kein Erwerbsdatum/-preis | `herktier_tb` (251) | Mittel — Anschaffungskosten, Belege | S | **Quick Win** — Felder PurchaseDate/PurchasePrice auf Gerbil |
| 7 | **Krankheits-Historie (reich)** | Je Eintrag: Datum, Diagnose (`_BEM`), Medikament+Kosten (`_MED`), Tierarzt-Ref (`_AZID`) | **Teilweise** — `HealthRecord` hat Date/Type/Description/Veterinarian, aber **kein Medikament/Dosis-Feld, kein Tierarzt als Stammdatensatz** | `krank_tb` (27) | Mittel-Hoch — vollständige Behandlungsdoku | M | **Mittel** — HealthRecord um Medikament/Kosten + Arzt-FK erweitern |
| 8 | **Dauermedikation** | Laufende Medikation mit Dosierung (`_DOS`, z. B. „1× täglich · 0,1 ml"), Dauer (`_DAUER`), Wirkstoff (`_ARZN`), Enddatum (`_END`) | **Fehlt** | `dauerkrank_tb` (27) | Mittel — chronisch kranke Tiere, Behandlungsplan | M | **Mittel** — eigener HealthRecord-Typ „Dauermedikation" mit Dosierung/Dauer |
| 9 | **Tierarzt-Stammdaten** | Adressbuch für Tierärzte (eigene Tabelle, Schema wie Kontakte) | **Fehlt** (Tabelle leer, aber Schema da; `krank_tb._AZID` referenziert) | `arzt_tb` (0, vorhanden-ungenutzt) | Mittel — referenzierbar in Gesundheitseinträgen | S | **Mittel** — Kontakt-Rolle „Tierarzt" wiederverwenden statt eigener Tabelle |
| 10 | **Abgabe-/Reservierungs-Status** | Reservierung je (Jung-)Tier (`abgeben_tb`: reserviert `_RES`, Termin, Abnehmer); Abgabe-Status mit Preis/Datum/Notiz (`abstat_tb`) | **Teilweise** — `GoHomeDate`, ReceiverContact, Verträge vorhanden; aber **kein expliziter Reservierungs-Workflow vor Abgabe** | `abgeben_tb` (21), `abstat_tb` (23) | Mittel-Hoch — Vergabe-Pipeline (reserviert→abgegeben) | M | **Mittel** — Status „reserviert" + Reservierungs-Felder, ggf. an Anfragen koppeln |
| 11 | **Rücknahmen** | Tier kommt zurück: Rückgabedatum (`_ZAM`), Rückgabepreis, ursprüngl. Abgabe, Abnehmer, Grund (`_BEM`) | **Fehlt** | `getback_tb` (17) | Mittel — Wiederaufnahme ins Bestand, Historie | S–M | **Mittel** — Rücknahme-Event je Gerbil (Datum, Grund, Abnehmer) |
| 12 | **Nachfrage/Warteliste** | Interessenten-Vormerkung: gewünschte Farbe/Geschlecht/Anzahl, Abnehmer, Datum, Status | **Teilweise** — Anfragen-Inbox (`/api/requests`) vorhanden, aber **keine strukturierte Warteliste nach Wunschkriterien** | `nachfrage_tb` (2) | Mittel — Matching Wurf ↔ Interessent | M | **Mittel** — Wunschkriterien an Anfragen/Kontakt, Match-Vorschlag bei neuem Wurf |
| 13 | **Medikamenten-/Behandlungs-Nachschlagewerk** | Notizbuch: Medikament + Anwendungsart (`_KAT`, z. B. „oral", „eintropfen") + datierte Notiz (HTML) | **Fehlt** | `notiz_tb` (13) | Niedrig-Mittel — Wissensspeicher | S | **Niedrig** — ggf. als statische Hilfeseite/Notizen |
| 14 | **Verpaarungs-Vorschau / Genotyp-Erwartung** | Hinterlegte Verpaarungs-Regel: erwartete Nachkommen-Farben aus Eltern-Genotyp (`zugru_tb`: Bezeichnung, erwartete Farben-Liste, Bemerkung) | **Teilweise** — wir haben Genetik-Seite + Inbreeding-Rechner + `test-inbreeding`; **erwartete Farbverteilung einer Verpaarung** nicht als gespeicherte Vorschau | `zugru_tb` (1) | Mittel — Zuchtplanung | M | **Mittel** — Punnett/Farb-Erwartung in Genetik-Seite zur Verpaarung anzeigen |
| 15 | **Ausstellungen/Auszeichnungen** | Je Tier: Veranstaltung, Datum, Ort, Platzierung, Auszeichnung, Juror | **Fehlt** | `ausz_tb` (0, vorhanden-ungenutzt) | Niedrig — von dieser Züchterin nicht genutzt | M | **Niedrig** — nur bei konkretem Bedarf |
| 16 | **Termin-/Kalender** | Termine mit Priorität, Kategorie, Datum/Zeit, Tier-Ref | **Fehlt** | `termin_tb` (0, vorhanden-ungenutzt) | Niedrig-Mittel — Würfe/Reinigung könnten Termine speisen | M | **Niedrig** — erst sinnvoll mit Verpaarung+Reinigung als Quelle |
| 17 | **Finanzen (Einnahmen/Ausgaben/Artikel/Bestand)** | Einnahmen, Ausgaben, Artikel-Katalog mit Nachbestell-/Mindestmenge, Lagerbestand | **Fehlt** | `einnahme_tb`/`ausgabe_tb`/`artikel_tb`/`bestand_tb` (alle 0, vorhanden-ungenutzt) | Niedrig — kein belegter Bedarf | L | **Niedrig** — bewusst nicht genutzt; nicht bauen |
| 18 | **Übersetzungs-/Lokalisierungstabelle** | RPRO3-interne Mehrsprachen-Strings | n/a — wir nutzen `strings/de.ts` | `trans_tb` (0) | — | — | **Nicht relevant** |
| 19 | **Favoriten-Farbschläge / Zuchtziel-Farben** | Markierte Wunsch-/Zielfarben (`fav_tb`, Schema wie `color_tb`) | **Fehlt** (ungenutzt) | `fav_tb` (0, vorhanden-ungenutzt) | Niedrig | S | **Niedrig** — optional Farbkatalog-Favoriten |

### Bereits abgedeckt (kein Gap)

| Bereich | RPRO3 | GerbilManager |
|---|---|---|
| Tiere (eigen/extern) | `stamm_tb` (303), `fremd_tb` (7427) | Gerbil + IsResident, `/gerbils` |
| Würfe | `wurf_tb` (127), `wurftier_tb` (562) | Litter, `/litters`, Wurf-Seiten |
| Stammbaum/Eltern | `baum_tb` (436) | Stammbaum-Viewer, Litter→Vater/Mutter |
| Genotyp/Farbschlag | `color_tb`/`wurfcolor_tb`/`fremdcolor_tb` | ColorVariety, Genotype-String, Farbkatalog, Genetik |
| Inzucht | (nicht explizit) | `/gerbils/{id}/inbreeding-coefficient`, `/genetics/test-inbreeding` — **wir können hier mehr** |
| Kontakte (Herkunft/Abnehmer) | `herk_tb` (645), `abn_tb` (105) | Contact, `/contacts` |
| Verträge | (RPRO3: nur `_VERTRAG`-Flag in `not_tb`) | SaleContract, Generator, PDF — **wir können hier mehr** |
| Fotos | `photo_tb` (111) | GerbilPhoto/EnclosurePhoto |
| Gewicht adult | `waage_tb` (229) | WeightRecord |
| Gehege (Grunddaten) | `becken_tb` | Enclosure (ohne Reinigungszyklus, s. #3) |
| Statistik | `prop_tb` (Wurf-Stats 2,1 etc.) | StatistikPage |
| Öffentliche Webseite/CMS | — (RPRO3 kann das nicht) | CMS, `/api/pages`, Publish — **wir können hier mehr** |
| Feedback/Tickets | — | Feedback, TicketsPage — **wir können hier mehr** |

---

## Anmerkungen zur Datendeutung

- `not_tb` (12) = **Notfall-/Pflegetiere** (Tiere nur vorübergehend in Obhut: `_NOTRUF`, `_BIS`,
  `_VERTRAG`, `_ZUBEHOER`). Grenzfall zu Abgabe; bei Bedarf als Gerbil-Status „Pflege/Notfall" abbildbar.
- `prop_tb` (136) = Wurfgrößen-Statistik je Wurf (z. B. „3 (2,1)" = 3 Welpen, 2♀/1♂). Statistik haben wir.
- `info_tb` (19) = App-Konfiguration (Default-Abnehmer/Arzt/Clan-Name) → bei uns BreederSettings.
- `juwa_tb` (129) vs. `jungwaage_tb` (1022): `juwa_tb` ist die ältere Sammel-/Aggregatform
  (Datums-Liste in einem Feld), `jungwaage_tb` die normalisierte Einzelmessung. Für #1 ist `jungwaage_tb` führend.
- `herk_tb` enthält **Züchter (Herkunft)**, `abn_tb` **Abnehmer** — bei uns ein vereinheitlichter Contact mit Rolle.

## Quick-Win-Empfehlung (Reihenfolge)

1. **Gehege-Reinigungszyklus** (#3, S) — wenig Daten, sofortiger Alltagsnutzen.
2. **Tagebuch je Tier** (#4, S) — Muster „loses nullable GerbilId" wie Feedback.
3. **Erwerb/Preis je Tier** (#6, S) — 2 Felder auf Gerbil + 251 importierbare Zeilen.
4. **Welpen-Wiegekurven** (#1, M) — größter Datenbestand (1022 Zeilen), hoher Nutzen.
5. **Verpaarungs-Management** (#2, M–L) — strategisch wichtigste Lücke.
