Naechste Session

Aktuelle Aufgaben und naechste Schritte

Session Aufgaben Aktuell Todo

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

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)

Verwandte Themen