- Neue Tabelle JobParticipant speichert detaillierte CSV-Daten von Fotograf.de. - process_reminder_analysis und process_statistics nutzen nun die lokale Datenbank statt Selenium-Crawling. - Neuer 'Daten abgleichen' Button im Vorbereitungs-Tab integriert. - Automatischer Quick-Login Link-Generator basierend auf Zugangscodes.
5.1 KiB
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:
-
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.
- Automatisierung: Nutzt Selenium für das Scraping von
-
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_participantsgespeichert. - 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.
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_historyprotokolliert. - Sicherer Test-Modus: Über
DEV_MODE_EMAIL_RECIPIENTkö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