Suchfeld für Telefonnummer hinzugefügt

This commit is contained in:
2025-03-17 20:54:15 +01:00
parent 8fb10a35e8
commit 0285f0a520
2 changed files with 53 additions and 45 deletions

83
app.py
View File

@@ -42,54 +42,51 @@ def index():
@app.route('/search')
def search():
try:
# Spezifische Suchparameter
name = request.args.get('name', '').lower()
ort = request.args.get('ort', '').lower()
kundennummer = request.args.get('kundennummer', '').lower()
fachrichtung = request.args.get('fachrichtung', '').lower()
# Allgemeine Suche (für die alte Funktionalität)
query = request.args.get('q', '').lower()
logger.info(f"Suche nach - Name: {name}, Ort: {ort}, Kundennummer: {kundennummer}, Fachrichtung: {fachrichtung}, Query: {query}")
df = load_data()
if df is None:
return jsonify({"error": "Datenbank konnte nicht geladen werden"}), 500
# Basis-Mask (immer True)
mask = pd.Series(True, index=df.index)
# Spezifische Suchkriterien anwenden
if name:
name_mask = (
df['Vorname'].str.lower().str.contains(name, na=False) |
df['Nachname'].str.lower().str.contains(name, na=False)
# Suchparameter aus der URL holen
name = request.args.get('name', '').strip()
ort = request.args.get('ort', '').strip()
kundennummer = request.args.get('kundennummer', '').strip()
fachrichtung = request.args.get('fachrichtung', '').strip()
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 = (
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) |
df['Nummer'].astype(str).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)
)
mask &= name_mask
else:
# Spezifische Suche
mask = pd.Series(True, index=df.index)
if ort:
ort_mask = df['Ort'].str.lower().str.contains(ort, na=False)
mask &= ort_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
if kundennummer:
kunden_mask = df['Nummer'].astype(str).str.contains(kundennummer, na=False)
mask &= kunden_mask
if ort:
ort_mask = df['Ort'].str.contains(ort, case=False, na=False)
mask &= ort_mask
if fachrichtung:
fach_mask = df['Fachrichtung'].str.lower().str.contains(fachrichtung, na=False)
mask &= fach_mask
if kundennummer:
kundennummer_mask = df['Nummer'].astype(str).str.contains(kundennummer, case=False, na=False)
mask &= kundennummer_mask
# Wenn eine allgemeine Suche vorhanden ist, diese zusätzlich anwenden
if query:
query_mask = (
df['Vorname'].str.lower().str.contains(query, na=False) |
df['Nachname'].str.lower().str.contains(query, na=False) |
df['Fachrichtung'].str.lower().str.contains(query, na=False) |
df['Ort'].str.lower().str.contains(query, na=False) |
df['Nummer'].astype(str).str.contains(query, na=False)
)
mask &= query_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
results = df[mask].to_dict('records')
logger.info(f"{len(results)} Ergebnisse gefunden")