Files
kaffeekasse-saas/docs/m0/code-inventory.md
T
2026-07-11 22:24:22 +02:00

7.6 KiB

M0 Code- und Prozessinventar

Stand: 2026-07-11

Dieses Inventar basiert auf statischer Sichtung des Legacy-Codes im Repository. Das echte Datenbankschema muss noch mit schema-export.sql verifiziert werden.

App-Struktur

Datei Rolle Wichtige Beobachtung
config.php AD-/DB-Konfiguration Erstellt globale SQL-Server-Verbindung $conn
functions.php Auth-/User-Helper Liest $_SERVER['AUTH_USER'], inkludiert LDAP, prueft kl_Mitarbeiter
functionsLDAP.php LDAP-Mailauflösung Ermittelt $mailadress aus AD
header.php HTML-Head und Hinweisbanner Laedt assets/css/main.css, liest kl_hinweise
footer.php App-Sidebar und JS Enthaelt die sichtbare Navigation und Admin-Menues
nav.php Navigation Aktuell praktisch leer
headerline.php Headerfragment Enthaelt NUL-Zeichen, fachlich unklar
assets/css/main.css Hauptdesign HTML5-UP Editorial, gruener Akzent, Tabellen, Buttons, Sidebar
DataTables/ Tabellen-Assets Wird teilweise eingebunden, aber nicht konsequent initialisiert
PHPMailer/ Mailversand Fuer Rundmails/Jahresauswertung genutzt
TCPDF/ PDF-Export Fuer Kaffeelisten-Export genutzt

Fachliche Kernseiten

Datei Prozess Tabellen
index.php Persoenliches Dashboard, Saldo, Jahreswerte, eigene Striche, PayPal-Links kl_Mitarbeiter, kl_Einzahlungen, kl_Kaffeeverbrauch, kl_config
kaffeeliste.php Admin-Gesamtuebersicht mit Salden kl_Mitarbeiter, kl_Einzahlungen, kl_Kaffeeverbrauch
stricheintragen.php Sammelerfassung von Strichen kl_Mitarbeiter, kl_Kaffeeverbrauch, kl_config
einzahlung.php Sammelerfassung von Einzahlungen kl_Mitarbeiter, kl_Einzahlungen, kl_Kaffeeverbrauch
mitarbeiterverwalten.php Mitglieder anlegen, bearbeiten, aktivieren, deaktivieren kl_Mitarbeiter
namenanpassen.php Anzeigenamen aendern kl_Mitarbeiter
letzteneintraege.php Letzte Buchungen anzeigen und loeschen kl_Einzahlungen, kl_Kaffeeverbrauch, kl_Mitarbeiter
csvupload.php Zahlungs-CSV importieren kl_Mitarbeiter, kl_Einzahlungen
exportKaffeeliste.php PDF-/Listenexport kl_Mitarbeiter, kl_Kaffeeverbrauch, kl_Einzahlungen, kl_config
mailausgebe.php Mailausgabe/Adressliste kl_Mitarbeiter
mailversenden.php Massenmail mit aktuellem Stand kl_Mitarbeiter, kl_Einzahlungen, kl_Kaffeeverbrauch
hinweise.php Hinweise pflegen kl_hinweise
faq.php FAQ Keine fachlichen Schreibzugriffe
jahresauswertung.php Jahresgutschriften und Mailversand kl_Mitarbeiter, kl_Kaffeeverbrauch, kl_Einzahlungen
umfrage.php Umfrage CoffeeSurveyVotedEmails, CoffeeSurveyResponses
umfrageergebnisse.php Umfrageauswertung CoffeeSurveyVotedEmails, CoffeeSurveyResponses

Abgeleitete Tabellen und Spalten

Diese Spalten sind aus dem Code abgeleitet und muessen mit dem echten DB-Schema abgeglichen werden.

Tabelle Abgeleitete Spalten
kl_Mitarbeiter MitarbeiterID, Name, Email, aktiv, admin, paypalname
kl_Einzahlungen EinzahlungsID, MitarbeiterID, Betrag, Datum
kl_Kaffeeverbrauch VerbrauchID, MitarbeiterID, AnzahlStriche, Kosten, KostenproStrich, Datum, Eintragsart
kl_config KostenproStrich, paypaluse, paypallink, strichperweb
kl_hinweise id, nachricht, gueltig_bis
CoffeeSurveyVotedEmails EmailNorm
CoffeeSurveyResponses diverse Q*_-Antwortspalten, siehe Umfragecode

Prozesslandkarte

Authentifizierung

  1. Seite inkludiert functions.php.
  2. functions.php liest $_SERVER['AUTH_USER'].
  3. functionsLDAP.php ermittelt Mailadresse aus LDAP.
  4. Zugriff wird ueber kl_Mitarbeiter.Email, aktiv und admin geprueft.

M0-Feststellung: Login-Konto, Kaffee-Teilnehmer und Rolle sind im Legacy-Modell gekoppelt. Fuer SaaS muessen users, participants und tenant_memberships getrennt werden.

Persoenliches Dashboard

Quelle: index.php.

Berechnungen:

  • Mitarbeiter per E-Mail suchen.
  • Gesamteinzahlung: Summe kl_Einzahlungen.Betrag.
  • Gesamtausgabe: Summe kl_Kaffeeverbrauch.Kosten.
  • Gesamtstriche: Summe kl_Kaffeeverbrauch.AnzahlStriche.
  • Aktueller Stand: Einzahlungen minus Ausgaben.
  • Jahreswerte: dieselben Summen fuer aktuelles Jahr.
  • Bei aktivem strichperweb: eigener Strich-Eintrag.
  • Bei aktivem paypaluse: PayPal-Links anzeigen.

Sammelerfassung Striche

Quelle: stricheintragen.php.

Berechnungen:

  • Preis pro Strich aus kl_config.KostenproStrich.
  • Pro Mitarbeiter eine Anzahl erfassen.
  • Kosten = Anzahl Striche mal Kosten pro Strich.
  • Neue Zeile in kl_Kaffeeverbrauch.
  • Filter vorderseite/rueckseite anhand der letzten 100 Tage und mindestens 10 Strichen.

Sammelerfassung Einzahlungen

Quelle: einzahlung.php.

Berechnungen:

  • Pro Mitarbeiter Betrag erfassen.
  • Neue Zeile in kl_Einzahlungen.
  • Filter vorderseite/rueckseite anhand der letzten 100 Tage und mindestens 10 Strichen.

Mitgliederverwaltung

Quelle: mitarbeiterverwalten.php.

Aktionen:

  • Mitglied anlegen.
  • Name/E-Mail/aktiv/admin bearbeiten.
  • Mitglied aktivieren/deaktivieren.

M0-Feststellung: Das admin-Flag ist fachlich eine Rolleninformation und sollte in der SaaS-App in tenant_memberships.role wandern.

Korrektur letzter Eintraege

Quelle: letzteneintraege.php.

Aktionen:

  • Letzte 100 Einzahlungen anzeigen.
  • Einzahlung hart loeschen.
  • Letzte 100 Strich-Eintraege anzeigen.
  • Strich-Eintrag hart loeschen.

M0-Feststellung: Finanznahe Korrekturen sollten im Zielmodell nicht hart loeschen, sondern als Storno/Reversal mit Audit-Trail gespeichert werden.

CSV-Import

Quelle: csvupload.php.

Ablauf:

  • Datei hochladen.
  • CSV mit Komma-Trennung lesen.
  • Name aus Spalte 3, Betrag aus Spalte 7, Datum aus Spalte 0.
  • Mitarbeiter per Name oder paypalname finden.
  • Dublette anhand Mitarbeiter, Betrag und Datumstag pruefen.
  • Einzahlung einfuegen.
  • Ergebnis in Erfolg/Fehler klassifizieren.

Jahresauswertung

Quelle: jahresauswertung.php.

Ablauf:

  • Gesamtstriche des aktuellen Jahres je aktivem Mitarbeiter berechnen.
  • Konstante Anzahl neuer Striche/Gutschrift proportional verteilen.
  • Einzahlung je Mitarbeiter einfuegen.
  • Mail an Mitarbeiter senden.

M0-Feststellung: Das ist ein Job/Skript mit direktem Schreibzugriff und Mailversand. Fuer SaaS braucht es Dry-Run, Audit, Tenant-Scope und expliziten Operator.

Offene Schemafragen

  • Gibt es Primary Keys, Foreign Keys und Indizes fuer die kl_-Tabellen?
  • Sind Datentypen fuer Geldwerte decimal, money, float oder etwas anderes?
  • Gibt es historische Spalten, die im Code nicht sichtbar sind?
  • Gibt es Trigger oder Stored Procedures?
  • Gibt es weitere Jobs ausser jahresauswertung.php?
  • Sind Umfragetabellen produktiv relevant oder Archiv/Randmodul?

Technische Legacy-Inkonsistenzen

  • csvupload.php sucht in getMitarbeiterID nach Name = ? or paypalname = ?, uebergibt aber nur einen Parameter. Das sollte vor der Uebernahme des CSV-Flows verifiziert werden.
  • einzahlung.php prueft auf $_GET["action"], die Buttons erzeugen aber URLs mit aktion=.... Der Vorderseite-/Rueckseite-Filter kann dadurch abweichend vom erwarteten Verhalten laufen.
  • exportKaffeeliste.php referenziert tcpdf/tcpdf.php, waehrend der Ordner im Repository TCPDF/ heisst. Auf case-sensitiven Dateisystemen kann das brechen.
  • headerline.php ist fachlich leer beziehungsweise mit NUL-Zeichen gefuellt. Vor der neuen App-Shell sollte geklaert werden, ob die Datei entfernt werden kann.