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, prüft kl_Mitarbeiter |
functionsLDAP.php |
LDAP-Mailauflösung | Ermittelt $mailadress aus AD |
header.php |
HTML-Head und Hinweisbanner | Lädt assets/css/main.css, liest kl_hinweise |
footer.php |
App-Sidebar und JS | Enthält die sichtbare Navigation und Admin-Menüs |
nav.php |
Navigation | Aktuell praktisch leer |
headerline.php |
Headerfragment | Enthält NUL-Zeichen, fachlich unklar |
assets/css/main.css |
Hauptdesign | HTML5-UP Editorial, grüner Akzent, Tabellen, Buttons, Sidebar |
DataTables/ |
Tabellen-Assets | Wird teilweise eingebunden, aber nicht konsequent initialisiert |
PHPMailer/ |
Mailversand | Für Rundmails/Jahresauswertung genutzt |
TCPDF/ |
PDF-Export | Für Kaffeelisten-Export genutzt |
Fachliche Kernseiten
| Datei | Prozess | Tabellen |
|---|---|---|
index.php |
Persönliches Dashboard, Saldo, Jahreswerte, eigene Striche, PayPal-Links | kl_Mitarbeiter, kl_Einzahlungen, kl_Kaffeeverbrauch, kl_config |
kaffeeliste.php |
Admin-Gesamtübersicht 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 ändern | kl_Mitarbeiter |
letzteneintraege.php |
Letzte Buchungen anzeigen und löschen | 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 müssen 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
- Seite inkludiert
functions.php. functions.phpliest$_SERVER['AUTH_USER'].functionsLDAP.phpermittelt Mailadresse aus LDAP.- Zugriff wird über
kl_Mitarbeiter.Email,aktivundadmingeprüft.
M0-Feststellung:
Login-Konto, Kaffee-Teilnehmer und Rolle sind im Legacy-Modell gekoppelt. Für
SaaS müssen users, participants und tenant_memberships getrennt werden.
Persönliches 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 für 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/rueckseiteanhand 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/rueckseiteanhand 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 Einträge
Quelle: letzteneintraege.php.
Aktionen:
- Letzte 100 Einzahlungen anzeigen.
- Einzahlung hart löschen.
- Letzte 100 Strich-Einträge anzeigen.
- Strich-Eintrag hart löschen.
M0-Feststellung: Finanznahe Korrekturen sollten im Zielmodell nicht hart löschen, 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
paypalnamefinden. - Dublette anhand Mitarbeiter, Betrag und Datumstag prüfen.
- Einzahlung einfügen.
- 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 einfügen.
- Mail an Mitarbeiter senden.
M0-Feststellung: Das ist ein Job/Skript mit direktem Schreibzugriff und Mailversand. Für SaaS braucht es Dry-Run, Audit, Tenant-Scope und expliziten Operator.
Offene Schemafragen
- Gibt es Primary Keys, Foreign Keys und Indizes für die
kl_-Tabellen? - Sind Datentypen für Geldwerte
decimal,money,floatoder etwas anderes? - Gibt es historische Spalten, die im Code nicht sichtbar sind?
- Gibt es Trigger oder Stored Procedures?
- Gibt es weitere Jobs außer
jahresauswertung.php? - Sind Umfragetabellen produktiv relevant oder Archiv/Randmodul?
Technische Legacy-Inkonsistenzen
csvupload.phpsucht ingetMitarbeiterIDnachName = ? or paypalname = ?, übergibt aber nur einen Parameter. Das sollte vor der Übernahme des CSV-Flows verifiziert werden.einzahlung.phpprüft auf$_GET["action"], die Buttons erzeugen aber URLs mitaktion=.... Der Vorderseite-/Rückseite-Filter kann dadurch abweichend vom erwarteten Verhalten laufen.exportKaffeeliste.phpreferenzierttcpdf/tcpdf.php, während der Ordner im RepositoryTCPDF/heißt. Auf case-sensitiven Dateisystemen kann das brechen.headerline.phpist fachlich leer beziehungsweise mit NUL-Zeichen gefüllt. Vor der neuen App-Shell sollte geklärt werden, ob die Datei entfernt werden kann.