Qmatrix
Qualifikationsmatrix, Schulungs- und Unterweisungsmanagement als Frappe-16-App: Kompetenzmatrix mit Lückenanalyse, Schulungsplanung mit Kosten, Unterweisungen mit digitaler Unterschrift, Mitarbeiter-Portal und Kiosk als Vue-SPA, mehrsprachig über DeepL.
- Author: saschafo
- Repository: https://github.com/saschafo/qmatrix
- GitHub stars: 0
- Forks: 0
- License: MIT
- Category: Developer Tools
- Maintenance: Actively Maintained
Install Qmatrix
bench get-app https://github.com/saschafo/qmatrix
Tags
- arbeitssicherheit
- deepl
- frappe
- frappe-app
- frappe-framework
- german
- kompetenzmanagement
- mitarbeiterportal
- qualifikationsmatrix
- schulungsverwaltung
- skill-matrix
- training-management
- unterweisungen
- vue
Add the Frappe Gems badge to your README
Maintain Qmatrix? Paste this into your README:
[](https://frappegems.com/gems/apps/saschafo/qmatrix)
About Qmatrix
# Q-Matrix
Qualifikationsmatrix, Schulungsverwaltung und Unterweisungen für Frappe
Framework 16 — mit mehrsprachiger Belegschaft im Blick.
Die App bildet ab, **wer was kann**, **wer welche Schulung braucht** und **wer
welche Unterweisung wann bestätigt hat** — inklusive rechtssicherer digitaler
Unterschrift und automatischer Wiedervorlage.
---
## Funktionen
| Bereich | Was es tut |
|---|---|
| **Q-Matrix** | Qualifikationsmatrix über alle Mitarbeiter und Kompetenzen, mit Soll-Ist-Abgleich und Lückenanalyse |
| **Schulungen** | Katalog, Anbieter, Kosten, Kapazitäten, Termine, Teilnehmer |
| **Schulungskalender** | Terminübersicht aller Schulungsveranstaltungen |
| **Schulungskosten** | Auswertung nach Monat und Abteilung, Simulation künftiger Wiederholungskosten |
| **Unterweisungen** | Pflichtunterweisungen verteilen, Fristen überwachen, Nachweise sammeln |
| **Unterweisungen-Matrix** | Wer hat was bestätigt — auf einen Blick |
| **Wiederholungs-Automatik** | Erzeugt fällige Zuweisungen selbstständig, täglich per Scheduler |
| **Mitarbeiter-Portal** | Eigene Schulungen, Unterweisungen und Kompetenzen für Beschäftigte |
| **Schulungs-Kiosk** | Tablet-Ansicht für die Fertigung, mit Passwortschutz vor der Bestätigung |
| **Digitale Unterschrift** | Unterschriften-Pad mit Passwort-Verifizierung |
| **DeepL-Übersetzung** | Übersetzt Schulungen und Unterweisungen samt Dokumenten in die Sprachen der Belegschaft |
Eine ausführliche Beschreibung aller Masken steht in
[`qmatrix_dokumentation.md`](qmatrix_dokumentation.md).
---
## Screenshots
### Q-Matrix — wer kann was

Kompetenzmatrix über alle Beschäftigten, farbcodiert nach Stufe, mit
Lückenanalyse je Mitarbeiter.
### Schulungskosten — Plan gegen Ist

### Unterweisungen im Blick
| Übersicht | Dashboard |
|---|---|
|  |  |
### Mehrsprachigkeit
Das Mitarbeiter-Portal zeigt jedem Beschäftigten die freigegebene Fassung in
seiner Sprache — hier ein türkischsprachiger Staplerfahrer, der die
Betriebsanweisung als „Forklift Kullanım Kılavuzu" erhält.
### Einrichtung
| DeepL-Übersetzung | Demodaten |
|---|---|
|  |  |
Weitere Ansichten: [Schulungskalender](docs/screenshots/05-kalender.png)
---
## Installation
Am einfachsten über das fertige Docker-Setup — dort genügt ein Befehl und es
muss weder Python noch Node noch bench auf dem Rechner installiert sein.
Klassisch mit [bench](https://github.com/frappe/bench):
```bash
cd $PATH_TO_YOUR_BENCH
bench get-app https://github.com/saschafo/qmatrix --branch main
bench --site install-app qmatrix
```
Nach der Installation den Scheduler aktivieren — die Wiederholungs-Automatik
und die Fristenüberwachung hängen daran:
```bash
bench --site enable-scheduler
```
### Demodaten
Zum Ausprobieren gibt es in der App unter **Einstellungen → Demodaten** eine
Schaltfläche, die einen vollständigen Beispielbetrieb anlegt und ihn genauso
wieder entfernt. Angelegt werden Abteilungen, Mitarbeiter, Kompetenzen,
Schulungsanbieter, Schulungen, ein Jahres-Schulungsplan mit Kosten,
Veranstaltungen und Unterweisungen.
Sämtliche Termine gehen vom heutigen Datum aus, der Schulungsplan läuft immer
im laufenden Jahr. Damit sind Kosten- und Kalenderauswertungen unabhängig davon
gefüllt, wann die App gestartet wird.
Die acht Demo-Mitarbeiter bekommen einen **Portalzugang**, zwei davon mit
anderer Sprache (Türkisch, Polnisch) — damit lässt sich die Mehrsprachigkeit
sofort vorführen, ganz ohne DeepL-Zugang. Zugangsdaten und ein Rundgang stehen
in [`DEMO.md`](DEMO.md).
Beim Entfernen wird ausschließlich gelöscht, was beim Installieren angelegt
wurde — protokolliert im DocType `Demodaten`, einschließlich der Benutzerkonten.
Datensätze, die schon vorher existierten, bleiben unangetastet.
Auch per Kommandozeile möglich:
```bash
bench --site execute qmatrix.demo.installieren
bench --site execute qmatrix.demo.entfernen
```
---
## Mehrsprachigkeit mit DeepL
Schulungen und Unterweisungen lassen sich automatisch in die Sprachen der
Belegschaft übersetzen. Portal und Kiosk zeigen jedem Beschäftigten dann die
Fassung in seiner Sprache — gesteuert über das Feld **Bevorzugte Sprache** am
Mitarbeiter.
### Einrichten
> **Datenschutz zuerst.** Beim Übersetzen werden die Inhalte an DeepL
> übertragen. Der **Free-Tarif** untersagt laut DeepL-Nutzungsbedingungen die
> Verarbeitung **personenbezogener Daten** und DeepL behält sich vor,
> übermittelte Inhalte **dauerhaft zu speichern**. Unterweisungen enthalten
> häufig Namen, Abteilungen oder Personalnummern — sobald das zutrifft, ist der
> Free-Tarif vertraglich nicht zulässig und es wird der **Pro-Tarif mit
> Auftragsverarbeitungsvertrag (AVV)** benötigt. Der Free-Tarif eignet sich zum
> Ausprobieren mit Inhalten ohne jeden Personenbezug.
> Quellen: [DeepL Nutzungsbedingungen](https://www.deepl.com/pro-license) ·
> [Datenschutzerklärung](https://www.deepl.com/privacy). Das ersetzt keine
> Rechtsberatung.
1. Auf [deepl.com/pro-api](https://www.deepl.com/pro-api) einen API-Key
erstellen — für den Regelbetrieb den **Pro-Tarif**.
2. Im Menü **Q-Matrix → Einstellungen → DeepL Übersetzung** den API-Key
eintragen und speichern.
3. Auf **Verbindung testen** klicken. Es muss eine grüne Erfolgsmeldung mit
Tarif und verbrauchtem Kontingent erscheinen. Dabei wird auch die aktuelle
Sprachliste von DeepL geladen.
4. Den **Datenschutzhinweis** bestätigen — ohne diesen Haken startet keine
Übersetzung.
5. Unter **Sprachen der Belegschaft** die Sprachen eintragen, die im Betrieb
gesprochen werden. Diese sind später vorausgewählt.
Ob Free- oder Pro-Tarif verwendet wird, erkennt die App am Schlüssel selbst
(Free-Keys enden auf `:fx`) und weist bei Free ausdrücklich darauf hin.
Der Key wird verschlüsselt gespeichert und nie im Klartext angezeigt.
### Sprachcodes
Die Auswahl kommt direkt von DeepL und wird beim Verbindungstest aufgefrischt.
DeepL unterscheidet dabei streng zwischen Quell- und Zielsprache:
| | Als Ausgangssprache | Als Zielsprache |
|---|---|---|
| Englisch | `EN` | `EN-GB`, `EN-US` |
| Portugiesisch | `PT` | `PT-PT`, `PT-BR` |
Die Auswahlfelder filtern entsprechend, sodass keine ungültige Kombination
entstehen kann. Die Sprache eines Mitarbeiters muss eine **Zielsprache** sein.
### Übersetzen
In einer Schulung oder Unterweisung auf **Aktionen → 🌐 Mit DeepL übersetzen**
klicken, die Zielsprachen ankreuzen, starten. Der Lauf passiert im Hintergrund;
sobald er fertig ist, erscheint eine Meldung und das Formular lädt sich neu.
Übersetzt werden:
| | Schulung | Unterweisung |
|---|---|---|
| Titel | ✓ | ✓ |
| Beschreibung | ✓ (mit Formatierung) | ✓ |
| Zielgruppe | ✓ | — |
| PDF-Dokument | — | ✓ layoutgetreu |
| Quelldokument (DOCX/PPTX) | — | ✓ layoutgetreu |
Die Ergebnisse landen als **Sprachversion** am Dokument und stehen zunächst auf
**Entwurf**. Erst wenn eine Sprachversion auf **Freigegeben** gesetzt wird,
zeigen Portal und Kiosk sie den Beschäftigten an — die maschinelle Übersetzung
kann also vorher geprüft und korrigiert werden.
Eine erneute Übersetzung derselben Sprache aktualisiert die vorhandene
Sprachversion, statt eine zweite anzulegen.
---
## Mitwirken
Diese App nutzt `pre-commit` für Formatierung und Linting:
```bash
cd apps/qmatrix
pre-commit install
```
Eingesetzt werden ruff, eslint, prettier und pyupgrade.
---
## Lizenz
MIT — siehe [`license.txt`](license.txt).
## Autor
**Sascha Böhm Software & App**, Inhaber Sascha Böhm
Hohenschwärz 66, 91322 Gräfenberg, Deutschland
USt-IdNr. DE337811439
· +49 151 155 20 344
·
[Impressum](https://website.industrie-4-0.org/impressum/)
Das Mitarbeiter-Portal zeigt jedem Beschäftigten die freigegebene Fassung in
seiner Sprache — hier ein türkischsprachiger Staplerfahrer, der die
Betriebsanweisung als „Forklift Kullanım Kılavuzu" erhält.
### Einrichtung
| DeepL-Übersetzung | Demodaten |
|---|---|
|  |  |
Weitere Ansichten: [Schulungskalender](docs/screenshots/05-kalender.png)
---
## Installation
Am einfachsten über das fertige Docker-Setup — dort genügt ein Befehl und es
muss weder Python noch Node noch bench auf dem Rechner installiert sein.
Klassisch mit [bench](https://github.com/frappe/bench):
```bash
cd $PATH_TO_YOUR_BENCH
bench get-app https://github.com/saschafo/qmatrix --branch main
bench --site install-app qmatrix
```
Nach der Installation den Scheduler aktivieren — die Wiederholungs-Automatik
und die Fristenüberwachung hängen daran:
```bash
bench --site enable-scheduler
```
### Demodaten
Zum Ausprobieren gibt es in der App unter **Einstellungen → Demodaten** eine
Schaltfläche, die einen vollständigen Beispielbetrieb anlegt und ihn genauso
wieder entfernt. Angelegt werden Abteilungen, Mitarbeiter, Kompetenzen,
Schulungsanbieter, Schulungen, ein Jahres-Schulungsplan mit Kosten,
Veranstaltungen und Unterweisungen.
Sämtliche Termine gehen vom heutigen Datum aus, der Schulungsplan läuft immer
im laufenden Jahr. Damit sind Kosten- und Kalenderauswertungen unabhängig davon
gefüllt, wann die App gestartet wird.
Die acht Demo-Mitarbeiter bekommen einen **Portalzugang**, zwei davon mit
anderer Sprache (Türkisch, Polnisch) — damit lässt sich die Mehrsprachigkeit
sofort vorführen, ganz ohne DeepL-Zugang. Zugangsdaten und ein Rundgang stehen
in [`DEMO.md`](DEMO.md).
Beim Entfernen wird ausschließlich gelöscht, was beim Installieren angelegt
wurde — protokolliert im DocType `Demodaten`, einschließlich der Benutzerkonten.
Datensätze, die schon vorher existierten, bleiben unangetastet.
Auch per Kommandozeile möglich:
```bash
bench --site execute qmatrix.demo.installieren
bench --site execute qmatrix.demo.entfernen
```
---
## Mehrsprachigkeit mit DeepL
Schulungen und Unterweisungen lassen sich automatisch in die Sprachen der
Belegschaft übersetzen. Portal und Kiosk zeigen jedem Beschäftigten dann die
Fassung in seiner Sprache — gesteuert über das Feld **Bevorzugte Sprache** am
Mitarbeiter.
### Einrichten
> **Datenschutz zuerst.** Beim Übersetzen werden die Inhalte an DeepL
> übertragen. Der **Free-Tarif** untersagt laut DeepL-Nutzungsbedingungen die
> Verarbeitung **personenbezogener Daten** und DeepL behält sich vor,
> übermittelte Inhalte **dauerhaft zu speichern**. Unterweisungen enthalten
> häufig Namen, Abteilungen oder Personalnummern — sobald das zutrifft, ist der
> Free-Tarif vertraglich nicht zulässig und es wird der **Pro-Tarif mit
> Auftragsverarbeitungsvertrag (AVV)** benötigt. Der Free-Tarif eignet sich zum
> Ausprobieren mit Inhalten ohne jeden Personenbezug.
> Quellen: [DeepL Nutzungsbedingungen](https://www.deepl.com/pro-license) ·
> [Datenschutzerklärung](https://www.deepl.com/privacy). Das ersetzt keine
> Rechtsberatung.
1. Auf [deepl.com/pro-api](https://www.deepl.com/pro-api) einen API-Key
erstellen — für den Regelbetrieb den **Pro-Tarif**.
2. Im Menü **Q-Matrix → Einstellungen → DeepL Übersetzung** den API-Key
eintragen und speichern.
3. Auf **Verbindung testen** klicken. Es muss eine grüne Erfolgsmeldung mit
Tarif und verbrauchtem Kontingent erscheinen. Dabei wird auch die aktuelle
Sprachliste von DeepL geladen.
4. Den **Datenschutzhinweis** bestätigen — ohne diesen Haken startet keine
Übersetzung.
5. Unter **Sprachen der Belegschaft** die Sprachen eintragen, die im Betrieb
gesprochen werden. Diese sind später vorausgewählt.
Ob Free- oder Pro-Tarif verwendet wird, erkennt die App am Schlüssel selbst
(Free-Keys enden auf `:fx`) und weist bei Free ausdrücklich darauf hin.
Der Key wird verschlüsselt gespeichert und nie im Klartext angezeigt.
### Sprachcodes
Die Auswahl kommt direkt von DeepL und wird beim Verbindungstest aufgefrischt.
DeepL unterscheidet dabei streng zwischen Quell- und Zielsprache:
| | Als Ausgangssprache | Als Zielsprache |
|---|---|---|
| Englisch | `EN` | `EN-GB`, `EN-US` |
| Portugiesisch | `PT` | `PT-PT`, `PT-BR` |
Die Auswahlfelder filtern entsprechend, sodass keine ungültige Kombination
entstehen kann. Die Sprache eines Mitarbeiters muss eine **Zielsprache** sein.
### Übersetzen
In einer Schulung oder Unterweisung auf **Aktionen → 🌐 Mit DeepL übersetzen**
klicken, die Zielsprachen ankreuzen, starten. Der Lauf passiert im Hintergrund;
sobald er fertig ist, erscheint eine Meldung und das Formular lädt sich neu.
Übersetzt werden:
| | Schulung | Unterweisung |
|---|---|---|
| Titel | ✓ | ✓ |
| Beschreibung | ✓ (mit Formatierung) | ✓ |
| Zielgruppe | ✓ | — |
| PDF-Dokument | — | ✓ layoutgetreu |
| Quelldokument (DOCX/PPTX) | — | ✓ layoutgetreu |
Die Ergebnisse landen als **Sprachversion** am Dokument und stehen zunächst auf
**Entwurf**. Erst wenn eine Sprachversion auf **Freigegeben** gesetzt wird,
zeigen Portal und Kiosk sie den Beschäftigten an — die maschinelle Übersetzung
kann also vorher geprüft und korrigiert werden.
Eine erneute Übersetzung derselben Sprache aktualisiert die vorhandene
Sprachversion, statt eine zweite anzulegen.
---
## Mitwirken
Diese App nutzt `pre-commit` für Formatierung und Linting:
```bash
cd apps/qmatrix
pre-commit install
```
Eingesetzt werden ruff, eslint, prettier und pyupgrade.
---
## Lizenz
MIT — siehe [`license.txt`](license.txt).
## Autor
**Sascha Böhm Software & App**, Inhaber Sascha Böhm
Hohenschwärz 66, 91322 Gräfenberg, Deutschland
USt-IdNr. DE337811439
· +49 151 155 20 344
·
[Impressum](https://website.industrie-4-0.org/impressum/)
Related Developer Tools apps for Frappe & ERPNext
- Frappe — Low code web framework for real world applications, in Python and Javascript
- Frappe Docker — Docker environment for developing, deploying, and running Frappe applications (ERPNext and custom apps) in production and development
- Builder — Craft beautiful websites effortlessly with an intuitive visual builder and publish them instantly
- Bench — CLI to manage Multi-tenant deployments for Frappe apps
- Frappe Ui — A set of components and utilities for rapid UI development
- Press — Full service cloud hosting for the Frappe stack - powers Frappe Cloud
- Gameplan — Open Source Discussions Platform for Remote Teams
- Doppio — A Frappe app (CLI) to magically setup single page applications and Vue/React powered desk pages on your custom Frappe apps.