# 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: ```bash python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows ``` 3. Abhängigkeiten installieren: ```bash pip install -r requirements.txt ``` 4. Anwendung starten: ```bash python app.py ``` ### Docker-Container 1. Docker installieren 2. Container mit Docker Compose starten: ```bash docker-compose up --build ``` Die Anwendung ist dann unter `http://localhost:5001` erreichbar. ## API-Endpunkte ### GET / - Rendert die Hauptseite ### GET /search - 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: ```bash curl "http://localhost:5001/search?name=Schmidt" ``` 2. Suche nach Ort: ```bash curl "http://localhost:5001/search?ort=Berlin" ``` 3. Suche nach Kundennummer: ```bash curl "http://localhost:5001/search?kundennummer=12345" ``` 4. Suche nach Fachrichtung: ```bash curl "http://localhost:5001/search?fachrichtung=Allgemeinmedizin" ``` 5. Kombinierte Suche: ```bash curl "http://localhost:5001/search?name=Schmidt&ort=Berlin&fachrichtung=Allgemeinmedizin" ``` 6. Allgemeine Suche: ```bash curl "http://localhost:5001/search?q=Schmidt" ``` #### Beispiel-Response ```json [ { "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 ### Link-Generierung - `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: ```bash 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 ```bash # 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: ```bash 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)