Table of Contents
< All Topics
Print

Yuyo-Systems-Architektur-Dokumentation

Wir verstehen uns als Reallabor für ressourcen-schonendes Leben und versuchen, der Selbstversorgung durch Lebensmittel möglichst Nahe zu kommen. Um unsere Fortschritte messbar zu machen, wollen wir Erntemengen, Wasserverbräuche, Zukauf von Lebensmitteln und einiges Weitere möglichst haarklein zu erfassen. Dazu bauen wir gerade mit Hilfe von Chat-GPT diese Website mit dazugehöriger Datenbank aus. Um den Überblick nicht zu verlieren, wird eine Dokumentation der Architektur der Software mit ihren Plugins nötig. Damit fangen wir also hier jetzt an.

Ziel: Überblick über Komponenten, Plugins, Datenflüsse und alle beteiligten Tabellen + Felder. Dieses Dokument dient als Referenz für Entwicklung, Betrieb und Erweiterungen (R1/R2 etc.).


0) Überblick

  • Plattform: WordPress (Custom-Plugins + Shortcodes)
  • DB: MariaDB/MySQL
  • Kontext: Erfassung/Planung von Ernten, Pflanzen-/Personen-/Infrastruktur-Stammdaten, Aufgaben/Workflows.

1) Plugins & Shortcodes (heute im Einsatz)

1.1 Assign Indis to Harvest Categories (R3)
  • Slug/Datei: assign-indis-to-harvest-categories-r3
  • Admin-Seite: Assign Indis to Harvest Categories (R3) (Zuordnung von Individuals ↔ R3)
  • Shortcodes:
    • [harvest-groups] – rendert alle Datensätze aus wp_finca_harvest_groups; unter R3 zusätzlich die zugeteilten Individuen
    • Finca Individuals and Groups assigned to Harvest Category R3

      • Cas (Psidium friedrichsthalianum) — Banana – Field
      • Colombian Sapote (Quararibea cordata) — Canela – Field
      • Governor’s plum (Flacourtia indica) — House – Field / Herbal Garden
      – zeigt nur die R3-Liste (ohne Entfernen)
  • DB-Bezug: wp_finca_harvest_assignments, wp_finca_harvest_groups, wp_indi_in_the_fields, wp_plant_species

Geplant: duplizierte Plugins für R1 und R2 (gleiches Schema, anderer GROUP_KEY).

1.2 (Bestands-Plugins – Auswahl)
  • Formidable Forms – Formular-ID 4: New Entry – Plant Species at the Finca
  • WP (Core) / WooCommerce / Membership – diverse Tabellen (siehe Abschnitt 5 / 6), sekundär für Harvest.

2) Datenmodell (Tabellen & Felder)

Hinweis: Für Tabellen mit ✅ sind die Felder hier vollständig bestätigt. Für ⚠️ sind die Felder teilweise bekannt; bitte ggf. mit SHOW COLUMNS FROM <table>; verifizieren (siehe SQL-Helfer am Ende).

2.1 Harvest-Gruppen (✅)

Tabelle: wp_finca_harvest_groups

FeldTypNotizen
idtinyint(3) unsigned, PK, AI
group_keyenum(‘R0′,’R1′,’R2′,’R3’), UNIQUESchlüssel der Gruppe
titlevarchar(120)Anzeigename
emojivarchar(8), NULLoptional
leadtextIntro/Kurzbeschreibung
definitiontextDefinition
check_frequencytextPrüf-/Erntefrequenz
notestext, NULLHinweise
examplestext, NULLBeispiele
sort_ordertinyint(4)Sortierung
updated_atdatetimeDefault current_timestamp()
created_atdatetimeDefault current_timestamp()

2.2 Harvest-Zuordnungen R3 (✅)

Tabelle: wp_finca_harvest_assignments

FeldTypNotizen
idBIGINT UNSIGNED, PK, AI
individual_idBIGINT UNSIGNED, INDEXFK → wp_indi_in_the_fields.id
group_keyVARCHAR(8)Fix: 'R3' (für R1/R2 gleiches Feld)
is_activeTINYINT(1) DEFAULT 11=zugeordnet, 0=entfernt
assigned_byBIGINT UNSIGNED, NULLWP-User-ID
assigned_atDATETIME NOT NULLZeitpunkt Zuweisung
removed_byBIGINT UNSIGNED, NULLWP-User-ID
removed_atDATETIME, NULLZeitpunkt Entfernen

Indizes:

  • PRIMARY KEY (id)
  • UNIQUE KEY uq_individual_group (individual_id, group_key)
  • KEY ix_group_active (group_key, is_active)
  • KEY ix_individual (individual_id)

2.3 Individuen im Feld (⚠️ verifizieren)

Tabelle: wp_indi_in_the_fields

Bekannte/benutzte Felder:

  • id (PK)
  • plant_species_id (FK → wp_plant_species.id)
  • Standort: project, quarter, sixteenth, zone, subzone
  • (weitere Felder vorhanden – bitte untenstehenden SQL-Helfer nutzen und hier ergänzen)

2.4 Pflanzen-Spezies (⚠️ verifizieren)

Tabelle: wp_plant_species

Bekannte/benutzte Felder:

  • id (PK)
  • english_name
  • latin_name
  • (weitere Stammdatenfelder – via Formular/Knowledge Base gepflegt; bitte per SQL-Helfer ergänzen)

2.5 Harvest-Logs & Queue (falls genutzt auf der Instanz)

  • wp_harvest_log (⚠️ verifizieren) – protokolliert Ernte-Ereignisse
  • wp_finca_harvest_queue (⚠️ verifizieren) – evtl. Worker-/Queue-Tabelle

Diese Tabellen sind für Analyse/Prozesse wichtig, aber nicht direkt für den R3-Shortcode; Felder bitte via SQL-Helfer ergänzen.

2.6 Weitere Finca-Tabellen (Kontext)

  • Gäste/Personen (⚠️): wp_finca_guests, wp_finca_booking_guests, wp_finca_booking_guests_bak, wp_users, wp_usermeta
  • Infrastruktur (⚠️): wp_finca_beds, wp_finca_bed_status, wp_finca_rooms, wp_finca_tanks, wp_finca_tank_connections, wp_finca_tank_consumption, wp_location_hierarchy
  • Aufgaben/Work (⚠️): wp_finca_tasks, wp_finca_task_runs, wp_actionscheduler_*
  • Sonstiges (⚠️): wp_species_parts_used, wp_parts_used, wp_species_parts_used_bak*, wp_parts_used_bak*, wp_recipes_species_map, wp_occupancy*, wp_occupancy_standing

Für jeden Bereich unten (A–E) ist notiert, welche Tabellen primär sind.


3) Workflows & Datenflüsse

3.1 R3-Zuordnung (Admin)

  1. Admin öffnet „Assign Indis (R3)“
  2. Dropdown lädt Individuals (wp_indi_in_the_fields JOIN wp_plant_species) → Label: english_name (latin_name) — Sixteenth / Zone / Subzone
  3. Hinzufügen: Upsert in wp_finca_harvest_assignments (is_active=1, assigned_at, assigned_by)
  4. Entfernen: Update is_active=0, removed_at, removed_by

3.2 Frontend-Ausgabe

  • [harvest-groups] lädt alle wp_finca_harvest_groups
  • Für R3 zusätzlich JOIN assignments + indi_in_the_fields + plant_species → Liste aktiver Individuals
  • Finca Individuals and Groups assigned to Harvest Category R3

    • Cas (Psidium friedrichsthalianum) — Banana – Field
    • Colombian Sapote (Quararibea cordata) — Canela – Field
    • Governor’s plum (Flacourtia indica) — House – Field / Herbal Garden
    zeigt ausschließlich die R3-Liste (ohne Entfernen)

4) Modulübersicht (A–E)

A) Pflanzenerfassung

  • Ziel: Stammdaten von Spezies + Erfassung konkreter Individuen
  • Plugins/Formulare:
    • Formidable Forms – Formular ID4: New Entry – Plant Species at the Finca
    • Custom Plugin: Assign Indis to Harvest Categories (R3) (R1/R2 geplant)
  • Tabellen:
    • wp_plant_species (⚠️ Felder verifizieren)
    • wp_indi_in_the_fields (⚠️ Felder verifizieren)
    • wp_finca_harvest_groups (✅ Felder oben)
    • wp_finca_harvest_assignments (✅ Felder oben)
  • Shortcodes: [harvest-groups],

    Finca Individuals and Groups assigned to Harvest Category R3

    • Cas (Psidium friedrichsthalianum) — Banana – Field
    • Colombian Sapote (Quararibea cordata) — Canela – Field
    • Governor’s plum (Flacourtia indica) — House – Field / Herbal Garden

B) Personenerfassung

  • Ziel: Personen, Gäste und Nutzerkonten
  • Tabellen (typisch): wp_finca_guests, wp_finca_booking_guests, wp_users, wp_usermeta (⚠️ Felder verifizieren)
  • Mögliche Bezüge: Ernte- oder Aufgaben-Logs mit assigned_by/removed_by (User-ID)

C) Tiererfassung (später)

  • Placeholder: noch keine produktive Nutzung
  • Tabellen/Plugins: TBD

D) Infrastruktur

  • Ziel: Betten/Rooms/Wassertanks etc.
  • Tabellen (Beispiele): wp_finca_beds, wp_finca_bed_status, wp_finca_rooms, wp_finca_tanks, wp_finca_tank_connections, wp_finca_tank_consumption, wp_location_hierarchy (⚠️ Felder verifizieren)

E) Arbeitsaufgabenerfassung

  • Ziel: Aufgaben planen/verfolgen (z. B. Harvest Walks)
  • Tabellen: wp_finca_tasks, wp_finca_task_runs (⚠️ Felder verifizieren)
  • Scheduler: wp_actionscheduler_* (Woo/Action Scheduler) – falls genutzt

5) Rechte, Sicherheit, Performance

  • Capabilities: Admin-UI geschützt via manage_options + Nonce
  • Validierung: Sanitizing/escaping von Eingaben (IDs, Texte)
  • Indizes: vorhanden auf assignments (siehe 2.2) – wichtig für schnelle Listen
  • Skalierung: Dropdown ggf. auf Ajax/Select2 umstellen bei vielen Individuals

6) ToDos / Offene Punkte für die Doku

  • ✅ Felder wp_finca_harvest_groups aufgenommen
  • ✅ Felder wp_finca_harvest_assignments aufgenommen
  • Alle Felder wp_indi_in_the_fields ergänzen (siehe SQL-Helfer)
  • Alle Felder wp_plant_species ergänzen (siehe SQL-Helfer)
  • ⬜ Für relevante Tabellen in B), D), E) die Felderlisten aufnehmen
  • ⬜ ER-Diagramm (optional): Assignments ↔ Individuals ↔ Species ↔ Groups

7) SQL-Helfer (zum Ausfüllen der Feldlisten)

In phpMyAdmin jeweils ausführen und die Ergebnisse in Abschnitt 2/4 übernehmen.

-- Alle Spalten für die wichtigsten Tabellen:
SHOW COLUMNS FROM wp_indi_in_the_fields;
SHOW COLUMNS FROM wp_plant_species;
SHOW COLUMNS FROM wp_finca_harvest_groups;
SHOW COLUMNS FROM wp_finca_harvest_assignments;

-- (optional) Weitere Kontexte:
SHOW COLUMNS FROM wp_finca_guests;
SHOW COLUMNS FROM wp_finca_beds;
SHOW COLUMNS FROM wp_finca_bed_status;
SHOW COLUMNS FROM wp_finca_rooms;
SHOW COLUMNS FROM wp_finca_tanks;
SHOW COLUMNS FROM wp_finca_tank_connections;
SHOW COLUMNS FROM wp_finca_tank_consumption;
SHOW COLUMNS FROM wp_finca_tasks;
SHOW COLUMNS FROM wp_finca_task_runs;
SHOW COLUMNS FROM wp_harvest_log;
SHOW COLUMNS FROM wp_finca_harvest_queue;

8) Änderungsverlauf

  • v0.1 (2025-08-18): Draft erstellt (R3-Plugin, Gruppen/Assignments vollständig; übrige Tabellen als ⚠️ markiert)

Hinweis: Diese Doku ist ein lebendes Dokument. Beim Hinzufügen weiterer Plugins (R1/R2) und beim Ergänzen der Tabellenfelder bitte jeweils Abschnitt 1 und 2/4 aktualisieren.

Categories