# 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.