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 auswp_finca_harvest_groups; unter R3 zusätzlich die zugeteilten Individuen– zeigt nur die R3-Liste (ohne Entfernen)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
- 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
| Feld | Typ | Notizen |
|---|---|---|
id | tinyint(3) unsigned, PK, AI | |
group_key | enum(‘R0′,’R1′,’R2′,’R3’), UNIQUE | Schlüssel der Gruppe |
title | varchar(120) | Anzeigename |
emoji | varchar(8), NULL | optional |
lead | text | Intro/Kurzbeschreibung |
definition | text | Definition |
check_frequency | text | Prüf-/Erntefrequenz |
notes | text, NULL | Hinweise |
examples | text, NULL | Beispiele |
sort_order | tinyint(4) | Sortierung |
updated_at | datetime | Default current_timestamp() |
created_at | datetime | Default current_timestamp() |
2.2 Harvest-Zuordnungen R3 (✅)
Tabelle: wp_finca_harvest_assignments
| Feld | Typ | Notizen |
id | BIGINT UNSIGNED, PK, AI | |
individual_id | BIGINT UNSIGNED, INDEX | FK → wp_indi_in_the_fields.id |
group_key | VARCHAR(8) | Fix: 'R3' (für R1/R2 gleiches Feld) |
is_active | TINYINT(1) DEFAULT 1 | 1=zugeordnet, 0=entfernt |
assigned_by | BIGINT UNSIGNED, NULL | WP-User-ID |
assigned_at | DATETIME NOT NULL | Zeitpunkt Zuweisung |
removed_by | BIGINT UNSIGNED, NULL | WP-User-ID |
removed_at | DATETIME, NULL | Zeitpunkt 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_namelatin_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-Ereignissewp_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)
- Admin öffnet „Assign Indis (R3)“
- Dropdown lädt Individuals (
wp_indi_in_the_fieldsJOINwp_plant_species) → Label: english_name (latin_name) — Sixteenth / Zone / Subzone - Hinzufügen: Upsert in
wp_finca_harvest_assignments(is_active=1,assigned_at,assigned_by) - Entfernen: Update
is_active=0,removed_at,removed_by
3.2 Frontend-Ausgabe
[harvest-groups]lädt allewp_finca_harvest_groups- Für R3 zusätzlich
JOIN assignments + indi_in_the_fields + plant_species→ Liste aktiver Individuals zeigt ausschließlich die R3-Liste (ohne Entfernen)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
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_groupsaufgenommen - ✅ Felder
wp_finca_harvest_assignmentsaufgenommen - ⬜ Alle Felder
wp_indi_in_the_fieldsergänzen (siehe SQL-Helfer) - ⬜ Alle Felder
wp_plant_speciesergä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.