import requests from pydantic import BaseModel, conint from typing import Optional, List from enum import Enum from agents import function_tool API_BASE_URL = "https://obcan.justice.sk/pilot/api/ress-isu-service" class SortDirection(str, Enum): ASC = "ASC" DESC = "DESC" class CivilProceedingAPI: class CivilProceedParams(BaseModel): query: Optional[str] = None typSuduFacetFilter: Optional[List[str]] = None krajFacetFilter: Optional[List[str]] = None okresFacetFilter: Optional[List[str]] = None usekFacetFilter: Optional[List[str]] = None formaUkonuFacetFilter: Optional[List[str]] = None pojednavaniaOd: Optional[str] = None pojednavaniaDo: Optional[str] = None guidSudca: Optional[str] = None guidSud: Optional[str] = None spisovaZnacka: Optional[str] = None verejneVyhlasenie: Optional[bool] = None indexDatumOd: Optional[str] = None indexDatumDo: Optional[str] = None sortProperty: Optional[str] = None sortDirection: SortDirection = SortDirection.ASC page: int = 0 size: int = 20 @function_tool def about_civil_proceeding(args: CivilProceedParams) -> dict: """ Načítanie zoznamu občianskoprávnych pojednávaní a verejne vyhlásených rozsudkov na základe filtrovacích kritérií :param query: Hľadané slovo alebo slovné spojenie, podľa ktorého sa vyhľadávajú občianskoprávne pojednávania. :param typSuduFacetFilter: Zoznam typov súdov (fazetový filter), napr. ["Okresný súd", "Krajský súd", "Mestský súd"]. :param krajFacetFilter: Zoznam krajov (fazetový filter), napr. ["Bratislavský kraj", "Košický kraj", "Prešovský kraj"]. :param okresFacetFilter: Zoznam okresov (fazetový filter), napr. ["Okres Košice I", "Okres Bratislava IV", "Okres Žilina"]. :param usekFacetFilter: Zoznam úsekov (fazetový filter), napr. ["C", "O", "S"]. :param formaUkonuFacetFilter: Zoznam foriem úkonu (fazetový filter), napr. ["Pojednávanie bez rozhodnutia", "Pojednávanie a rozhodnutie", "Verejné vyhlásenie rozsudku"]. :param pojednavaniaOd: Dátum pojednávania OD (formát: DD.MM.RRRR), napr. "01.01.2025". :param pojednavaniaDo: Dátum pojednávania DO (formát: DD.MM.RRRR), napr. "31.12.2025". :param guidSudca: Identifikátor sudcu pre filtrovanie pojednávaní konkrétneho sudcu, napr. "sudca_2442". :param guidSud: Identifikátor súdu pre filtrovanie pojednávaní konkrétneho súdu, napr. "sud_135". :param spisovaZnacka: Spisová značka pojednávania, napr. "30P/1/2025". :param verejneVyhlasenie: Príznak, či zahrnúť len verejne vyhlásené rozsudky. Hodnota typu boolean. :param indexDatumOd: Dátum indexácie OD (formát: DD.MM.RRRR), napr. "01.01.2025". :param indexDatumDo: Dátum indexácie DO (formát: DD.MM.RRRR), napr. "31.12.2025". :param sortProperty: Názov atribútu, podľa ktorého sa majú záznamy zoradiť, napr. "datumPojednavania", "spisovaZnacka". :param sortDirection: Smer zoradenia záznamov. Možnosti: "ASC" (predvolené) alebo "DESC". :param page: Číslo stránky (0 = prvá stránka) pre stránkovanie výsledkov. :param size: Počet záznamov na stránku (predvolené 20) pre stránkovanie výsledkov. :return: Slovník (JSON) obsahujúci zoznam občianskoprávnych pojednávaní a verejne vyhlásených rozsudkov s detailnými informáciami, metadátami a filtrami. """ try: url = f"{API_BASE_URL}/v1/obcianPojednavania" response = requests.get(url, params=args.model_dump()) response.raise_for_status() if response.status_code == 200: data = response.json() print(f"❗🔨\n {data}") return {"success": True, "data": data} else: return {"success": False, "error": f"Unexpected status code: {response.status_code} ⚠️"} except Exception as e: return {"success": False, "error": f"Error get contract details: {str(e)} 🛑"} @function_tool def civil_proceeding_id(self, id: str) -> dict: """ Načítanie detailu občianskoprávneho pojednávania na základe identifikátora. :param id: Identifikátor sudcu (povinný parameter), napr. "sudca_123", "sudca_456". :return: Slovník (JSON) obsahujúci detailné informácie o občianskoprávnom pojednávaní na základe identifikátora. """ try: url = f"{API_BASE_URL}/v1/obcianPojednavania/{id}" response = requests.get(url) response.raise_for_status() if response.status_code == 200: data = response.json() print(f"⭕🔨\n {data}") return {"success": True, "data": data} else: return {"success": False, "error": f"Unexpected status code: {response.status_code} ⚠️"} except Exception as e: return {"success": False, "error": f"Error : {str(e)} 🛑"} class CivilProceedAutocomplete(BaseModel): query: Optional[str] = None guidSud: Optional[str] = None giudSud: Optional[str] = None verejneVyhlasenie: Optional[bool] = None limit: Optional[conint(ge=0)] = None @function_tool def civil_proceeding_autocomplete(self, args: CivilProceedAutocomplete) -> dict: """ Autocomplete služba pre vyhľadávanie občianskoprávnych pojednávaní a verejne vyhlásených rozsudkov. :param query: Hľadané slovo alebo slovné spojenie pre vyhľadávanie pojednávaní. :param guidSud: Identifikátor súdu pre filtrovanie pojednávaní konkrétneho súdu. :param giudSud: Duplicitný parameter - pravdepodobne chyba, použite guidSud. :param verejneVyhlasenie: Príznak, či zahrnúť len verejne vyhlásené rozsudky. :param limit: Maximálny počet návrhov (0 = všetky možné návrhy). :return: Slovník (JSON) obsahujúci zoznam návrhov pre autocomplete. """ try: url = f"{API_BASE_URL}/v1/obcianPojednavania/autocomplete" response = requests.get(url, args.model_dump()) response.raise_for_status() if response.status_code == 200: data = response.json() print(f"📛🔨\n {data}") return {"success": True, "data": data} else: return {"success": False, "error": f"Unexpected status code: {response.status_code} ⚠️"} except Exception as e: return {"success": False, "error": f"Error : {str(e)} 🛑"}