From 8390afd06ab2c428b4fed44facbb984a01df8e98 Mon Sep 17 00:00:00 2001 From: trnq1ll0 Date: Fri, 5 Jun 2026 09:12:00 +0200 Subject: [PATCH] update plan und readme --- .copilot/plan.copilot.md | 22 ++++++++++++++++++- README.md | 46 +++++++++++++++++++++++++++++++++++----- 2 files changed, 62 insertions(+), 6 deletions(-) diff --git a/.copilot/plan.copilot.md b/.copilot/plan.copilot.md index c48e14e..609a83a 100644 --- a/.copilot/plan.copilot.md +++ b/.copilot/plan.copilot.md @@ -3,4 +3,24 @@ Untersuchung einer time tracking plattform ob diese per API ansprechbar ist um z Name des tools: eZICOM5 Url: https://zm.sufw.de:31443 -Login erfolgt per username und passwort. \ No newline at end of file +Login erfolgt per username und passwort. + +Login credentials sollen per .env Datei lokal gespeichert werden. + +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 + +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 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 626bfb6..a2e7d6f 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,16 @@ Optional kann die HTML-Antwort nach dem Login gespeichert werden: ./ezicom_login.py --insecure --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: + +```bash +./ezicom_login.py --insecure --follow-next --save-next-response next-page.html +``` + +Fuer die weitere Analyse der Zeitbuchung ist diese Folgeseite interessanter als +die reine Login-Antwort. + Wenn du Zugangsdaten ueber Environment-Variablen setzen willst: ```bash @@ -66,6 +76,35 @@ 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 + +Die Fehlerliste zeigt fehlerhafte Tage mit dem von eZICOM gelieferten Grund an, +z.B. `Sollzeit definiert, aber keine Buchung` oder `Buchungen uebrig`: + +```bash +./ezicom_login.py --insecure --fehlerliste +``` + +Die HTML-Antwort kann optional gespeichert werden: + +```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 +``` + ## TLS / Zertifikat Bei lokalen Tests konnte Python die Zertifikatskette der eZICOM-Installation @@ -87,8 +126,5 @@ verwenden. ## Bekannte Grenzen -Das Script loggt nur ein und prueft die unmittelbare Antwort. Es bucht noch -keine Zeiten und ruft keine eZICOM-API auf. - -Fuer den naechsten Schritt muessen wir nach erfolgreichem Login untersuchen, -welche Requests beim eigentlichen Buchen von Zeiten gesendet werden. +Das Script loggt ein, kann Zeitbuchungen absenden und die Fehlerliste anzeigen. +Es ruft keine dedizierte eZICOM-API auf, sondern ahmt den Browser nach.