Files
medi-customers/README.md

5.0 KiB

medisoftware Kundensuche

Eine Flask-basierte Webanwendung zur Suche in Kundendaten aus einer CSV-Datei.

Features

  • Live-Suche während der Eingabe
  • Spezifische Suchfelder für:
    • Kundennummer
    • Name (Vor- und Nachname)
    • Fachrichtung
    • Ort
  • Allgemeine Suche über alle Felder
  • Klickbare Links für:
    • Telefonnummern (tel:)
    • E-Mail-Adressen (mailto:)
    • Adressen (Google Maps)
    • Kundennummern (KKBefe-System)
  • Teilen-Funktion für einzelne Suchergebnisse
  • Responsive Design mit Bootstrap
  • Docker-Container-Unterstützung

Technische Details

Technologie-Stack

  • Backend: Python 3.11 mit Flask
  • Frontend: HTML, CSS, JavaScript, Bootstrap 5
  • Datenverarbeitung: pandas, numpy
  • Container: Docker

Projektstruktur

medi-customers/
├── app.py              # Flask-Anwendung
├── templates/          # HTML-Templates
│   └── index.html     # Hauptseite
├── spezexpo.csv       # Kundendaten
├── requirements.txt   # Python-Abhängigkeiten
├── Dockerfile        # Docker-Konfiguration
├── docker-compose.yml # Docker Compose Konfiguration
└── .dockerignore     # Docker-Ignore-Datei

Datenformat

Die Anwendung erwartet eine CSV-Datei (spezexpo.csv) mit folgenden Spalten:

  • Nummer (Kundennummer)
  • Vorname
  • Nachname
  • Fachrichtung
  • Strasse
  • PLZ
  • Ort
  • Tel
  • mail

Installation

Lokale Entwicklung

  1. Python 3.11 installieren
  2. Virtuelle Umgebung erstellen und aktivieren:
    python -m venv venv
    source venv/bin/activate  # Linux/Mac
    venv\Scripts\activate     # Windows
    
  3. Abhängigkeiten installieren:
    pip install -r requirements.txt
    
  4. Anwendung starten:
    python app.py
    

Docker-Container

  1. Docker installieren
  2. Container mit Docker Compose starten:
    docker-compose up --build
    
    Die Anwendung ist dann unter http://localhost:5001 erreichbar.

API-Endpunkte

GET /

  • Rendert die Hauptseite
  • Sucht nach Kunden basierend auf verschiedenen Parametern
  • Parameter:
    • name: Suche nach Vor- oder Nachname
    • ort: Suche nach Ort
    • kundennummer: Suche nach Kundennummer
    • fachrichtung: Suche nach Fachrichtung
    • q: Allgemeine Suche über alle Felder
  • Returns: JSON-Array mit gefundenen Kunden

API-Beispiele

  1. Suche nach Namen:

    curl "http://localhost:5001/search?name=Schmidt"
    
  2. Suche nach Ort:

    curl "http://localhost:5001/search?ort=Berlin"
    
  3. Suche nach Kundennummer:

    curl "http://localhost:5001/search?kundennummer=12345"
    
  4. Suche nach Fachrichtung:

    curl "http://localhost:5001/search?fachrichtung=Allgemeinmedizin"
    
  5. Kombinierte Suche:

    curl "http://localhost:5001/search?name=Schmidt&ort=Berlin&fachrichtung=Allgemeinmedizin"
    
  6. Allgemeine Suche:

    curl "http://localhost:5001/search?q=Schmidt"
    

Beispiel-Response

[
  {
    "Nummer": "12345",
    "Vorname": "Max",
    "Nachname": "Schmidt",
    "Fachrichtung": "Allgemeinmedizin",
    "Strasse": "Hauptstraße 1",
    "PLZ": "10115",
    "Ort": "Berlin",
    "Tel": "030-123456",
    "mail": "max.schmidt@example.com"
  }
]

Frontend-Funktionen

Suchfunktion

  • Live-Suche mit 300ms Debounce
  • Spezifische Suchfelder für präzise Suche
  • Allgemeine Suche für breite Suche
  • Kombinierbare Suchkriterien
  • Trefferzähler für jedes Suchfeld
  • createPhoneLink(): Erstellt tel:-Links mit führender 0
  • createEmailLink(): Erstellt mailto:-Links
  • createAddressLink(): Erstellt Google Maps-Links
  • createCustomerLink(): Erstellt KKBefe-System-Links

Teilen-Funktion

  • Individueller Teilen-Button für jedes Suchergebnis
  • Kopiert einen direkten Link zum spezifischen Kunden
  • Visuelles Feedback beim Kopieren

Fehlerbehandlung

  • Logging für Backend-Fehler
  • Benutzerfreundliche Fehlermeldungen im Frontend
  • Graceful Degradation bei fehlenden Daten

Entwicklung

Debug-Modus

Die Anwendung läuft standardmäßig im Debug-Modus:

python app.py

Logging

  • Backend-Logs werden mit Python's logging-Modul erstellt
  • Log-Level: DEBUG
  • Logs werden in der Konsole ausgegeben

Wartung

Container-Verwaltung

# Container stoppen
docker-compose down

# Container starten
docker-compose up

# Container im Hintergrund starten
docker-compose up -d

# Container-Logs anzeigen
docker-compose logs -f

Datenaktualisierung

  1. CSV-Datei aktualisieren
  2. Container neu bauen und starten:
    docker-compose down
    docker-compose up --build
    

Sicherheit

  • Alle externen Links öffnen sich in neuen Tabs
  • Sicherheitsattribute für externe Links (noopener, noreferrer)
  • Input-Validierung im Backend
  • Fehlerbehandlung für ungültige Daten

Browser-Kompatibilität

Die Anwendung wurde getestet mit:

  • Chrome (neueste Version)
  • Firefox (neueste Version)
  • Edge (neueste Version)
  • Safari (neueste Version)