Files
arbeitszeitmessung/Readme.md
tom_trgr cd00ce3f53
All checks were successful
Tests / Run Go Tests (push) Successful in 2m52s
Arbeitszeitmessung Deploy / Build Webserver (push) Successful in 3m5s
chore: docs
2026-03-01 13:20:23 +01:00

171 lines
5.0 KiB
Markdown

# Arbeitszeitmessung
[![Quality Gate Status](https://sonar.letsstein.de/api/project_badges/measure?project=arbeitszeitmessung&metric=alert_status&token=sqb_253028eff30aff24f32b437cd6c484c511b5c33f)](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
- `BOOKING_OUT_OF_BOUNDS` Wenn true, werden Buchungen außerhalb des festgelegten Arbeitszeitraums auf den Arbeitszeitraum vor/nach verlegt. Wenn false, werden die Buchungen abgelehnt und ein Fehler wird zurückgemeldet.
- `BOOKING_FOR_UNKNOWN_USER` Wenn true, können Anwesenheitseinträge mit CardUIDs, die keinem Nutzer zugeordnet sind durchgeführt werden.
- 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
```