update readme/plan: default show Fehlerliste und Buchung eintragen via Selektion

This commit is contained in:
trnq1ll0 committed 2026-06-08 09:28:43 +02:00
1 parent 8390afd06a
commit 2b40bd2756
2 files changed
+51 -44

No files matched your search

+13 -5
View File
@@ -1,26 +1,34 @@
Untersuchung einer time tracking plattform ob diese per API ansprechbar ist um zeiten automatisch zu tracken Automatisches time tracking auf einer Web plattform.
Name des tools: eZICOM5 Name des tools: eZICOM5
Url: https://zm.sufw.de:31443 Url: https://zm.sufw.de:31443
Login erfolgt per username und passwort. Login erfolgt per username und passwort.
Login credentials werden per .env Datei lokal gespeichert.
Login credentials sollen per .env Datei lokal gespeichert werden. # Default Ablauf
Nach dem Login in der Zeiterfassung soll in der Fehlerliste nach Tagen geschaut werden, welche noch keine Zeiteintragung haben. Der Seitenaufruf dazu ist: https://zm.sufw.de:31443/user?page=corrindex&go=dfhl&sid=<hier aktuelle ID einsetzen>&Btn=9&nc=%27+noCache()+%27 1) Nach dem Login in der Zeiterfassung wird die Fehlerliste-Seite aufgerufen, der Seitenaufruf dazu ist: https://zm.sufw.de:31443/user?page=corrindex&go=dfhl&sid=<hier aktuelle ID einsetzen>&Btn=9&nc=%27+noCache()+%27
Klarstellung zur Fehlerliste: Klarstellung zur Fehlerliste:
- Alle Tage, die in der Fehlerliste erscheinen, gelten als fehlerhaft. - Alle Tage, die in der Fehlerliste erscheinen, gelten als fehlerhaft.
- Die liste kann zwei arten von Fehlern enthalten: entweder fehlen beide Buchungen (kommen/gehen) oder nur eine der beiden. - Die liste kann zwei arten von Fehlern enthalten: entweder fehlen beide Buchungen (kommen/gehen) oder nur eine der beiden.
- Beim Auslesen darf nur der HTML-Block `dfhl` aus dem `go=dfhl` Ergebnis verwendet werden. Die Seite enthaelt zusaetzlich versteckte Listen wie `dnow`, die alle Buchungen enthalten und nicht fuer die Konsolenausgabe geparst werden duerfen. - Beim Auslesen darf nur der HTML-Block `dfhl` aus dem `go=dfhl` Ergebnis verwendet werden. Die Seite enthaelt zusaetzlich versteckte Listen wie `dnow`, die alle Buchungen enthalten und nicht fuer die Konsolenausgabe geparst werden duerfen.
Neue Buchung / Korrekturbuchung: Die fehlerhaften Tage in der Fehlerliste werden im Terminal angezeigt.
Aktueller Ablauf der Terminalausgabe:
- Einträge, die juenger als 15 Tage sind, werden nummeriert angezeigt.
- Einträge, die aelter als 14 Tage sind, werden unter einem Hinweis angezeigt und nicht zur Auswahl angeboten.
- Nach der Liste kann eine Nummer eingegeben werden. Fuer den gewaehlten Tag werden zwei Korrekturbuchungen gesendet: 10:00 als Kommen und 14:00 als Gehen.
2) Neue Buchung / Korrekturbuchung:
- Die Seite zum Ausloesen einer neuen Buchung wird ueber `page=corrnew` aufgerufen. - Die Seite zum Ausloesen einer neuen Buchung wird ueber `page=corrnew` aufgerufen.
- Beispiel-URL: https://zm.sufw.de:31443/user?page=corrnew&sid=<hier aktuelle ID einsetzen>&bt=1 - Beispiel-URL: https://zm.sufw.de:31443/user?page=corrnew&sid=<hier aktuelle ID einsetzen>&bt=1
- Die `sid` ist session-abhaengig und muss nach dem Login dynamisch aus der Seite gelesen werden. - Die `sid` ist session-abhaengig und muss nach dem Login dynamisch aus der Seite gelesen werden.
Ziele: Ziele:
- In der Fehlerliste schauen welche Tage noch nicht gebucht sind und die nicht älter als zwei Wochen sind. - In der Fehlerliste schauen welche Tage noch nicht gebucht sind und die nicht älter als zwei Wochen sind.
- Diese im Terminal anzuzeigen und per Auswahl diese automatisch auszufüllen
- Es werden nur Tage ausgefüllt bei denen beide Buchungen fehlen, alle anderen Fehler werden einfach nur angezeigt. - Es werden nur Tage ausgefüllt bei denen beide Buchungen fehlen, alle anderen Fehler werden einfach nur angezeigt.
- Zum ausfüllen genügt es, am Datum des betreffenden Tages zwei Buchungen vorzunehmen je einen für 10uhr und einen für 14Uhr - Zum ausfüllen genügt es, am Datum des betreffenden Tages zwei Buchungen vorzunehmen je einen für 10uhr und einen für 14Uhr
+38 -39
View File
@@ -1,7 +1,7 @@
# eZICOM Login Helper # eZICOM Login Helper
Dieses Verzeichnis enthaelt ein kleines Python-Script, das den Login in die Dieses Verzeichnis enthält ein kleines Python-Script, das den Login in die
eZICOM5-Weboberflaeche automatisiert. eZICOM5-Weboberfläche automatisiert.
Das Script macht keinen API-Login. Es ahmt den Browser-Login nach: Das Script macht keinen API-Login. Es ahmt den Browser-Login nach:
@@ -26,7 +26,7 @@ Am sichersten ist der interaktive Modus. Dabei werden keine Zugangsdaten in der
Shell-History abgelegt: Shell-History abgelegt:
```bash ```bash
./ezicom_login.py --insecure ./ezicom_login.py
``` ```
Das Script fragt dann nach Benutzername und Passwort. Das Script fragt dann nach Benutzername und Passwort.
@@ -34,23 +34,36 @@ Das Script fragt dann nach Benutzername und Passwort.
Optional kann die HTML-Antwort nach dem Login gespeichert werden: Optional kann die HTML-Antwort nach dem Login gespeichert werden:
```bash ```bash
./ezicom_login.py --insecure --save-response after-login.html ./ezicom_login.py --save-response after-login.html
``` ```
Nach einem erfolgreichen Login zeigt eZICOM ggf. erst eine Zwischenmeldung mit Nach einem erfolgreichen Login zeigt eZICOM ggf. erst eine Zwischenmeldung mit
einem `Weiter`-Button. Diesen Schritt kann das Script ebenfalls ausfuehren: einem `Weiter`-Button. Diesen Schritt fuehrt das Script automatisch aus und
zeigt danach die Fehlerliste im Terminal an:
```bash ```bash
./ezicom_login.py --insecure --follow-next --save-next-response next-page.html ./ezicom_login.py
``` ```
Fuer die weitere Analyse der Zeitbuchung ist diese Folgeseite interessanter als Optional kann die HTML-Antwort nach diesem Schritt gespeichert werden:
die reine Login-Antwort.
```bash
./ezicom_login.py --save-next-response next-page.html
```
Fuer die Fehlerliste lädt das Script den Korrekturindex mit `go=dfhl` und wertet
nur den HTML-Block `dfhl` aus.
Einträge, die juenger als 15 Tage sind, werden nummeriert angezeigt. Nach der
Liste kann eine Nummer eingegeben werden, um fuer diesen Tag automatisch zwei
Korrekturbuchungen zu senden: 10:00 als Kommen-Buchung und 14:00 als
Gehen-Buchung. Einträge, die älter als 14 Tage sind, stehen unter einem
Hinweis und koennen nicht ausgewählt werden.
Wenn du Zugangsdaten ueber Environment-Variablen setzen willst: Wenn du Zugangsdaten ueber Environment-Variablen setzen willst:
```bash ```bash
EZICOM_USERNAME='dein-user' EZICOM_PASSWORD='dein-passwort' ./ezicom_login.py --insecure EZICOM_USERNAME='dein-user' EZICOM_PASSWORD='dein-passwort' ./ezicom_login.py
``` ```
Oder trage sie in `.env` ein: Oder trage sie in `.env` ein:
@@ -63,68 +76,54 @@ EZICOM_PASSWORD=dein-passwort
Danach reicht: Danach reicht:
```bash ```bash
./ezicom_login.py --insecure ./ezicom_login.py
``` ```
Alternativ per CLI-Argument: Alternativ per CLI-Argument:
```bash ```bash
./ezicom_login.py -u 'dein-user' -p 'dein-passwort' --insecure ./ezicom_login.py -u 'dein-user' -p 'dein-passwort'
``` ```
Hinweis: CLI-Argumente koennen in der Shell-History und kurzzeitig in der Hinweis: CLI-Argumente koennen in der Shell-History und kurzzeitig in der
Prozessliste sichtbar sein. Fuer echte Nutzung ist der interaktive Modus oder Prozessliste sichtbar sein. Fuer echte Nutzung ist der interaktive Modus oder
ein sauber geschuetzter Secret-Store besser. ein sauber geschuetzter Secret-Store besser.
## Fehlerliste ## Zeitbuchungen
Die Fehlerliste zeigt fehlerhafte Tage mit dem von eZICOM gelieferten Grund an, Eine Zeitbuchung wird standardmässig nur vorbereitet und im Terminal angezeigt:
z.B. `Sollzeit definiert, aber keine Buchung` oder `Buchungen uebrig`:
```bash ```bash
./ezicom_login.py --insecure --fehlerliste ./ezicom_login.py --book kommen
``` ```
Die HTML-Antwort kann optional gespeichert werden: Moegliche Werte sind `kommen`, `pause` und `gehen`. Erst mit
`--execute-booking` wird die Buchung wirklich an eZICOM gesendet:
```bash ```bash
./ezicom_login.py --insecure --fehlerliste --save-fehlerliste-response fehlerliste.html ./ezicom_login.py --book kommen --execute-booking
```
Wichtig: Fuer die Fehlerliste muss der Korrekturindex mit `go=dfhl` geladen und
der HTML-Block `dfhl` ausgewertet werden. Ohne diese Eingrenzung liefert eZICOM
auch die normale Buchungsliste mit zu vielen Eintraegen aus.
## Korrekturbuchungen
Die Seite fuer eine neue Buchung/Korrekturbuchung wird ueber `page=corrnew`
aufgerufen. Die `sid` ist session-abhaengig und muss aus dem Login-Kontext
uebernommen werden:
```text
https://zm.sufw.de:31443/user?page=corrnew&sid=<SID>&bt=1
``` ```
## TLS / Zertifikat ## TLS / Zertifikat
Bei lokalen Tests konnte Python die Zertifikatskette der eZICOM-Installation Bei lokalen Tests konnte Python die Zertifikatskette der eZICOM-Installation
nicht verifizieren. Deshalb gibt es die Option: nicht verifizieren. Deshalb deaktiviert das Script die TLS-Zertifikatspruefung
standardmässig.
Wenn die ausstellende CA lokal installiert ist, kann die Pruefung explizit
aktiviert werden:
```bash ```bash
--insecure ./ezicom_login.py --verify-tls
``` ```
Diese Option deaktiviert die TLS-Zertifikatspruefung. Sauberer waere es, die
ausstellende CA lokal zu installieren und das Script ohne `--insecure` zu
verwenden.
## Exit-Codes ## Exit-Codes
- `0`: Login sieht erfolgreich aus - `0`: Login sieht erfolgreich aus
- `1`: Login wurde vom Server abgelehnt, zum Beispiel HTTP 403 - `1`: Login wurde vom Server abgelehnt, zum Beispiel HTTP 403
- `2`: technischer Fehler, zum Beispiel Netzwerk- oder TLS-Problem - `2`: technischer Fehler, zum Beispiel Netzwerk-, TLS- oder Parse-Problem
## Bekannte Grenzen ## Bekannte Grenzen
Das Script loggt ein, kann Zeitbuchungen absenden und die Fehlerliste anzeigen. Das Script loggt ein, zeigt die Fehlerliste an und kann Zeitbuchungen absenden.
Es ruft keine dedizierte eZICOM-API auf, sondern ahmt den Browser nach. Es ruft keine dedizierte eZICOM-API auf, sondern ahmt den Browser nach.