Files
GerbilManager/tools/import/rpro3-feature-gap.md
Gulum 4e30dc7fe3 feat(import): RennmausPro-III-Analyse — Abgleich, Dedup, Feature-Gap, Ticket-Generierung
- compare_rpro3.py: RPRO3-SQLite ↔ aktueller Stand (Dedup Name+DOB+Farbe+Herkunft)
- rpro3-vergleich.md / rpro3-feature-gap.md: erzeugte Reports
- rpro3_tickets.py / rpro3_post_tickets.py: 413 Rückfrage-Tickets mit Herkunft + Links

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 22:38:24 +02:00

91 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 | ML | **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 | SM | **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, ML) — strategisch wichtigste Lücke.