M0 Einrichtung
This commit is contained in:
@@ -0,0 +1,192 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user