Naechste Session
Datum: 24. Januar 2026
Status: LIVE | Plugin v2.14.0 | Sprint 66 ERLEDIGT
Zuletzt erledigt (24.01.2026)
| Task |
Beschreibung |
| Zoom-Integration Bestandsaufnahme |
Dokumentation aktualisiert |
| - Status-Tabelle |
Was funktioniert / was nicht |
| - Workflow |
Aktueller manueller Prozess dokumentiert |
| - zoom.md |
Help-Service aktualisiert |
| Customer Portal Theme-Fixes |
Light/Dark Theme Verbesserungen |
| - Header |
Hintergrund gleich wie Seiten-Hintergrund (beide Themes) |
| - Portal-Titel |
"Melly's Islandpferde - Kundenportal" neben Logo |
| - Theme-Toggle |
Nach oben rechts in Topbar verschoben |
| Dashboard Cards |
Komplett klickbar als Links |
| - Video-Bibliothek |
Ocker-Hintergrund (Gradient) |
| - Alle Cards |
<a> statt <div>, hover-Effekte |
| Badge-Fix |
"Zahlung ausstehend" mit schwarzer Schrift |
| Sync-Problem diagnostiziert |
Buchung 542 hat ungueltige wp_booking_id=5017 |
| - Ursache |
WordPress-Buchung wurde geloescht, Portal nicht synchronisiert |
| - Issue |
Gitea #87 erstellt fuer Cleanup-Funktion |
Betroffene Dateien (Zoom-Bestandsaufnahme)
| Datei |
Status |
includes/class-zoom-api.php |
✅ OAuth + API-Aufrufe fertig |
includes/class-zoom-settings.php |
✅ Settings UI fertig |
includes/class-zoom-kurs.php |
✅ Metabox fertig (Auto-Create deaktiviert) |
includes/class-zoom-webhook.php |
⚠️ Fertig aber nicht getestet |
includes/class-email.php |
✅ Platzhalter implementiert |
help-service/content/zoom.md |
✅ Dokumentation aktualisiert |
Betroffene Dateien (Customer Portal)
| Datei |
Aenderung |
web/static/css/style.css |
Header-Hintergrund, Portal-Titel Styling |
web/static/css/sidebar.css |
Topbar, Dashboard-Cards, Badge-Fix, Ocker-Video-Card |
web/templates/base.html |
Portal-Titel neben Logo |
web/templates/base_sidebar.html |
Topbar mit Theme-Toggle |
web/templates/dashboard.html |
Cards als <a> Links |
web/templates/components/sidebar.html |
Theme-Toggle entfernt (jetzt in Topbar) |
OFFEN: Naechste Session
Prioritaet 1 - Customer Portal Sync-Cleanup (Gitea #87)
| Task |
Beschreibung |
| Cleanup-Funktion |
Buchungen mit ungueltigem wp_booking_id finden und behandeln |
| - Option A |
Soft Delete: status=deleted, deleted_at Feld |
| - Option B |
Hard Delete: Buchung komplett entfernen |
| - Admin-UI |
Button im Admin-Bereich fuer manuellen Cleanup |
Prioritaet 2 - Sprint 66 Phase 2 (OPTIONAL)
Schrittweise Umstellung der Module auf zentrale Kurs_Booking_Billing_Decision:
- [ ] class-sevdesk-partial-invoice.php umstellen
- [ ] class-sevdesk.php umstellen
- [ ] class-sevdesk-parts.php umstellen
- [ ] class-sevdesk-bulk-sync.php umstellen
Hinweis: Alte Module funktionieren weiter! Umstellung nur bei Bedarf.
Sprint 66 - Billing Decision System + Sync-Logging ✅ ERLEDIGT
| Task |
Status |
Notizen |
| class-billing-decision.php |
✅ |
Zentrale Entscheidungsfunktion |
| DEPENDENCY-MATRIX.md |
✅ |
Modul-Abhaengigkeiten dokumentiert |
| class-sync-logger.php |
✅ |
Eigene Log-Datei + Email-Benachrichtigung |
| Kurs-Admin Filter |
✅ |
Neue Spalte + Dropdown fuer Abrechnungstyp |
| Production Deployment |
✅ |
Alle Features deployed |
Neue Funktionen (Phase 1):
- should_create_sevdesk_invoice() - Soll Rechnung erstellt werden?
- should_sync_course_to_sevdesk() - Soll Kurs synchronisiert werden?
- is_external_billing() - Hat externe Abrechnung?
Neue Features (Phase 1b):
- Kurs-Admin: Spalte "Abrechnung" mit Farbcodierung (gruen=eigen, rot=extern, orange=partner)
- Kurs-Admin: Filter-Dropdown (Alle / Eigen / Extern / Partner)
- Sync-Log: /wp-content/uploads/kurs-booking-logs/sync.log
- Email: Admin-Benachrichtigung bei >=3 Sync-Fehlern
- UI: Log-Anzeige im sevDesk > Synchronisation Tab
Gitea Issue: #86 (closed)
Sprint-Plan: docs/kurs-booking/entwicklung/sprints/sprint-66-billing-decision-system.md
Sprint 65 - sevDesk Abrechnungstyp-Filter ✅ ERLEDIGT
| Task |
Status |
Notizen |
| Anzahlungsrechnung Filter |
✅ |
create_deposit_invoice() prueft jetzt! |
| Restrechnung Filter |
✅ |
create_rest_invoice() prueft jetzt! |
| Mahnrechnung Filter |
✅ |
create_dunning_invoice() prueft jetzt! |
| Statistik der Kurse |
✅ |
eigen:45, partner:6, extern:2 |
Gitea Issue: #84 (closed)
Zuletzt erledigt (23.01.2026)
| Task |
Beschreibung |
| sevDesk FAQ hinzugefuegt |
Help-Service: "Was passiert ohne Sync?" |
| - Inhalt |
Automatische Kontakt/Dienstleistungs-Erstellung erklaert |
| - Datei |
help-service/content/sevdesk.md |
| - Live |
https://hilfe.islandpferde-melanieworbs.de |
| WordPress Uebersetzungen |
Deutsche Sprachdateien fehlten (Bedrock) |
| - Problem |
"Page" statt "Seite" - Core-Uebersetzungen fehlten |
| - Ursache |
/web/app/languages/ Ordner existierte nicht |
| - Loesung |
wp language core install de_DE |
| - Volume |
wp_languages_islandpferde fuer Persistenz erstellt |
| - Entrypoint |
20-install-languages.sh fuer Auto-Install |
| Bugfix: Doppelter Filter |
"Alle Kurse" erschien 2x in Kurs-Admin |
| - Ursache |
Archive-Filter + Test-Kurse-Filter hatten gleichen Label |
| - Loesung |
Test-Kurse Label geaendert zu "Echte & Test-Kurse" |
| - Datei |
includes/class-test-kurse.php |
| Sprint 66: Sync-Logging |
Eigene Log-Datei + Email-Benachrichtigung |
| - class-sync-logger.php |
Neue Klasse fuer zentrales Sync-Logging |
| - Log-Datei |
/wp-content/uploads/kurs-booking-logs/sync.log |
| - Admin-Email |
Benachrichtigung bei >=3 Sync-Fehlern |
| - Log-UI |
Anzeige im sevDesk > Synchronisation Tab |
| Sprint 66: Kurs-Admin Filter |
Neue Spalte und Filter fuer Abrechnungstyp |
| - Spalte "Abrechnung" |
Mit Farbcodierung (eigen=gruen, extern=rot, partner=orange) |
| - Filter-Dropdown |
Alle / Eigen / Extern / Partner |
| Sprint 65: sevDesk Abrechnungstyp |
Filter fuer externe Abrechnung |
| - Token-Erkennung |
API-Token-Wechsel loescht alte Mappings automatisch |
| - Bulk-Sync |
Nur Kurse mit abrechnung=eigen werden synchronisiert |
| - GUI |
Alle Kurse in einer Tabelle mit Abrechnungstyp-Spalte |
| - Auto-Sync |
Kurs-Speichern prueft jetzt Abrechnungstyp |
| Domain-Migration ABGESCHLOSSEN |
Website jetzt unter neuer Domain live |
| - Neue URL |
https://islandpferde-melanieworbs.de |
| - Portal |
https://portal.islandpferde-melanieworbs.de |
| - Hilfe |
https://hilfe.islandpferde-melanieworbs.de |
| Sprint 64: Container Bulletproof |
Netzwerk + Healthchecks |
| Kundin informiert |
E-Mail ueber Go-Live gesendet |
Zuletzt erledigt (22.01.2026 - Nacht)
| Task |
Beschreibung |
| Footer-Widgets Fix |
Footer auf Kurs-Detailseiten wieder sichtbar |
| - Problem |
CSS-Regel body.single-kurs .col-lg-3 versteckte ALLE col-lg-3 |
| - Ursache |
Footer-Widgets haben auch Klasse col-lg-3 (Bootstrap) |
| - Loesung |
Spezifischere Regel mit :not(.dsvy-footer-widget) |
| - Datei |
assets/css/frontend.css Zeile 3224-3231 |
| Server-Bereinigung |
Production-Umgebung optimiert |
| - Kadence Plugins |
13 Plugins geloescht (nicht benoetigt) |
| - Themes |
Nur Rodiar + Child behalten, twentytwentyfive geloescht |
| - Debug |
production.php erstellt mit WP_DEBUG=false |
| - WP-Optimize |
Geloescht (redundant, Redis aktiv) |
| - WEC sevDesk |
Geloescht (redundant, in kurs-booking integriert) |
| Vollbackup erstellt |
/opt/backups/2026-01-22/ (1.5 GB) |
| - Datenbank |
db_backup_2026-01-22.sql (74 MB) |
| - Plugins |
plugins_backup.tar.gz (72 MB) |
| - Uploads |
uploads_backup.tar.gz (1.4 GB) |
| CF7 Datenschutz-Link |
Korrigiert von Datenschutzerklaerung → /datenschutz/ |
| - Problem |
Relativer Link ohne Slash fuehrte zu 404 |
| - Loesung |
Link in _form postmeta und post_content geaendert |
Zuletzt erledigt (22.01.2026 - Abend)
| Task |
Beschreibung |
| Staging-Umgebung erstellt |
Komplette Kopie von Production auf Hetzner |
| - WordPress |
wp-staging-islandpferde + mariadb-staging-islandpferde |
| - Customer Portal |
customer_portal_staging + customer_portal_db_staging |
| - Video Service |
video_api_staging + video_worker_staging + video_redis_staging |
| - URLs |
staging.islandpferde-melanieworbs.de |
| - Portal |
staging-portal.islandpferde-melanieworbs.de |
| - Video |
staging-video.islandpferde-melanieworbs.de |
| Testbuchung Staging |
BK-2026-0163 erfolgreich erstellt |
| - Formular |
Alle 3 Schritte funktionieren |
| - Kundenerkennung |
E-Mail wird automatisch geprueft |
| - Anzahlung |
30% korrekt berechnet (51€ von 170€) |
| Test-Modus sevDesk |
Rechnungen bleiben als ENTWURF |
| - Implementiert |
$is_test_booking Check vor finalize_invoice() |
| - Loeschung |
Test-Buchungen loeschen auch sevDesk-Entwuerfe |
| Test-Kurse Modul |
Neues eigenstaendiges Modul |
| - Datei |
includes/class-test-kurse.php |
| - Features |
Auto-Markierung, Checkbox, Badge, Filter, Loeschung |
| Migrations-Anleitung |
Domain-Umstellung dokumentiert |
| - Datei |
docs/kurs-booking/entwicklung/MIGRATION-HAUPTDOMAIN.md |
| - Von |
kurse.islandpferde-melanieworbs.de |
| - Nach |
islandpferde-melanieworbs.de |
Zuletzt erledigt (22.01.2026 - Vormittag)
| Task |
Beschreibung |
| Neuigkeiten-Modul erweitert |
Blog-Post Integration |
| Popup Test-Modus |
Admins sehen Popup immer |
| Popup Scroll-Fix |
hidden-Attribut + CSS display:none |
| Module-Tab GUI |
Card-basiertes Layout mit Toggles |
| Datumsformat-Fix |
Monatsvergleich bei mehrtaegigen Kursen |
| Veranstalter Logo-Hintergrund |
Farbwaehler pro Veranstalter |
Zuletzt erledigt (21.01.2026)
| Task |
Beschreibung |
| MU-Plugins |
Security, Admin-Cleanup, Cookie Consent |
| CSS Optimierung |
Portal-Button Styles ausgelagert |
| Dead-Code-Analyse |
Backup-Dateien entfernt |
| Deposit-Felder Fix |
Anzahlung bei "Externe Rechnung" sichtbar |
MU-Plugins Uebersicht
| Plugin |
Funktion |
Settings |
hide-rodiar-options.php |
Rodiar Menu Items ausblenden |
Einstellungen → Menue ausblenden |
webideas24-security.php |
Security Hardening |
Automatisch aktiv |
cookieyes-banner.php |
Cookie Consent |
CookieYes Dashboard |
Pfad: mu-plugins/ im Plugin-Repo (zur Installation nach wp-content/mu-plugins/ kopieren)
OFFEN: Naechste Session
Prioritaet 1 - Sprint 66 Phase 2 (OPTIONAL)
Schrittweise Umstellung der Module auf zentrale Kurs_Booking_Billing_Decision:
- [ ] class-sevdesk-partial-invoice.php umstellen
- [ ] class-sevdesk.php umstellen
- [ ] class-sevdesk-parts.php umstellen
- [ ] class-sevdesk-bulk-sync.php umstellen
Hinweis: Alte Module funktionieren weiter! Umstellung nur bei Bedarf.
Prioritaet 2 - Server Security Update (Sprint 66)
| Task |
Beschreibung |
| Geplant |
Sonntag, 26.01.2026, 06:00 Uhr |
| Kernel-Update |
6.8.0-88 → 6.8.0-90 |
| Microcode |
Downfall (CVE-2022-40982) mitigieren |
| Downtime |
~3-5 Minuten |
Prioritaet 2 - CSS Optimierung
| Task |
Beschreibung |
| Rodiar Theme CSS |
~45 CSS-Dateien werden geladen |
| - Analyse |
Welche werden wirklich gebraucht? |
| - Optimierung |
Ungenutzte entfernen oder kombinieren |
| Elementor CSS |
~15 Widget-Styles einzeln geladen |
| - Option |
"CSS Print Method" auf "Internal Embedding" pruefen |
Prioritaet 3 - WARTE AUF KUNDE
| Task |
Beschreibung |
Status |
| Buchungen umordnen |
7 MEC-Buchungen falsch zugeordnet |
WARTE_AUF_ANTWORT |
| - Januar-Kurs |
ID 5397 - Individualtraining 1 (17.01.2026) |
Hat 0 Buchungen |
| - Mai-Kurs |
ID 5383 - Individualtraining 2 (17.05.2026) |
Hat 8 Buchungen |
| - Umzuordnen |
IDs: 5460, 5462, 5464, 5466, 5468, 5470, 5472 |
Zum Januar-Kurs |
Prioritaet 4 - Sonstiges
| Task |
Beschreibung |
| Vollbackup erstellen |
Plugin + DB (heute abgebrochen) |
| Slider Revolution Metabox |
Entfernen aus Buchungsdetail-Seite |
| Settings Migration |
5 Tabs verbleibend |
Dateien der Session (23.01.2026)
| Datei |
Aenderung |
help-service/content/sevdesk.md |
FAQ-Sektion hinzugefuegt |
includes/class-admin.php |
Billing-Spalte + Filter hinzugefuegt |
includes/class-sync-logger.php |
NEU - Zentrales Sync-Logging |
includes/class-sevdesk-settings.php |
Log-UI + Notification Settings |
includes/class-sevdesk-bulk-sync.php |
Logger-Integration |
includes/class-settings.php |
Neue Options registriert |
includes/class-test-kurse.php |
Label-Fix "Echte & Test-Kurse" |
Server-Aenderungen (Hetzner)
| Datei |
Aenderung |
/opt/islandpferde/docker-compose.wordpress.yaml |
Languages Volume hinzugefuegt |
/opt/islandpferde/entrypoint.d/20-install-languages.sh |
NEU - Auto-Install de_DE |
wp_languages_islandpferde |
Neues Docker Volume fuer Sprachdateien |
Dateien der Session (22.01.2026)
| Datei |
Aenderung |
includes/class-neuigkeit.php |
Blog-Integration + Popup-Fixes |
includes/class-module-registry.php |
Kategorie-Icons + Test-Modus Checkbox |
includes/class-module-renderer.php |
Card-Layout + Toggle-Switches |
includes/class-settings.php |
Save-Logik fuer popup_admin_test |
assets/css/popup.css |
NEU - Standalone Popup-Stylesheet |
templates/kurs-cards.php |
Datumsformat-Fix fuer monatsubergreifende Kurse |
assets/css/frontend.css |
Footer-Widget Fix + Datumsstempel ausblenden |
includes/settings/class-settings-tab-veranstalter.php |
Logo-Hintergrund Farbwaehler |
templates/single-kurs-details.php |
Dynamische Logo-Hintergrundfarbe |
includes/class-veranstalter.php |
logo_bg_color in sanitize_data() hinzugefuegt |
Quick Links
| Ressource |
URL |
| WordPress Admin |
https://islandpferde-melanieworbs.de/wp/wp-admin/ |
| Kundenportal |
https://portal.islandpferde-melanieworbs.de |
| Help-Service |
https://hilfe.islandpferde-melanieworbs.de |
| Gitea Plugin |
https://git.webideas24.com/webideas24/kurs-booking |
| Gitea Infra |
https://git.webideas24.com/webideas24/islandpferde-infrastructure |
| CookieYes |
https://app.cookieyes.com |
Server-Zugang
ssh -i ~/.ssh/hetzner_webideen joshko@144.76.167.158
Sudo-Passwort: N64u4>B*mzC9E?(h
Letztes Update: 24.01.2026 (Zoom-Integration Bestandsaufnahme + Customer Portal Theme-Fixes)