# medisoftware Kundensuche Eine Flask-basierte Webanwendung zur Suche in Kundendaten aus einer CSV-Datei. ## Features - Live-Suche während der Eingabe - Suche nach: - Kundennummer - Name (Vor- und Nachname) - Fachrichtung - Ort - Klickbare Links für: - Telefonnummern (tel:) - E-Mail-Adressen (mailto:) - Adressen (Google Maps) - Kundennummern (KKBefe-System) - 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 └── .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 bauen: ```bash docker build -t medi-customers . ``` 3. Container starten: ```bash docker run -d -p 5000:5000 --name medi-customers medi-customers ``` ## API-Endpunkte ### GET / - Rendert die Hauptseite ### GET /search - Sucht nach Kunden basierend auf dem Query-Parameter - Parameter: `q` (Suchbegriff) - Returns: JSON-Array mit gefundenen Kunden ## Frontend-Funktionen ### Suchfunktion - Live-Suche mit 300ms Debounce - Minimale Suchlänge: 2 Zeichen - Suche wird bei Enter-Taste sofort ausgeführt ### Link-Generierung - `createPhoneLink()`: Erstellt tel:-Links mit führender 0 - `createEmailLink()`: Erstellt mailto:-Links - `createAddressLink()`: Erstellt Google Maps-Links - `createCustomerLink()`: Erstellt KKBefe-System-Links ## 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 stop medi-customers # Container starten docker start medi-customers # Container-Logs anzeigen docker logs medi-customers # Container entfernen docker rm medi-customers ``` ### Datenaktualisierung 1. CSV-Datei aktualisieren 2. Container neu bauen und starten: ```bash docker stop medi-customers docker build -t medi-customers . docker run -d -p 5000:5000 --name medi-customers medi-customers ``` ## 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)