Files
GerbilManager/GerbilManagerWebAPI/Dtos/Rpro3Dtos.cs
Gulum c7b054e909 feat(import): RPRO3-Importer um 6 Feature-Tabellen erweitern
becken→Gehege-Reinigung, herktier→Erwerb, abgeben/abstat→Reservierung,
getback→Rücknahmen, nachfrage→Warteliste, ausz→Ausstellungen.
Deterministische GUIDs, idempotenter Re-Import.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 07:05:01 +02:00

67 lines
2.7 KiB
C#

namespace GerbilManagerWebAPI.Dtos
{
/// <summary>Zählungen für die Analyse-Übersicht (RennmausPro-III-Import).</summary>
public record Rpro3Counts(
int OwnAnimals, // eigene Tiere (stamm)
int ExternalRaw, // externe Ahnen (fremd, roh, vor Dedup)
int ExternalAfterDedup, // externe Ahnen nach Dedup
int Litters, // Würfe
int Contacts, // Kontakte (Herkunft + Abnehmer)
int Genotypes, // hinterlegte Genotypen (eigen + extern)
int DuplicatesMerged, // weggefallene interne Dubletten
int MergeClusters, // Anzahl zusammengelegter Cluster
int Enclosures, // Gehege/Becken
int Acquisitions, // Erwerbe (herktier_tb)
int Reservations, // Reservierungen/Abgaben (abgeben_tb + abstat_tb)
int Returns, // Rücknahmen (getback_tb)
int WaitingList, // Wartelisten-Einträge (nachfrage_tb)
int Exhibitions); // Ausstellungsergebnisse (ausz_tb)
/// <summary>Eine Variante eines mehrdeutigen Namens (für die Entscheidung der Züchterin).</summary>
public record Rpro3AmbiguousVariant(
int Count,
string Dob,
string Farbe,
string Origin,
bool IsOwn);
public record Rpro3AmbiguousName(
string Name,
IReadOnlyList<Rpro3AmbiguousVariant> Variants,
int BareCount);
/// <summary>Ein großer sicherer Merge-Cluster (zur Veranschaulichung der Dedup-Wirkung).</summary>
public record Rpro3MergeSample(
string Name,
int RecordCount,
string Dob,
string Farbe,
string Origin);
/// <summary>Ergebnis von POST /import/rpro3/analyze — schreibt NICHTS in die DB.</summary>
public record Rpro3AnalyzeResult(
Rpro3Counts Counts,
int NewVsCurrentNew, // wie viele Tiere im aktuellen Stand fehlen würden (neu)
int NewVsCurrentExisting, // wie viele schon vorhanden sind (Match)
IReadOnlyList<Rpro3MergeSample> TopMerges,
IReadOnlyList<Rpro3AmbiguousName> AmbiguousNames,
bool PhotosProvided,
int PhotoFilesAvailable);
/// <summary>Ergebnis von POST /import/rpro3/execute.</summary>
public record Rpro3ExecuteResult(
int GerbilsImported,
int LittersImported,
int ContactsImported,
int HealthRecordsImported,
int WeightRecordsImported,
int PhotosImported,
int EnclosuresImported,
int AcquisitionsImported,
int ReservationsImported,
int ReturnsImported,
int WaitingListImported,
int ExhibitionsImported,
string Message);
}