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¶
- Architekturübersicht - Systemdesignmuster
- Berechtigungssystem - RBAC-Implementierung
- App-Referenz - App-spezifische detaillierte Dokumentation
- Interne KI-Referenz:
docs/claude/01-MODELS.mdfür exakte Felddefinitionen und Zeilennummern