Zum Inhalt

Datenbankmodelle-Referenz

Vollständige Referenz für alle Datenbankmodelle in Bifolk, organisiert nach App.

Zielgruppe: Softwareentwickler


Übersicht

Bifolk verwendet Djangos ORM mit über 31 Modellen in 8 Apps. Wichtige Designmuster:

  • Organisationsbasierte Datenisolierung: Alle Geschäftsmodelle haben einen organization-Fremdschlüssel
  • Berechtigungshelfer: Modelle implementieren user_can_view(), user_can_edit(), user_can_delete()
  • Audit-Trails: Die meisten Modelle verfolgen created_by, created_at, updated_at
  • Übersetzbare Felder: SystemConfig-Modelle unterstützen englische und deutsche Labels

Note

Für exakte Felddefinitionen und Zeilennummern siehe die interne KI-Referenz unter docs/claude/01-MODELS.md.


Organizations-App

Organization

Mandantenfähige Organisationsentität.

Feld Typ Beschreibung
name CharField(200) Organisationsname
org_type CharField(20) personal, family, cooperative, commercial, club
description TextField Optionale Beschreibung
is_active BooleanField Aktiv-Status
logo ImageField Automatisch auf 300x300px skaliert
members ManyToManyField(User) Über OrganizationMembership

Wichtige Methoden: get_owners(), get_admins(), user_is_member(user), user_role(user)

OrganizationMembership

Benutzer-Organisations-Beziehung mit rollenbasiertem Zugriff.

Feld Typ Beschreibung
organization FK(Organization) Organisation (CASCADE)
user FK(User) Benutzer (CASCADE)
role CharField(20) owner, admin, member, viewer
invited_by FK(User) Eingeladen von (SET_NULL)
is_active BooleanField Aktive Mitgliedschaft

Einschränkung: Unique (organization, user)

Wichtige Methoden: can_manage_members(), can_delete_organization(), can_edit_resources(), can_delete_resources()

OrganizationInvitation

E-Mail-Einladungssystem für Organisationsmitglieder.

Feld Typ Beschreibung
email EmailField Empfänger-E-Mail
role CharField(10) Rolle bei Annahme
token UUIDField Eindeutiger Einladungstoken
status CharField(10) pending, accepted, declined, expired
expires_at DateTimeField Automatisch auf 7 Tage gesetzt

Wichtige Methoden: is_valid(), accept(user), decline()

OrganizationSettings

Organisationsspezifische Einstellungen (1-zu-1 mit Organization).

Feld Typ Beschreibung
date_format CharField(20) Python-Datumsformat-String
time_zone CharField(50) Organisations-Zeitzone
unit_system CharField(10) metric oder imperial
language CharField(10) Bevorzugte Sprache

Users-App

Profile

Erweitert Djangos User-Modell (1-zu-1). Wird automatisch via Signal bei Benutzerregistrierung erstellt.

Feld Typ Beschreibung
user OneToOneField(User) Django-Benutzer (CASCADE)
image ImageField Profilbild, automatisch auf 300x300 skaliert
language CharField(7) Bevorzugte Sprache (en oder de)

Hives-App

Die größte App, enthält Bienenstockverwaltung, Königinnen, Kontrollen, Arbeiten, Ernten und Honig-Rückverfolgbarkeit.

Hive

Hauptmodell zur Bienenstockverfolgung.

Feld Typ Beschreibung
name CharField(100) Bienenstockname
hive_type CharField(20) Konfigurierbar via SystemConfig
location CharField(200) Physischer Standort
organization FK(Organization) Besitzende Organisation
created_by FK(User) Ersteller
health_status CharField(20) Konfigurierbarer Gesundheitsstatus
is_active BooleanField Ob Bienenstock aktiv ist

Beziehungen: Hat eine Queen (optional), viele Inspections, viele HarvestRecords, viele Operations, viele HivePhotos.

BreedingHive

Spezialisierter Bienenstock für Königinnenzucht (Multi-Table-Inheritance von Hive). Kann nicht via ColonySplit geteilt werden.

Queen

Königinnen-Verfolgung mit Abstammungsunterstützung.

Feld Typ Beschreibung
hive OneToOneField(Hive) Zugehöriger Bienenstock (CASCADE)
breed CharField(100) Königinnenrasse
date_introduced DateField Einführungsdatum
marking_color CharField(20) Internationaler Farbcode (white, yellow, red, green, blue, unmarked)
origin CharField(20) bred_here, purchased, swarm, supersedure, etc.
mother_queen FK('self') Selbstreferenz für Abstammung (SET_NULL)
breeding_record FK(QueenBreeding) Zugehöriger Zuchtdatensatz (SET_NULL)
identification_number CharField(50) Eindeutige ID oder Registernummer

Properties: age_in_days, age_in_years Abstammungsmethoden: get_ancestors(generations), get_descendants(), get_lineage_depth()

HiveInspection

Einzelne Bienenstockkontroll-Datensätze.

Feld Typ Beschreibung
hive FK(Hive) Kontrollierter Bienenstock (CASCADE)
inspection_date DateField Kontrolldatum
inspector FK(User) Wer kontrollierte
frames_of_brood IntegerField Brutwaben-Anzahl
frames_of_honey IntegerField Honigwaben-Anzahl
queen_seen BooleanField Königin gesehen
signs_of_disease BooleanField Krankheit beobachtet
temperament CharField(20) calm, moderate, aggressive

BeekeepingOperation (Abstrakt)

Abstraktes Basismodell für alle Imkereiarbeiten. Bietet gemeinsame Felder:

Feld Typ Beschreibung
organization FK(Organization) Besitzer (CASCADE)
created_by FK(User) Ersteller (SET_NULL)
assigned_to FK(User) Zugewiesener Benutzer (SET_NULL)
scheduled_date DateField Geplantes Datum
completed_date DateField Abschlussdatum
status CharField(15) planned, in_progress, completed, cancelled
priority CharField(10) low, medium, high, urgent
cost DecimalField(8,2) Kosten in Euro

Konkrete Unterklassen:

Modell Zweck Wichtige Zusatzfelder
HiveFeeding Fütterungseinträge hive, feed_type, quantity, ratio, inventory_item
HiveTreatment Schädlings-/Krankheitsbehandlungen hive, treatment_type, product_name, dosage, effectiveness
HiveMaintenance Gerätewartung hive, maintenance_type, description, parts_used
HiveCombine Völkervereinigung primary_hive, secondary_hive, method, is_successful
QueenReplacement Umweiselung hive, old_queen, new_queen, replacement_method, acceptance_confirmed

OperationPhoto

Fotodokumentation für jede Imkereiarbeit.

HivePhoto

Fotodokumentation für Bienenstöcke.

Honig-Rückverfolgbarkeitskette

Vier Modelle bilden eine vollständige Rückverfolgbarkeitskette von der Ernte bis zum Endprodukt:

HarvestRecord

Einzelne Ernte aus einem Bienenstock.

Feld Typ Beschreibung
hive FK(Hive) Quell-Bienenstock (CASCADE)
harvest_date DateField Erntedatum
harvested_by FK(User) Wer erntete
weight_kg DecimalField(6,2) Gewicht in kg
honey_type CharField(100) Konfigurierbarer Honigtyp

HoneyBatch (Topf)

Aggregation mehrerer Ernten zu einer Charge.

HoneyBucket (Eimer)

Eimer-Verfolgung aus einer Charge.

HoneyJar (Glas)

Endprodukt-Glas aus einem Eimer.

HealthStatusChange

Automatischer Verlaufseintrag, der erstellt wird, wenn sich der Gesundheitsstatus eines Bienenstocks ändert (via Signal).

QueenHealthStatusChange

Automatischer Verlaufseintrag für Königinnen-Gesundheitsstatusänderungen.


Breeding-App

QueenBreeding

Königinnenaufzucht-Datensätze mit detaillierter Zuchtzeitleiste.

Feld Typ Beschreibung
breeding_date DateField Startdatum
breeding_method CharField(20) grafting, natural, jenter, nicot, walk_away
status CharField(20) planning bis laying oder failed
organization FK(Organization) Besitzer
mother_hive FK(Hive) Genetischer Quell-Bienenstock
cells_started IntegerField Gestartete Zellen
queens_emerged IntegerField Geschlüpfte Königinnen
queens_mated IntegerField Erfolgreich begattete

Property: success_rate - Annahme-Prozentsatz

ColonySplit

Völkerteilungs- und Vermehrungsdatensätze.

Feld Typ Beschreibung
split_date DateField Teilungsdatum
split_type CharField(20) split, walk_away, nucleus, swarm_capture, etc.
parent_hive FK(Hive) Original-Bienenstock
new_hive FK(Hive) Resultierender Bienenstock
frames_transferred IntegerField Übertragene Waben
is_successful BooleanField Ob Teilung erfolgreich war

Note

ColonySplit-Validierung verhindert das Teilen von BreedingHive-Instanzen.


Warehouse-App

WarehouseLocation

Lagerorte innerhalb einer Organisation.

InventoryItem

Bestandsverfolgung für Geräte, Produkte und Materialien.

Feld Typ Beschreibung
name CharField(200) Artikelname
category CharField(20) equipment, product, supply
item_type CharField(30) Spezifischer Typ innerhalb der Kategorie (ConfigurableChoice, Code: item_type)
system_item_type CharField(30) Systemkennung: none, bucket, jar, feeding_material
quantity DecimalField(10,2) Aktuelle Menge
unit CharField(20) piece, kg, liter, jar, box, frame
min_quantity DecimalField(10,2) Mindestbestand
unit_cost DecimalField(10,2) Kosten pro Einheit
organization FK(Organization) Besitzer

Property: is_low_stock - ob Menge unter Minimum liegt

InventoryTransaction

Alle Bestandsbewegungen (Zugänge und Abgänge).

Feld Typ Beschreibung
item FK(InventoryItem) Artikel (CASCADE)
transaction_type CharField(20) purchase, sale, production, usage, harvest, loss, adjustment, transfer
quantity_change DecimalField(10,2) Änderung (±)
quantity_before DecimalField(10,2) Vorherige Menge
quantity_after DecimalField(10,2) Neue Menge

Aktualisiert automatisch InventoryItem.quantity beim Speichern.

ProductSale

Verkaufsverfolgung mit Positionen.

ProductSaleItem

Einzelne Positionen in einem Verkauf. Erstellt automatisch InventoryTransaction beim Speichern.


SystemConfig-App

ChoiceCategory

Gruppen konfigurierbarer Dropdown-Auswahloptionen (z.B. hive_style, honey_type, feeding_type).

ConfigurableChoice

Einzelne Auswahlwerte mit Mehrsprachunterstützung.

Feld Typ Beschreibung
category FK(ChoiceCategory) Übergeordnete Kategorie
organization FK(Organization) NULL = global, gesetzt = org-spezifisch
value CharField(100) Interner Wert
label_en CharField(200) Englisches Label
label_de CharField(200) Deutsches Label
is_active BooleanField Verfügbar zur Auswahl

Einschränkung: Unique (category, value, organization)


Notifications-App

Notification

In-App-Benachrichtigung für Benutzer.


DataExchange-App

ExportJob

Organisationsdaten-Exportoperationen.

ImportJob

Organisationsdaten-Importoperationen.


Entity-Relationship-Zusammenfassung

User ──┬── Profile (1:1)
       └── OrganizationMembership ── Organization ──┬── OrganizationSettings (1:1)
                                                     ├── Hive ──┬── Queen (1:1)
                                                     │          ├── HiveInspection
                                                     │          ├── HarvestRecord → HoneyBatch → HoneyBucket → HoneyJar
                                                     │          ├── HiveFeeding
                                                     │          ├── HiveTreatment
                                                     │          ├── HiveMaintenance
                                                     │          ├── HivePhoto
                                                     │          └── HealthStatusChange
                                                     ├── HiveCombine (ref. 2 Hives)
                                                     ├── QueenReplacement (ref. Hive + 2 Queens)
                                                     ├── QueenBreeding → Queen.breeding_record
                                                     ├── ColonySplit (ref. 2 Hives)
                                                     ├── InventoryItem ── InventoryTransaction
                                                     ├── ProductSale ── ProductSaleItem
                                                     ├── WarehouseLocation
                                                     └── ConfigurableChoice

Verwandte Dokumentation