Version 1.0.6: Kombinierte Suche über mehrere Felder
This commit is contained in:
@@ -5,6 +5,11 @@ Alle wichtigen Änderungen an diesem Projekt werden in dieser Datei dokumentiert
|
||||
Das Format basiert auf [Keep a Changelog](https://keepachangelog.com/de/1.0.0/),
|
||||
und dieses Projekt adhäriert zu [Semantic Versioning](https://semver.org/lang/de/).
|
||||
|
||||
## [1.0.6] - 2024-03-17
|
||||
### Geändert
|
||||
- Verbesserte Suchfunktion: Kombinierte Suche über mehrere Felder möglich
|
||||
- Dokumentation: Beispiele für kombinierte Suche hinzugefügt
|
||||
|
||||
## [1.0.5] - 2024-03-17
|
||||
### Geändert
|
||||
- Verbesserte Suchfunktion: Ergebnisliste wird gelöscht, wenn alle Suchfelder leer sind
|
||||
|
13
README.md
13
README.md
@@ -12,6 +12,7 @@ Eine webbasierte Kundensuche für medisoftware mit erweiterten Suchfunktionen.
|
||||
- Fachrichtung
|
||||
- Telefon
|
||||
- Allgemeine Suche über alle Felder
|
||||
- Kombinierte Suche über mehrere Felder
|
||||
- Hervorhebung der Suchbegriffe in den Ergebnissen
|
||||
- Direkte Links zu:
|
||||
- medisoftware Kundenkartei (Kundennummer)
|
||||
@@ -81,6 +82,18 @@ curl "http://localhost:5001/search?telefon=030"
|
||||
curl "http://localhost:5001/search?q=Suchbegriff"
|
||||
```
|
||||
|
||||
### Kombinierte Suche
|
||||
```bash
|
||||
# Suche nach Fachrichtung und Ort
|
||||
curl "http://localhost:5001/search?fachrichtung=Zahnarzt&ort=Berlin"
|
||||
|
||||
# Suche nach Name und Telefon
|
||||
curl "http://localhost:5001/search?name=Mustermann&telefon=030"
|
||||
|
||||
# Suche nach mehreren Kriterien
|
||||
curl "http://localhost:5001/search?fachrichtung=Zahnarzt&ort=Berlin&name=Schmidt"
|
||||
```
|
||||
|
||||
## Version
|
||||
|
||||
Aktuelle Version: [1.0.5](CHANGELOG.md#105---2024-03-17)
|
53
app.py
53
app.py
@@ -13,7 +13,7 @@ logging.basicConfig(level=logging.DEBUG)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# Version der Anwendung
|
||||
VERSION = "1.0.2"
|
||||
VERSION = "1.0.6"
|
||||
|
||||
# Pfad zur CSV-Datei
|
||||
CSV_FILE = "data/customers.csv"
|
||||
@@ -68,10 +68,12 @@ def search():
|
||||
telefon = request.args.get('telefon', '').strip()
|
||||
query = request.args.get('q', '').strip()
|
||||
|
||||
# Wenn keine spezifischen Suchkriterien angegeben sind, aber eine allgemeine Suche
|
||||
if not any([name, ort, kundennummer, fachrichtung, telefon]) and query:
|
||||
# Suche in allen relevanten Feldern
|
||||
mask = (
|
||||
# Initialisiere die Maske für die Filterung
|
||||
mask = pd.Series(True, index=df.index)
|
||||
|
||||
# Wenn eine allgemeine Suche angegeben ist
|
||||
if query:
|
||||
query_mask = (
|
||||
df['Vorname'].str.contains(query, case=False, na=False) |
|
||||
df['Nachname'].str.contains(query, case=False, na=False) |
|
||||
df['Ort'].str.contains(query, case=False, na=False) |
|
||||
@@ -79,32 +81,31 @@ def search():
|
||||
df['Fachrichtung'].str.contains(query, case=False, na=False) |
|
||||
df['Tel'].astype(str).str.contains(query, case=False, na=False)
|
||||
)
|
||||
else:
|
||||
# Spezifische Suche
|
||||
mask = pd.Series(True, index=df.index)
|
||||
mask &= query_mask
|
||||
|
||||
if name:
|
||||
name_mask = (
|
||||
df['Vorname'].str.contains(name, case=False, na=False) |
|
||||
df['Nachname'].str.contains(name, case=False, na=False)
|
||||
)
|
||||
mask &= name_mask
|
||||
# Spezifische Suchkriterien anwenden
|
||||
if name:
|
||||
name_mask = (
|
||||
df['Vorname'].str.contains(name, case=False, na=False) |
|
||||
df['Nachname'].str.contains(name, case=False, na=False)
|
||||
)
|
||||
mask &= name_mask
|
||||
|
||||
if ort:
|
||||
ort_mask = df['Ort'].str.contains(ort, case=False, na=False)
|
||||
mask &= ort_mask
|
||||
if ort:
|
||||
ort_mask = df['Ort'].str.contains(ort, case=False, na=False)
|
||||
mask &= ort_mask
|
||||
|
||||
if kundennummer:
|
||||
kundennummer_mask = df['Nummer'].astype(str).str.contains(kundennummer, case=False, na=False)
|
||||
mask &= kundennummer_mask
|
||||
if kundennummer:
|
||||
kundennummer_mask = df['Nummer'].astype(str).str.contains(kundennummer, case=False, na=False)
|
||||
mask &= kundennummer_mask
|
||||
|
||||
if fachrichtung:
|
||||
fachrichtung_mask = df['Fachrichtung'].str.contains(fachrichtung, case=False, na=False)
|
||||
mask &= fachrichtung_mask
|
||||
if fachrichtung:
|
||||
fachrichtung_mask = df['Fachrichtung'].str.contains(fachrichtung, case=False, na=False)
|
||||
mask &= fachrichtung_mask
|
||||
|
||||
if telefon:
|
||||
telefon_mask = df['Tel'].astype(str).str.contains(telefon, case=False, na=False)
|
||||
mask &= telefon_mask
|
||||
if telefon:
|
||||
telefon_mask = df['Tel'].astype(str).str.contains(telefon, case=False, na=False)
|
||||
mask &= telefon_mask
|
||||
|
||||
results = df[mask].to_dict('records')
|
||||
logger.info(f"{len(results)} Ergebnisse gefunden")
|
||||
|
Reference in New Issue
Block a user