From 066470e82c92d5ce0a68c915d7be9d3b1fd368b5 Mon Sep 17 00:00:00 2001 From: Floke Date: Sat, 21 Mar 2026 14:05:45 +0000 Subject: [PATCH] [32788f42] Update README with new Shooting-Planung features and technical fixes --- fotograf-de-scraper/README.md | 55 +++++++++++++++++------------------ 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/fotograf-de-scraper/README.md b/fotograf-de-scraper/README.md index d1f780a4f..cab431d90 100644 --- a/fotograf-de-scraper/README.md +++ b/fotograf-de-scraper/README.md @@ -1,6 +1,6 @@ # Fotograf.de Scraper & Management UI -**Status:** Production-Ready Microservice (Core Feature: PDF List Generation & QR Cards) +**Status:** Production-Ready Microservice (Core Feature: PDF List Generation, QR Cards & Shooting Schedule) Dieser Service modernisiert die alten `Fotograf.de` Skripte, indem er eine robuste, web-basierte UI zur Verwaltung und Automatisierung von Foto-Aufträgen bereitstellt. Er ist als eigenständiger Microservice konzipiert, der unabhängig vom Haupt-Stack läuft. @@ -12,38 +12,39 @@ Der Service besteht aus zwei Hauptkomponenten: * **Automatisierung:** Nutzt Selenium für das Scraping von `fotograf.de`. * **Persistenz:** Eine SQLite-Datenbank (`fotograf_jobs.db`) speichert die Auftragsliste, sodass langsame Scraping-Vorgänge nur bei Bedarf (Refresh) nötig sind. * **PDF-Engine:** Nutzt WeasyPrint für Teilnehmerlisten und ReportLab/PyPDF2 für präzise PDF-Overlays (QR-Karten). - * **API-Integration:** Direkte Anbindung an die **Calendly API (v2)** zum Abruf von Live-Buchungsdaten mittels Personal Access Token (JWT). + * **API-Integration:** Direkte Anbindung an die **Calendly API (v2)** zum Abruf von Live-Buchungsdaten. 2. **Frontend (TypeScript / React / Vite / TailwindCSS):** * **Modernes UI:** Ein vollständig responsives Dashboard mit Tailwind CSS (Kachel-Layout, Tabs für Kiga/Schule). - * **Echtzeit-Feedback:** Polling-Mechanismus für langlaufende Hintergrund-Tasks (z. B. Statistiken). - * **Tools:** Integrierte Formulare für PDF-Downloads und ein dedizierter QR-Karten-Generator im Header. + * **Arbeitsfluss:** Tools sind direkt in der Detailansicht des jeweiligen Auftrags integriert (Shooting-Planung). ## ✨ Core Features -### Feature 1: PDF-Teilnehmerlisten-Generierung (Vollständig) -Automatisierter Workflow: -1. **Daten-Caching:** Aufträge werden aus der lokalen DB geladen (Millisekunden-Reaktionszeit). -2. **Selenium-Download:** Auf Knopfdruck wird die CSV-Anmeldeliste von `fotograf.de` im Hintergrund geladen. -3. **PDF-Erstellung:** Generierung eines sortierten PDFs (Klassen/Gruppen) mit "Kinderfotos Erding" Branding. +### Feature 1: Teilnehmerlisten (Vollständig) +Automatisierter Workflow zum Download und Formatieren der Anmeldelisten von `fotograf.de` als sortiertes PDF (Klassen/Gruppen) inkl. "Kinderfotos Erding" Branding. -### Feature 2: QR-Karten für Familien-Shootings (Vollständig) -Spezielles Tool für Familien-Mini-Shootings: -* **Workflow:** - 1. Manueller Upload eines Blanko-PDFs, das bereits individuelle QR-Codes pro Seite/Karte enthält. - 2. Live-Abruf der Buchungsdaten (Name, Anzahl Kinder, Uhrzeit) via **Calendly API**. - 3. **Präzises Overlay:** Die Texte werden exakt an zwei Positionen pro A4-Seite angedruckt: - * **Element 1 (Oben):** X: 72mm, Y: 22mm (vom oberen Rand). - * **Element 2 (Unten):** X: 72mm, Y: 171mm (vom oberen Rand). -* **Intelligente Seitenverwaltung:** Das Tool erkennt die Seitenanzahl der Vorlage und beschreibt jede Seite individuell, um die eindeutigen QR-Codes zu erhalten. +### Feature 2: Shooting-Planung (QR-Karten & Terminliste) +Spezielles Modul für Familien-Mini-Shootings, direkt integriert in die Auftragsdetails: +* **Dynamische Event-Auswahl:** Wähle direkt aus deinen Calendly-Event-Typen (z.B. "Neuching") aus. +* **QR-Karten-Andruck:** + * Präzises Overlay von Name, Kinderanzahl und Uhrzeit auf vorbereitete QR-Code-Bögen. + * **Korrektur:** Y-Achse um 9mm nach unten verschoben für perfekten Sitz auf den Linien. + * **Einwilligungs-Checkbox (☑):** Automatischer Andruck eines Häkchens, wenn in Calendly der Veröffentlichung zugestimmt wurde. +* **Termin-Übersichtsliste (Neu):** + * Generiert eine A4-Tabelle für den Shooting-Tag. + * **6-Minuten-Takt:** Erzeugt automatisch ein Raster basierend auf dem ersten und letzten Termin, füllt Lücken für nicht gebuchte Slots leer auf. + * Inklusive Spalten für Name, Kinder, Veröffentlichungs-Status und einer Checkbox zum manuellen Abhaken. ### Feature 3: Nachfass-E-Mails (Geplant) -* Identifizierung von Käufern/Nicht-Käufern zur Generierung von Supermailer-Listen (Anbindung an Fotograf.de Scraping-Logik). +* Identifizierung von Käufern/Nicht-Käufern zur Generierung von CSV-Listen für den Supermailer. ### Feature 4: Verkaufs-Statistiken (Vollständig) -* Durchforstet alle Alben eines Auftrags via Selenium. -* Liefert eine Übersicht der Verkaufszahlen pro Album (Kinder gesamt, mit Käufen, alle Bilder gekauft). -* **UX:** Fortschrittsanzeige in Echtzeit ("Bearbeite Album X/Y, Seite Z...") direkt im Browser. +* Detaillierte Analyse des Kaufverhaltens pro Album mit Echtzeit-Fortschrittsanzeige im Browser. + +## 🛠️ Technische Details & Fixes (März 2026) +* **Zeitzonen:** Automatische Konversion von Calendly-UTC-Zeiten in die lokale Zeit (`Europe/Berlin`). +* **Pagination Fix:** Das Backend blättert nun durch alle Calendly-Seiten, um sicherzustellen, dass keine Buchungen (auch bei großen Event-Historien) übersehen werden. +* **Logo-Integration:** Dynamisches Einbetten des Firmenlogos in alle generierten Dokumente. ## 🚀 Deployment & Konfiguration @@ -51,11 +52,9 @@ Der Service wird über eine eigene `docker-compose.yml` im Unterverzeichnis gest ### Umgebungsvariablen (`.env`) Folgende Variablen müssen in der `.env` im Verzeichnis `/fotograf-de-scraper/` definiert sein: -* `KIGA_USER` / `KIGA_PW`: Login für den Kindergarten-Account. -* `SCHULE_USER` / `SCHULE_PW`: Login für den Schul-Account. -* `CALENDLY_TOKEN`: Personal Access Token (JWT, startet mit `eyJ...`) von Calendly (erfordert Professional Abo). +* `KIGA_USER` / `KIGA_PW` / `SCHULE_USER` / `SCHULE_PW`: Logins. +* `CALENDLY_TOKEN`: Personal Access Token (JWT) von Calendly. ### URLs & Ports -* **Frontend:** `http://:3009` (Dashboard & Tools) -* **Backend:** `http://:8002` (API-Schnittstelle) -* **Persistenz:** Die Datenbank liegt unter `./backend/data/fotograf_jobs.db`. +* **Frontend:** `http://:3009` | **Backend:** `http://:8002` +* **Persistenz:** Datenbank unter `./backend/data/fotograf_jobs.db`.