Zum Inhalt

Datenmodell

calServer verwendet eine MySQL-Datenbank mit mandantenfaehiger Struktur. Die Datenbanktrennung erfolgt pro Mandant auf Datenbankebene -- jeder Mandant arbeitet mit einer eigenen Datenbankinstanz. Dieser Abschnitt beschreibt die zentralen Entitaeten und ihre Beziehungen.

Inventar (Inventory)

Die Inventartabelle ist die zentrale Entitaet. Sie speichert alle Prüf- und Messmittel.

Aspekt Beschreibung
Modell FrontendInventory
Primaerschluessel Inventar-ID
Felder Dynamisch konfigurierbar ueber die Feldverwaltung (I-Serie: I4201 bis I4262)
Beziehungen 1:n zu Kalibrierungen, Wartungen, Buchungen, DMS-Dokumenten
Kategorien Zuordnung ueber FrontendCategory / FrontendCategoryItem
Typen Geraetetypen ueber FrontendTypes
Hierarchie Eltern-Kind-Beziehungen ueber ein path-Feld

Die Felder I4201 bis I4262 werden zur Laufzeit ueber die Feldkonfiguration (field_configuration) mit Bezeichnungen, Typen und Validierungsregeln versehen. Siehe Feldkonstanten fuer die Verwendung als Platzhalter.

Kalibrierungen (Calibrations)

Kalibriervorgaenge sind mit dem Inventar verknuepft und enthalten Messergebnisse.

Aspekt Beschreibung
Modell FrontendCalibration
Felder Dynamisch konfigurierbar (C-Serie: C2301 bis C2396)
Beziehungen n:1 zu Inventar, 1:n zu Ergebnissen (FrontendResults), n:m zu Standards (FrontendStandards)
Ergebnisse FrontendResults / FrontendResultsRaw -- Messwerte und Rohdaten
Prozeduren FrontendProcedure -- Kalibrierverfahren mit Schritten (FrontendTestStep)
Prozedurvorlagen FrontendProcedureTemplate -- Wiederverwendbare Vorlagen

Kunden (Customers)

Aspekt Beschreibung
Modell FrontendCustomer / FrontendContact
Beschreibung Kundenstammdaten mit Ansprechpartnern
Beziehungen 1:n zu Inventaren (Kundengeraete), 1:n zu Auftraegen

Auftraege (Orders/Bookings)

Aspekt Beschreibung
Modell FrontendBooking
Beschreibung Kalibrierauftraege mit Statusverfolgung
Artikel FrontendArticle / FrontendStandardArticle -- Auftragspositionen und Artikelstamm
Preise FrontendPrices / FrontendPriceCategory -- Preislisten und Preisgruppen

Wartung und Reparaturen

Aspekt Beschreibung
Modell FrontendRepair
Beschreibung Wartungs- und Reparaturvorgaenge fuer Inventargegenstaende
Kategorien Eigene Kategorienzuordnung

Leihmessmittel (Rentals)

Aspekt Beschreibung
Modell FrontendBooking (Typ: Leihe)
Standorte FrontendLocation -- Standortverwaltung fuer Leihgeraete

Dokumentenmanagement (DMS)

Aspekt Beschreibung
Modell FrontendDms / FrontendInbox
Beschreibung Versionierte Dokumentenverwaltung mit Eingangsordner
Speicherung Lokales Dateisystem, FTP, SFTP oder DigitalOcean Spaces
Verknuepfung Dokumente werden mit Inventaren, Kalibrierungen oder Auftraegen verknuepft

Benutzer und Rechte

Aspekt Beschreibung
Modell FrontendUser / FrontendProfile
API-Schluessel FrontendUserKey -- Authentifizierungsschluessel fuer die REST-API
RBAC Datenbankbasierte Rechteverwaltung ueber KCDbAuthManager mit Rollen und Operationen
Gruppen Benutzergruppen und Freigabegruppen fuer Datenzugriffsteuerung
Audit FrontendAudit / FrontendPasswordAudit -- Protokollierung von Aenderungen und Passwortverlauf

Status

Aspekt Beschreibung
Modell FrontendStatus / FrontendMapStatus
Beschreibung Konfigurierbares Statussystem fuer Inventare, Kalibrierungen, Buchungen, Reparaturen, Standorte und Support-Tickets
Statustypen Definiert in constants.php: inventory, calibration, booking, notepad, repair, location, support_tickets
Automatisierung Regelbasierte Statusaenderungen ueber den status-CLI-Befehl

Feldkonfiguration

Aspekt Beschreibung
Tabelle field_configuration
Beschreibung Dynamische Felddefinition fuer Inventar- und Kalibrierfelder
Feldtypen Text (diverse Laengen), TextArea, YesNo, Tags, Parameter, Date, Time, DateTime, Decimal, Integer, Link, HtmlEditor, CounterField, AverageValue
Kategorien RequiredDatabase, RequiredList, PickDatabase, PickList, StatusDatabase

Die Feldkonfiguration erlaubt es Administratoren, die Datenstruktur ohne Codeaenderungen an die Anforderungen ihres Labors anzupassen.

Berichte und Zertifikate

Aspekt Beschreibung
Vorlagen JasperReports-Vorlagen (.jrxml) unter httpdocs/reports/
Verzeichnisse calibrations, inventories, orders, locations, email_sender, individual_delivery, information
DCC Digitale Kalibrierscheine werden aus Kalibrierdaten als XML erzeugt (siehe DCC-Export)

E-Mail-System

Aspekt Beschreibung
Konfiguration Mailer-Aktionen mit Intervallen (Tag, Woche, Monat, Jahr)
Vorlagen Konfigurierbare E-Mail-Vorlagen mit Platzhaltern ([EMAIL], [NAME], [DOMAIN] u. a.)
Warteschlange Zweistufig: mailer erzeugt Eintraege, sendemailqueue versendet

Weitere Entitaeten

Entitaet Modell Beschreibung
Aufgaben FrontendNotepad / FrontendNotepadResource Aufgabenverwaltung mit Ressourcenzuordnung
Physikalische Groessen FrontendPhysicalQuantity Physikalische Groessen und SI-Praefixe (FrontendSiPrefix)
Spezifikationen FrontendSpecification / FrontendSpecificationDetail Spezifikationen fuer Geraetetypen
Qualitaetspruefungen FrontendQualityProvision / FrontendQualityProvisionDetail Qualitaetssicherungsverfahren
Unterschriften FrontendSignature Digitale Unterschriften
Statistiken FrontendFilterStatistic Gespeicherte Filterstatistiken
Synchronisation FrontendInventorySync / FrontendMssqlSyncLog Datensynchronisation mit externen Systemen
Cookies FrontendCookieCategory / FrontendCookieItem Cookie-Consent-Verwaltung
Anmeldesicherheit FrontendLoginSecurity Fehlgeschlagene Anmeldeversuche und Sperren

Migrationen

Datenbankschema-Aenderungen werden ueber Yii-Migrationen verwaltet (httpdocs/protected/migrations/). Der Migrationsbefehl lautet:

./yiic migrate

Die Migrationsdateien folgen dem Namensmuster mYYMMDD_HHMMSS_beschreibung.php.