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/),
|
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/).
|
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
|
## [1.0.5] - 2024-03-17
|
||||||
### Geändert
|
### Geändert
|
||||||
- Verbesserte Suchfunktion: Ergebnisliste wird gelöscht, wenn alle Suchfelder leer sind
|
- 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
|
- Fachrichtung
|
||||||
- Telefon
|
- Telefon
|
||||||
- Allgemeine Suche über alle Felder
|
- Allgemeine Suche über alle Felder
|
||||||
|
- Kombinierte Suche über mehrere Felder
|
||||||
- Hervorhebung der Suchbegriffe in den Ergebnissen
|
- Hervorhebung der Suchbegriffe in den Ergebnissen
|
||||||
- Direkte Links zu:
|
- Direkte Links zu:
|
||||||
- medisoftware Kundenkartei (Kundennummer)
|
- medisoftware Kundenkartei (Kundennummer)
|
||||||
@@ -81,6 +82,18 @@ curl "http://localhost:5001/search?telefon=030"
|
|||||||
curl "http://localhost:5001/search?q=Suchbegriff"
|
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
|
## Version
|
||||||
|
|
||||||
Aktuelle Version: [1.0.5](CHANGELOG.md#105---2024-03-17)
|
Aktuelle Version: [1.0.5](CHANGELOG.md#105---2024-03-17)
|
61
app.py
61
app.py
@@ -13,7 +13,7 @@ logging.basicConfig(level=logging.DEBUG)
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
# Version der Anwendung
|
# Version der Anwendung
|
||||||
VERSION = "1.0.2"
|
VERSION = "1.0.6"
|
||||||
|
|
||||||
# Pfad zur CSV-Datei
|
# Pfad zur CSV-Datei
|
||||||
CSV_FILE = "data/customers.csv"
|
CSV_FILE = "data/customers.csv"
|
||||||
@@ -68,10 +68,12 @@ def search():
|
|||||||
telefon = request.args.get('telefon', '').strip()
|
telefon = request.args.get('telefon', '').strip()
|
||||||
query = request.args.get('q', '').strip()
|
query = request.args.get('q', '').strip()
|
||||||
|
|
||||||
# Wenn keine spezifischen Suchkriterien angegeben sind, aber eine allgemeine Suche
|
# Initialisiere die Maske für die Filterung
|
||||||
if not any([name, ort, kundennummer, fachrichtung, telefon]) and query:
|
mask = pd.Series(True, index=df.index)
|
||||||
# Suche in allen relevanten Feldern
|
|
||||||
mask = (
|
# Wenn eine allgemeine Suche angegeben ist
|
||||||
|
if query:
|
||||||
|
query_mask = (
|
||||||
df['Vorname'].str.contains(query, case=False, na=False) |
|
df['Vorname'].str.contains(query, case=False, na=False) |
|
||||||
df['Nachname'].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) |
|
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['Fachrichtung'].str.contains(query, case=False, na=False) |
|
||||||
df['Tel'].astype(str).str.contains(query, case=False, na=False)
|
df['Tel'].astype(str).str.contains(query, case=False, na=False)
|
||||||
)
|
)
|
||||||
else:
|
mask &= query_mask
|
||||||
# Spezifische Suche
|
|
||||||
mask = pd.Series(True, index=df.index)
|
# Spezifische Suchkriterien anwenden
|
||||||
|
if name:
|
||||||
if name:
|
name_mask = (
|
||||||
name_mask = (
|
df['Vorname'].str.contains(name, case=False, na=False) |
|
||||||
df['Vorname'].str.contains(name, case=False, na=False) |
|
df['Nachname'].str.contains(name, case=False, na=False)
|
||||||
df['Nachname'].str.contains(name, case=False, na=False)
|
)
|
||||||
)
|
mask &= name_mask
|
||||||
mask &= name_mask
|
|
||||||
|
if ort:
|
||||||
if ort:
|
ort_mask = df['Ort'].str.contains(ort, case=False, na=False)
|
||||||
ort_mask = df['Ort'].str.contains(ort, case=False, na=False)
|
mask &= ort_mask
|
||||||
mask &= ort_mask
|
|
||||||
|
if kundennummer:
|
||||||
if kundennummer:
|
kundennummer_mask = df['Nummer'].astype(str).str.contains(kundennummer, case=False, na=False)
|
||||||
kundennummer_mask = df['Nummer'].astype(str).str.contains(kundennummer, case=False, na=False)
|
mask &= kundennummer_mask
|
||||||
mask &= kundennummer_mask
|
|
||||||
|
if fachrichtung:
|
||||||
if fachrichtung:
|
fachrichtung_mask = df['Fachrichtung'].str.contains(fachrichtung, case=False, na=False)
|
||||||
fachrichtung_mask = df['Fachrichtung'].str.contains(fachrichtung, case=False, na=False)
|
mask &= fachrichtung_mask
|
||||||
mask &= fachrichtung_mask
|
|
||||||
|
|
||||||
if telefon:
|
if telefon:
|
||||||
telefon_mask = df['Tel'].astype(str).str.contains(telefon, case=False, na=False)
|
telefon_mask = df['Tel'].astype(str).str.contains(telefon, case=False, na=False)
|
||||||
mask &= telefon_mask
|
mask &= telefon_mask
|
||||||
|
|
||||||
results = df[mask].to_dict('records')
|
results = df[mask].to_dict('records')
|
||||||
logger.info(f"{len(results)} Ergebnisse gefunden")
|
logger.info(f"{len(results)} Ergebnisse gefunden")
|
||||||
|
Reference in New Issue
Block a user