From a5383ccce804ccb36930d79bcbb26f337a2372cb Mon Sep 17 00:00:00 2001 From: elpatron Date: Mon, 17 Mar 2025 21:00:28 +0100 Subject: [PATCH] README.md aktualisiert: Neue Features und Version 1.0.1 dokumentiert --- README.md | 274 +++++++++++++++--------------------------------------- 1 file changed, 76 insertions(+), 198 deletions(-) diff --git a/README.md b/README.md index 276390a..a1aeb6f 100644 --- a/README.md +++ b/README.md @@ -1,229 +1,107 @@ # medisoftware Kundensuche -Eine Flask-basierte Webanwendung zur Suche in Kundendaten aus einer CSV-Datei. +Eine Webanwendung zur Suche in Kundendaten der medisoftware. ## Features -- Live-Suche während der Eingabe +- Live-Suche in Kundendaten - Spezifische Suchfelder für: - - Kundennummer - - Name (Vor- und Nachname) - - Fachrichtung + - Name - Ort + - Kundennummer + - Fachrichtung + - Telefonnummer - 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 +- Klickbare Telefonnummern +- Klickbare E-Mail-Adressen +- Google Maps Integration für Adressen +- Share-Funktion für Suchergebnisse +- Trefferzähler +- Reset-Funktion für alle Suchfelder ## 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" - } -] +1. Repository klonen: +```bash +git clone https://gitea.elpatron.me/elpatron/medi-customers.git +cd medi-customers ``` -## Frontend-Funktionen +2. Python-Abhängigkeiten installieren: +```bash +pip install -r requirements.txt +``` -### 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 +3. CSV-Datei in das `data`-Verzeichnis kopieren: +```bash +mkdir data +cp spezexpo.csv data/customers.csv +``` -### 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: +4. Anwendung starten: ```bash python app.py ``` -### Logging -- Backend-Logs werden mit Python's logging-Modul erstellt -- Log-Level: DEBUG -- Logs werden in der Konsole ausgegeben +Die Anwendung ist dann unter `http://localhost:5001` erreichbar. -## Wartung +## API-Beispiele -### Container-Verwaltung +Die Such-API unterstützt folgende Parameter: + +### Spezifische Suche ```bash -# Container stoppen -docker-compose down +# Nach Name suchen +curl "http://localhost:5001/search?name=Schmidt" -# Container starten -docker-compose up +# Nach Ort suchen +curl "http://localhost:5001/search?ort=Berlin" -# Container im Hintergrund starten -docker-compose up -d +# Nach Kundennummer suchen +curl "http://localhost:5001/search?kundennummer=12345" -# Container-Logs anzeigen -docker-compose logs -f +# Nach Fachrichtung suchen +curl "http://localhost:5001/search?fachrichtung=Allgemeinmedizin" + +# Nach Telefonnummer suchen +curl "http://localhost:5001/search?telefon=030" + +# Kombinierte Suche +curl "http://localhost:5001/search?name=Schmidt&ort=Berlin&fachrichtung=Allgemeinmedizin" ``` -### Datenaktualisierung -1. CSV-Datei aktualisieren -2. Container neu bauen und starten: - ```bash - docker-compose down - docker-compose up --build - ``` +### Allgemeine Suche +```bash +# Suche in allen Feldern +curl "http://localhost:5001/search?q=Schmidt" +``` -## Sicherheit +### Beispiel-Response +```json +[ + { + "Vorname": "Max", + "Nachname": "Mustermann", + "Nummer": "12345", + "Ort": "Berlin", + "Fachrichtung": "Allgemeinmedizin", + "Tel": "030123456", + "Email": "max@example.com" + } +] +``` -- 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 +## Versionen -## Browser-Kompatibilität +### v1.0.1 +- Telefonnummer-Suchfeld hinzugefügt +- Reset-Icons für alle Suchfelder +- Verbesserte Positionierung der UI-Elemente +- Optimierte Suchlogik +- CSV-Datei in data-Verzeichnis verschoben -Die Anwendung wurde getestet mit: -- Chrome (neueste Version) -- Firefox (neueste Version) -- Edge (neueste Version) -- Safari (neueste Version) \ No newline at end of file +### v1.0.0 +- Erste Version +- Grundlegende Suchfunktionalität +- Klickbare Links für Telefon, E-Mail und Adressen +- Share-Funktion für Suchergebnisse \ No newline at end of file