169 lines
4.6 KiB
Markdown
169 lines
4.6 KiB
Markdown
# Arbeitszeitmessung
|
|
|
|
[](https://sonar.letsstein.de/dashboard?id=arbeitszeitmessung)
|
|
|
|
---
|
|
|
|
Eine open-source Software zur Arbeitszeitmessung
|
|
|
|
## Features
|
|
|
|
- manuelle Korrektur von einzelnen Buchungen
|
|
- Buchung von benutzerdefinierten Abwesenheiten
|
|
- automatische gesetzlicher Feiertage
|
|
- Pflege eigener Feiertage
|
|
|
|
- wöchentliches Abrechnungssystem
|
|
- Kontrolle der Arbeitszeiten durch direkte Führungskraft
|
|
|
|
- Ausgabe der Arbeitszeiten je Monat in PDF Format
|
|
|
|
- Anwesenheitsübersicht
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
git clone https://git.letsstein.de/tom/arbeitszeitmessung arbeitszeitmessung
|
|
|
|
cd arbeitszeitmessung
|
|
|
|
./install.sh
|
|
```
|
|
|
|
### Konfiguration:
|
|
|
|
- Datenbank
|
|
- `POSTGRES_USER` Postgres ADMIN Nutzername
|
|
- `POSTGRES_PASSWORD` Postgres ADMIN Passwort
|
|
- `POSTGRES_API_USER` Postgres API Nutzername für Webanwendung
|
|
- `POSTGRES_API_PASS` Postgres API Passwort für Webanwendung
|
|
- `POSTGRES_PATH` Datebank Pfad
|
|
- `POSTGRES_DB` Postgres Datenbank Name
|
|
- `POSTGRES_PORT` Postgres Port für administration
|
|
- System
|
|
- `TZ` Zeitzone
|
|
- `LOG_LEVEL` Welche Log-Nachrichten werden in der Konsole erscheinen
|
|
- Web/API
|
|
- `API_TOKEN` API Token für ESP Endpoints
|
|
- `WEB_PORT` Port unter welchem Webserver erreichbar ist
|
|
- Ordnerstruktur
|
|
- `BACKUP_FOLDER` Pfad für DB Backup Datein
|
|
- `LOG_PATH` Pfad für Audit Logs
|
|
|
|
## Administration:
|
|
|
|
### Nutzer erstellen:
|
|
|
|
Nutzerdaten erstellen:
|
|
|
|
```sql
|
|
INSERT INTO "s_personal_daten"
|
|
(
|
|
"personal_nummer",
|
|
"vorname",
|
|
"nachname",
|
|
"card_uid",
|
|
"geburtsdatum",
|
|
"geschlecht",
|
|
"adresse",
|
|
"plz",
|
|
"hauptbeschaeftigungs_ort",
|
|
"aktiv_beschaeftigt",
|
|
"vorgesetzter_pers_nr",
|
|
"arbeitszeit_min_start",
|
|
"arbeitszeit_max_ende",
|
|
"arbeitszeit_per_tag",
|
|
"arbeitszeit_per_woche",
|
|
)
|
|
VALUES (
|
|
1,
|
|
'Max',
|
|
'Mustermann',
|
|
'acde-edca',
|
|
'2003-02-01',
|
|
1,
|
|
'Musterstr. 42',
|
|
'00001',
|
|
1,
|
|
true,
|
|
123,
|
|
'07:00:00',
|
|
'20:00:00',
|
|
8,
|
|
40
|
|
);
|
|
```
|
|
|
|
Nutzerpasswort generieren (kann auch später als Passwort reset genutzt werden):
|
|
|
|
```sql
|
|
INSERT INTO "user_password"
|
|
("personal_nummer", "pass_hash")
|
|
VALUES (123, crypt('password', gen_salt('bf')));
|
|
```
|
|
|
|
### Buchungstypen erstellen:
|
|
|
|
Ohne definierte Anwesenheits und Abwesenheitstypen funktioniert die Anwendung nicht!
|
|
|
|
Anwesenheiten:
|
|
|
|
```sql
|
|
INSERT INTO "s_anwesenheit_typen"
|
|
("anwesenheit_id", "anwesenheit_name")
|
|
VALUES (1, 'Büro');
|
|
```
|
|
|
|
Abwesenheiten:
|
|
|
|
```sql
|
|
INSERT INTO "s_abwesenheit_typen"
|
|
("abwesenheit_id", "abwesenheit_name", "arbeitszeit_equivalent")
|
|
VALUES (1, 'Urlaub', 100);
|
|
```
|
|
|
|
### Feiertage erstellen:
|
|
|
|
Die gesetzlichen Feiertage für Deutschland/Sachsen werden automatisch mit der Route `auto/feiertage` für das aktuelle Kalenderjahr erzeugt. Um weitere Unternehmensspezifische Feiertage (z.B. 24.12. oder 31.12.) mit in die Liste der Feiertage aufzunehmen, müssen diese manuell erstellt werden.
|
|
|
|
```sql
|
|
INSERT INTO "s_feiertage"
|
|
("datum", "name", "arbeitszeit_equivalent", "wiederholen")
|
|
VALUES ('2026-12-24', 'Helligabend', 50, 1);
|
|
```
|
|
|
|
Wenn `wiederholen` == 1 wird der Feiertag automatisch beim Aufruf von `auto/feiertage` mit ins nächste Jahr (am selben Datum) übernommen.
|
|
|
|
Das Feld `arbeitszeit_equivalent` `arbeitszeit_equivalent` ist die prozentuelle Zeit am Tag welche durch diesen Eintrag eingenommen wird. (dies gilt auch für die [Buchungstypen](#buchungstypen-erstellen))
|
|
|
|
Alle weiteren Tabellen sollte ausschließlich über die Weboberfläche oder per API befüllt werden.
|
|
|
|
---
|
|
|
|
# Filestrukture
|
|
|
|
```
|
|
|
|
├── Backend (Webserver)
|
|
│ ├── doc (Templates for Document Creator --> typst used to create PDF Reports)
|
|
│ │ ├── static
|
|
│ │ └── templates
|
|
│ ├── endpoints (HTML Server endpoints (see main.go for Routes))
|
|
│ ├── helper (Helper classes)
|
|
│ │ ├── logs
|
|
│ │ └── paramParser
|
|
│ ├── logs (Log Folder, no sourcecode)
|
|
│ ├── migrations (DB Migrations Folder, no direct sourcecode)
|
|
│ ├── models (DB Models and their function)
|
|
│ ├── src (Tailwind src --> used to config css formatter)
|
|
│ ├── static (Webserver static, used to server static content, e.g. JS and CSS files)
|
|
│ │ └── css
|
|
│ └── templates (HTML Templates for every page written in templ and compiled to go)
|
|
├── Cron (all Cron Scripts)
|
|
├── DB (local Database mount Point)
|
|
│ └── initdb (initialization scripts for DB)
|
|
├── Docker (Docker Files, only docker-compose.yaml used)
|
|
├── docs
|
|
└── └── images
|
|
```
|