-
Notifications
You must be signed in to change notification settings - Fork 0
Datenbankformat
Technische Dokumentation zum Datenbankformat von OpenSchichtplaner5.
📖 Der gesamte Datenbankzugriff ist in der eigenständigen Library libopenschichtplaner5 implementiert. Die ausführliche Format-Referenz (alle Tabellen und Felder) sowie das Kommandozeilenwerkzeug sind dort dokumentiert: Datenbankformat · CLI
OpenSchichtplaner5 verwendet das dBase/FoxPro-DBF-Format aus einem einfachen Grund: Kompatibilität mit dem originalen Schichtplaner5 der Firma RPS Planungssysteme GmbH.
Das Windows-Programm Schichtplaner5 speichert alle Daten in DBF-Dateien. OpenSchichtplaner5 liest und schreibt exakt dieselben Dateien — ohne Konvertierung, ohne Migration, ohne Datenverlust.
Vorteile:
- ✅ Bestehende SP5-Daten sofort nutzbar
- ✅ Parallelbetrieb möglich (beide Programme teilen dieselbe DB)
- ✅ Datei-basiert → einfache Backups (ZIP-Archiv reicht)
- ✅ Kein Datenbankserver nötig
Hinweis zu CDX-Indexdateien:
Jede .DBF-Datei hat eine zugehörige .CDX-Indexdatei. Diese darf niemals manuell verändert werden — der Index wird automatisch aktualisiert.
Speichert alle Mitarbeiter-Stammdaten.
| Feld | Typ | Beschreibung |
|---|---|---|
ID |
Numerisch | Primärschlüssel |
LASTNAME |
Text(30) | Nachname |
FIRSTNAME |
Text(20) | Vorname |
SHORTNAME |
Text(4) | Kürzel |
PERSNR |
Text(15) | Personalnummer |
GROUPID |
Numerisch | FK → 5GROUP |
HOURDAY |
Dezimal | Stunden/Tag |
HOURWEEK |
Dezimal | Stunden/Woche |
WORKDAYS |
Numerisch | Arbeitstage/Woche |
VACDAYS |
Numerisch | Urlaubsanspruch/Jahr |
COLOR1 |
Text(9) | Label-Farbe (Hex) |
COLOR2 |
Text(9) | Hintergrundfarbe (Hex) |
ENTRYDATE |
Datum | Eintrittsdatum |
EXITDATE |
Datum | Austrittsdatum |
ACTIVE |
Logisch | Aktiv-Flag |
Hierarchische Gruppenstruktur.
| Feld | Typ | Beschreibung |
|---|---|---|
ID |
Numerisch | Primärschlüssel |
NAME |
Text(40) | Gruppenname |
PARENTID |
Numerisch | Übergruppe (FK → 5GROUP) |
SORTORDER |
Numerisch | Sortierreihenfolge |
Definition aller Schichttypen.
| Feld | Typ | Beschreibung |
|---|---|---|
ID |
Numerisch | Primärschlüssel |
NAME |
Text(30) | Schichtname |
SHORTNAME |
Text(3) | Kürzel |
COLORBACK |
Text(9) | Hintergrundfarbe |
COLORTEXT |
Text(9) | Textfarbe |
TIMEFROM_* |
Zeit | Startzeit pro Wochentag (MO–SO+FT) |
TIMETO_* |
Zeit | Endzeit pro Wochentag |
PAUSE_* |
Numerisch | Pausenminuten pro Wochentag |
Alle manuell eingetragenen Schichten im Dienstplan.
| Feld | Typ | Beschreibung |
|---|---|---|
ID |
Numerisch | Primärschlüssel |
EMPID |
Numerisch | FK → 5EMPL |
SHIFTID |
Numerisch | FK → 5SHIFT |
DATE |
Datum | Datum des Eintrags |
TIMEFROM |
Zeit | Tatsächliche Startzeit |
TIMETO |
Zeit | Tatsächliche Endzeit |
WPLACEID |
Numerisch | FK → 5WOPL (Arbeitsplatz) |
NOTE |
Text(80) | Notiz |
Alle eingetragenen Abwesenheiten.
| Feld | Typ | Beschreibung |
|---|---|---|
ID |
Numerisch | Primärschlüssel |
EMPID |
Numerisch | FK → 5EMPL |
LTYPEID |
Numerisch | FK → 5LEAVT |
DATE |
Datum | Datum |
NOTE |
Text(80) | Begründung |
Konfiguration der Abwesenheits-Typen.
| Feld | Typ | Beschreibung |
|---|---|---|
ID |
Numerisch | Primärschlüssel |
NAME |
Text(30) | Name (z. B. „Urlaub") |
SHORTNAME |
Text(3) | Kürzel |
COLOR |
Text(9) | Farbe |
VACATION |
Logisch | Urlaubsanspruch abziehen? |
Urlaubsansprüche pro Mitarbeiter und Jahr.
| Feld | Typ | Beschreibung |
|---|---|---|
EMPID |
Numerisch | FK → 5EMPL |
YEAR |
Numerisch | Jahr |
DAYS |
Dezimal | Anspruch in Tagen |
CARRYOVER |
Dezimal | Übertrag aus Vorjahr |
Manuelle Zeitkonto-Buchungen.
| Feld | Typ | Beschreibung |
|---|---|---|
ID |
Numerisch | Primärschlüssel |
EMPID |
Numerisch | FK → 5EMPL |
DATE |
Datum | Buchungsdatum |
HOURS |
Dezimal | Stunden (+/−) |
TEXT |
Text(60) | Buchungstext |
| Feld | Typ | Beschreibung |
|---|---|---|
ID |
Numerisch | Primärschlüssel |
NAME |
Text(40) | Name des Feiertags |
DATE |
Datum | Datum |
YEARLY |
Logisch | Jährlich wiederkehrend? |
Gesperrte Zeiträume (Perioden).
| Feld | Typ | Beschreibung |
|---|---|---|
ID |
Numerisch | Primärschlüssel |
NAME |
Text(40) | Bezeichnung |
DATEFROM |
Datum | Beginn |
DATETO |
Datum | Ende |
GROUPID |
Numerisch | Betroffene Gruppe (0 = alle) |
5CYCLE — Zyklus-Definition (Name, Länge in Tagen)
5CYENT — Zyklus-Einträge (Tag-Nummer → Schichtart)
5CYASS — Zyklus-Zuweisung (Mitarbeiter → Zyklus + Startdatum)
5CYEXC — Zyklus-Ausnahmen (manuelle Abweichungen vom Zyklus)
| Feld | Typ | Beschreibung |
|---|---|---|
EMPID |
Numerisch | FK → 5EMPL |
SHIFTID |
Numerisch | FK → 5SHIFT |
STATUS |
Text(1) |
A=Erlaubt, R=Anfrage, N=Verboten |
| Feld | Typ | Beschreibung |
|---|---|---|
ID |
Numerisch | Primärschlüssel |
NAME |
Text(40) | Bezeichnung |
DESC |
Text(80) | Beschreibung |
| Feld | Typ | Beschreibung |
|---|---|---|
ID |
Numerisch | Primärschlüssel |
NAME |
Text(40) | Name des Zuschlags |
TIMEFROM |
Zeit | Beginn |
TIMETO |
Zeit | Ende |
PERCENT |
Dezimal | Zuschlagsprozent |
DAYS |
Text(7) | Gilt an welchen Wochentagen (Bitfeld) |
HOLIDAYS |
Logisch | Gilt auch an Feiertagen |
| Feld | Typ | Beschreibung |
|---|---|---|
ID |
Numerisch | Primärschlüssel |
USERNAME |
Text(30) | Login-Name |
PASSHASH |
Text(64) | Passwort-Hash (bcrypt) |
FULLNAME |
Text(60) | Anzeigename |
ROLE |
Text(10) |
admin oder user
|
ACTIVE |
Logisch | Aktiv-Flag |
Key-Value-Tabelle für benutzerspezifische Einstellungen (z. B. letzter gewählter Monat, Ansichts-Präferenzen).
Für Umgebungen ohne SP5-DBF-Daten steht ein SQLite-Modus zur Verfügung:
export SP5_MODE=sqliteIm SQLite-Modus wird eine leere sp5_demo.sqlite-Datei angelegt. Alle Tabellen haben dieselbe Struktur wie die DBF-Entsprechungen.
Geeignet für:
- Demo-Installationen
- Cloud-Deployments ohne Zugriff auf originale DBF-Dateien
- Entwicklung und Tests
Einschränkung: SQLite-Daten sind nicht kompatibel mit dem Original-Schichtplaner5 Windows-Programm.
| Datei | Beschreibt den Index für |
|---|---|
5EMPL.CDX |
Mitarbeiter (nach ID, Name) |
5MASHI.CDX |
Dienstplan (nach Datum, MA) |
5ABSEN.CDX |
Abwesenheiten (nach Datum) |
| … | … |
⚠️ CDX-Dateien werden automatisch aktualisiert. Nicht manuell bearbeiten, umbenennen oder löschen!
- Library-Wiki: Datenbankformat — vollständige Tabellen-/Feld-Referenz
- Library-Wiki: CLI — DBF-Daten auf der Kommandozeile inspizieren und exportieren
- ORM-Spiegel — schreibgeschützte ORM-Projektion der DBF-Daten
Zurück: Home — Wiki-Startseite
Home — Startseite
- Installation — Installation & Setup
- Erste-Schritte — Quick Start Guide
- Onboarding-Wizard — 🧭 Ersteinrichtung
- Onboarding-Checkliste — ✅ Setup-Fortschritt
- Dashboard — Charts, Widgets & Performance
- Dienstplan — Dienstplan, Einsatzplan
- Kalender-Ansicht — 🗓️ Monatskalender
- Drag-and-Drop — 🖱️ Drag & Drop im Kalender
- Recurring-Shifts — 🔁 Wiederkehrende Schichten
- Schichtplan-Kommentare — 📝 Tagesnotizen
- Dienstplan-Vorlagen — 📋 Templates
- Undo-Redo — ↩️ Rückgängig/Wiederherstellen
- Jahresuebersicht — Jahresübersicht (Tagesraster)
- Personaltabelle — 📋 Kennzahlen-Auswertung
- Personalbedarf — 📌 Min/Max & Besetzungsampel
- Schichtwunsch-Kalender — 💬 Persönlicher Schichtkalender
- Schichtwuensche — Schichtwünsche & Sperrtage
- Verfuegbarkeit — 📅 Mitarbeiter-Verfügbarkeit
- Tauschboerse — 🔄 Schicht-Tauschbörse
- Urlaubsverwaltung — Urlaub & Abwesenheiten
- Jahresabschluss — 🎯 Überträge & Resturlaub-Verfall
- Ueberstunden — Überstunden-Dashboard & Tracking
- Arbeitszeit-Regelwerk — ⚖️ Arbeitszeitregeln
- Team-Kalender — 🗓️ Team-Kalender
- Team-Uebersicht — 👥 Team-Übersicht
- Berichte — Alle Berichte (20+)
- Scheduled-Reports — 📤 Automatische Berichte
-
Konflikt-Report —
⚠️ Konflikterkennung - Abwesenheits-Statistiken — 📊 Abwesenheitsauswertung
- Mitarbeiter-Timeline — 📅 Zeitachse
- Fairness-Score — 📐 Fairness-Score
- Mitarbeiter-Vergleich — ⚖️ Mitarbeiter-Vergleich
- Analytics-Charts — 📈 Analytics & Charts
- Jahresrueckblick — 🗓️ Jahresrückblick
- Import-Export — CSV/XLSX Import & Export
- Bulk-Import — 📦 Massenimport (Drag&Drop)
- Export-Scheduler — 📅 Automatischer Berichtsversand
- iCal-Export — 📅 iCal & Kalender-Abo
- Drucken — Drucken & PDF-Export
- Druckvorschau — Interaktive Print-Vorschau
- Mitarbeiter — Personal & Gruppen
- Foto-Upload — 📸 Mitarbeiter-Profilfotos
- Stammdaten — Schichten, Modelle, Zuschläge
- Feiertage — 🎉 Feiertage & Österreich-Import
- Kompetenz-Matrix — 📊 Qualifikations-Matrix
- API-Versionierung — 🔀 Versionierte API-Routes
- Webhook-System — 🔗 Webhooks
- Echtzeit-Updates — 📡 SSE Live-Updates
- Notification-Settings — 🔔 E-Mail-Einstellungen
- Multi-Tenant — 🏢 Mandantenverwaltung
- Benutzerverwaltung — Benutzer & Rechte
- Zwei-Faktor-Authentifizierung — 🔐 2FA (TOTP)
- Administration — Backup & Wartung
- Datenbank-Backup — 💾 Backup & Restore
- Rate-Limit-Dashboard — 🚦 Rate-Limit Monitoring
- Protokoll — Aktivitätsprotokoll
- Keyboard-Shortcuts — ⌨️ Tastaturkürzel
- Keyboard-Navigation — ⌨️ Vollständige Tastatur-Bedienbarkeit
- Security — 🔒 Sicherheit, CSP, CORS
- Health-Check — 🏥 Systemmetriken
- Konfiguration — ⚙️ ENV-Variablen
- PostgreSQL-Support — 🐘 PostgreSQL-Datenbank
- Auto-Migration — 🔄 Auto-Schema-Migration
- Datenbankformat — Technisches: DBF & SQLite
- ORM-Spiegel — 🪞 ORM-Spiegel (Admin)
- Error-Monitoring — 🔍 Logging & Monitoring
- Self-Service-Portal — 👤 Mitarbeiter Self-Service
- Dark-Mode — 🌙 Dark Mode (System-Preference)
- Command-Palette — 🔍 Schnellsuche (Ctrl+K)
- In-App-Changelog — 🔔 Changelog
- PWA — 📲 Progressive Web App
- Sprachumschalter — 🌍 DE/EN i18n
- Library (lib) — Datenbankformat & CLI
- REST-API — Endpunkt-Referenz