From 2b40bd275634e129599ad6d3d59dc90dda262108 Mon Sep 17 00:00:00 2001 From: trnq1ll0 Date: Mon, 8 Jun 2026 09:28:43 +0200 Subject: [PATCH] update readme/plan: default show Fehlerliste und Buchung eintragen via Selektion --- .copilot/plan.copilot.md | 18 +++++++--- README.md | 77 ++++++++++++++++++++-------------------- 2 files changed, 51 insertions(+), 44 deletions(-) diff --git a/.copilot/plan.copilot.md b/.copilot/plan.copilot.md index 609a83a..17aa4b6 100644 --- a/.copilot/plan.copilot.md +++ b/.copilot/plan.copilot.md @@ -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 Url: https://zm.sufw.de:31443 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=&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=&Btn=9&nc=%27+noCache()+%27 Klarstellung zur Fehlerliste: - 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. - 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. - Beispiel-URL: https://zm.sufw.de:31443/user?page=corrnew&sid=&bt=1 - Die `sid` ist session-abhaengig und muss nach dem Login dynamisch aus der Seite gelesen werden. Ziele: - 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. - Zum ausfüllen genügt es, am Datum des betreffenden Tages zwei Buchungen vorzunehmen je einen für 10uhr und einen für 14Uhr \ No newline at end of file diff --git a/README.md b/README.md index a2e7d6f..91ca912 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # eZICOM Login Helper -Dieses Verzeichnis enthaelt ein kleines Python-Script, das den Login in die -eZICOM5-Weboberflaeche automatisiert. +Dieses Verzeichnis enthält ein kleines Python-Script, das den Login in die +eZICOM5-Weboberfläche automatisiert. 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: ```bash -./ezicom_login.py --insecure +./ezicom_login.py ``` 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: ```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 -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 -./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 -die reine Login-Antwort. +Optional kann die HTML-Antwort nach diesem Schritt gespeichert werden: + +```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: ```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: @@ -63,68 +76,54 @@ EZICOM_PASSWORD=dein-passwort Danach reicht: ```bash -./ezicom_login.py --insecure +./ezicom_login.py ``` Alternativ per CLI-Argument: ```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 Prozessliste sichtbar sein. Fuer echte Nutzung ist der interaktive Modus oder ein sauber geschuetzter Secret-Store besser. -## Fehlerliste +## Zeitbuchungen -Die Fehlerliste zeigt fehlerhafte Tage mit dem von eZICOM gelieferten Grund an, -z.B. `Sollzeit definiert, aber keine Buchung` oder `Buchungen uebrig`: +Eine Zeitbuchung wird standardmässig nur vorbereitet und im Terminal angezeigt: ```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 -./ezicom_login.py --insecure --fehlerliste --save-fehlerliste-response fehlerliste.html -``` - -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=&bt=1 +./ezicom_login.py --book kommen --execute-booking ``` ## TLS / Zertifikat 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 ---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 - `0`: Login sieht erfolgreich aus - `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 -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.