#!/usr/bin/env python3 """ Test: Finde "Test 6667426" Adresse in API ==================================== User sagt: In Advoware wird "Test 6667426" als Hauptadresse angezeigt Ziel: API-Response dieser Adresse analysieren """ import asyncio import json import sys import os sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..')) from services.advoware import AdvowareAPI # Farben für Output GREEN = '\033[92m' RED = '\033[91m' YELLOW = '\033[93m' BLUE = '\033[94m' BOLD = '\033[1m' RESET = '\033[0m' BETNR = 104860 class SimpleLogger: def info(self, msg): pass def error(self, msg): pass def warning(self, msg): pass def debug(self, msg): pass class SimpleContext: def __init__(self): self.logger = SimpleLogger() def print_section(title): print(f"\n{BLUE}{BOLD}{'='*70}{RESET}") print(f"{BLUE}{BOLD}{title}{RESET}") print(f"{BLUE}{BOLD}{'='*70}{RESET}\n") def print_success(msg): print(f"{GREEN}✓ {msg}{RESET}") def print_error(msg): print(f"{RED}✗ {msg}{RESET}") def print_info(msg): print(f"{YELLOW}ℹ {msg}{RESET}") async def main(): print_section("Suche 'Test 6667426' Adresse in API") # Initialize API context = SimpleContext() api = AdvowareAPI(context=context) # Hole alle Adressen adressen = await api.api_call( f'/api/v1/advonet/Beteiligte/{BETNR}/Adressen', method='GET' ) if not adressen: print_error("Keine Adressen gefunden!") return print_info(f"Gefunden: {len(adressen)} Adressen") # Suche nach "Test 6667426" target_addr = None for addr in adressen: strasse = addr.get('strasse', '') or '' anschrift = addr.get('anschrift', '') or '' if '6667426' in strasse or '6667426' in anschrift: target_addr = addr break if not target_addr: print_error("Adresse 'Test 6667426' NICHT gefunden!") print_info("Suche nach 'Test' in Adress-Feldern...") # Zeige alle Adressen mit "Test" test_adressen = [] for addr in adressen: strasse = addr.get('strasse', '') if 'Test' in strasse: test_adressen.append(addr) if test_adressen: print_info(f"Gefunden: {len(test_adressen)} Adressen mit 'Test':") for addr in test_adressen: print(f" - Index: {addr.get('reihenfolgeIndex')}, " f"Strasse: {addr.get('strasse')}, " f"standardAnschrift: {addr.get('standardAnschrift')}") return # Zeige vollständige Adresse print_section("GEFUNDEN: Test 6667426") print(f"{BOLD}Vollständiger API-Response:{RESET}") print(json.dumps(target_addr, indent=2, ensure_ascii=False)) # Analysiere wichtige Felder print_section("Wichtige Felder") wichtige_felder = [ 'id', 'rowId', 'reihenfolgeIndex', 'strasse', 'plz', 'ort', 'anschrift', 'standardAnschrift', # ← Das ist der Key! 'bemerkung', 'gueltigVon', 'gueltigBis' ] for feld in wichtige_felder: wert = target_addr.get(feld) # Highlight standardAnschrift if feld == 'standardAnschrift': if wert: print(f" {GREEN}{BOLD}{feld}: {wert}{RESET} ← HAUPTADRESSE!") else: print(f" {RED}{BOLD}{feld}: {wert}{RESET} ← NICHT Hauptadresse!") else: print(f" {feld}: {wert}") # Vergleiche mit anderen Adressen print_section("Vergleich mit anderen Adressen") hauptadressen = [a for a in adressen if a.get('standardAnschrift')] print_info(f"Anzahl Adressen mit standardAnschrift=true: {len(hauptadressen)}") if len(hauptadressen) == 0: print_error("KEINE einzige Adresse hat standardAnschrift=true!") print_info("Aber Advoware zeigt trotzdem eine als 'Haupt' an?") elif len(hauptadressen) == 1: if hauptadressen[0] == target_addr: print_success("Test 6667426 ist die EINZIGE Hauptadresse!") else: print_error("Test 6667426 ist NICHT die Hauptadresse!") print_info(f"Hauptadresse ist: {hauptadressen[0].get('strasse')}") else: print_error(f"MEHRERE Hauptadressen ({len(hauptadressen)})!") for ha in hauptadressen: marker = " ← Das ist Test 6667426!" if ha == target_addr else "" print(f" - Index {ha.get('reihenfolgeIndex')}: {ha.get('strasse')}{marker}") # Prüfe ob es die neueste ist print_section("Position/Reihenfolge") max_index = max(a.get('reihenfolgeIndex', 0) for a in adressen) target_index = target_addr.get('reihenfolgeIndex') print_info(f"Test 6667426 hat Index: {target_index}") print_info(f"Höchster Index: {max_index}") if target_index == max_index: print_success("Test 6667426 ist die NEUESTE Adresse (höchster Index)!") else: print_error(f"Test 6667426 ist NICHT die neueste (Differenz: {max_index - target_index})") # Sortierung nach Index sorted_adressen = sorted(adressen, key=lambda a: a.get('reihenfolgeIndex', 0)) print_info(f"\nAlle Adressen sortiert nach reihenfolgeIndex:") for i, addr in enumerate(sorted_adressen[-10:]): # Zeige letzte 10 idx = addr.get('reihenfolgeIndex') strasse = addr.get('strasse', '')[:40] standard = addr.get('standardAnschrift') marker = "" if addr == target_addr: marker = f" {GREEN}← Test 6667426{RESET}" standard_marker = f"{GREEN}[HAUPT]{RESET}" if standard else "" print(f" {idx:3d}: {strasse:40s} {standard_marker}{marker}") if __name__ == '__main__': asyncio.run(main())