Files

Fotograf.de Scraper & Management UI

Status: Production-Ready Microservice (Core Feature: PDF List Generation, QR Cards, Shooting Schedule, SQLite Data Sync, Gmail API Integration & Automated Release Requests)

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.

🏗️ Architektur

Der Service besteht aus zwei Hauptkomponenten:

  1. Backend (Python / FastAPI / Selenium / SQLAlchemy):

    • Automatisierung: Nutzt Selenium für das Scraping von fotograf.de.
    • Persistenz: Eine SQLite-Datenbank (fotograf_jobs.db) speichert die Auftragsliste, OAuth-Tokens (GmailToken), Gutscheincodes (DiscountCode), Teilnehmerdaten (ReleaseParticipant), Auftragsteilnehmer (JobParticipant) und die Versand-Historie (ReleaseHistory).
    • 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) sowie an die Gmail API für direkten E-Mail-Versand und automatisierte Webhook-Antworten.
  2. Frontend (TypeScript / React / Vite / TailwindCSS):

    • Modernes UI: Ein vollständig responsives Dashboard mit Tailwind CSS (Kachel-Layout, Tabs für Kiga/Schule).
    • Arbeitsfluss: Tools sind in der Detailansicht eines Auftrags in logische Phasen (Vorbereitung, Follow-Up, Statistik) unterteilt.

Core Features

🚀 Performance-Optimierung (SQLite Sync)

Statt wie früher jedes Mal mühsam durch alle Foto-Alben zu "crawlen", nutzt das System nun eine intelligente Synchronisierung:

  • One-Click Sync: Über den Button "Daten von Fotograf.de abgleichen" lädt das System die detaillierte Namensliste (CSV) herunter.
  • Lokale Datenbank: Alle relevanten Infos (E-Mail der Eltern, Login-Zahlen, Bestellstatus, Zugangscodes) werden in der Tabelle job_participants gespeichert.
  • Blitzschnelle Analyse: Nachfass-Mails und Statistiken werden nun in Sekunden (statt Minuten) direkt aus der Datenbank generiert.

Feature 1: Teilnehmerlisten (Vollständig)

Automatisierter Workflow zum Download und Formatieren der Anmeldelisten von fotograf.de als sortiertes PDF inkl. "Kinderfotos Erding" Branding.

Feature 2: Shooting-Planung (QR-Karten & Terminliste) (Vollständig)

Spezielles Modul für Familien-Mini-Shootings:

  • QR-Karten-Andruck: Präzises Overlay von Name, Kinderanzahl und Uhrzeit inkl. automatischer Einwilligungs-Checkbox (☑) aus Calendly-Daten.
  • Termin-Übersichtsliste: Generiert eine A4-Tabelle für den Shooting-Tag im 6-Minuten-Takt inkl. Lückenfüller.

Feature 3: Nachfass-E-Mails & Gmail Direkt-Versand (Optimiert)

Identifizierung von Nicht-Käufern (0-1 Logins, keine Bestellung) basierend auf den synchronisierten Datenbank-Daten.

  • Vorschau-Modus: Ermöglicht das Durchklicken der personalisierten E-Mails an jeden Empfänger vor dem eigentlichen Versand.
  • Quick-Login Automation: Die Login-Links (https://www.kinderfotos-erding.de/a/{code}) werden automatisch generiert.

Feature 4: Verkaufs-Statistiken (Optimiert)

Detaillierte Analyse des Kaufverhaltens pro Gruppe/Klasse basierend auf den lokalen Datenbank-Einträgen.

Feature 5: Geschwisterliste (Einrichtungsintern) (Vollständig)

Tool zur Identifizierung von Geschwistergruppen innerhalb einer Einrichtung inkl. Cross-Check mit Calendly-Buchungen und speziellen Geschwister-QR-Karten.

  • Flexibilität: Optionaler Modus "Ohne Nachmittags-Shooting", um die Liste auch ohne Calendly-Abgleich (rein einrichtungsintern) zu generieren.

Feature 6: Freigabeanfragen & Gutschein-Automation (Vollständig)

Vollautomatisierter DSGVO-Workflow zur Einholung von Veröffentlichungsgenehmigungen:

  • Schlanker Versand: Manuelle Eingabe von Empfängern (E-Mail, Vorname, Kindernamen) mit E-Mail-Vorschau.
  • Versand-Planung: Einstellbare Versandzeit (Berlin Timezone) via Hintergrund-Tasks.
  • Webhook-Integration: Direkte Anbindung an Google Forms. Bei Absenden des Freigabe-Formulars wird automatisch ein Gutscheincode reserviert und eine Dankes-E-Mail versendet.
  • Antwort-Übersicht: Tabelle aller eingegangenen Freigaben inkl. zugewiesenem Code und Zeitstempel.

🛠️ Technische Details & Sicherheit

  • BCC-Kontrolle: Jede vom System versendete E-Mail sendet automatisch eine Blindkopie (BCC) an kontakt@kinderfotos-erding.de.
  • Versand-Historie: Alle Aussendungen (Anzahl Empfänger, Zeitpunkt) werden in der Tabelle release_history protokolliert.
  • Sicherer Test-Modus: Über DEV_MODE_EMAIL_RECIPIENT können alle E-Mails global an eine Test-Adresse umgeleitet werden.
  • Zeitzonen: Durchgängige Verwendung von Europe/Berlin.
  • Gmail OAuth: Persistente Speicherung der Refresh-Tokens in der Datenbank.

🚀 Deployment & Konfiguration

Der Service wird über die Haupt-docker-compose.yml des Projekts verwaltet.

URLs

  • Frontend: https://floke-ai.duckdns.org/fotograf-de/
  • Webhook für Google Forms: https://floke-ai.duckdns.org/fotograf-de-api/api/publish-request/webhook