update readme/plan: default show Fehlerliste und Buchung eintragen via Selektion
This commit is contained in:
1 parent
8390afd06a
commit
2b40bd2756
2 files changed
+51
-44
No files matched your search
@@ -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
|
||||||
@@ -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.
|
||||||
Reference in new issue
Block a user