import requests from pydantic import BaseModel, conint from typing import List, Optional 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 AdminProceedAPI: class AdminProceed(BaseModel): query: Optional[str] = None druhFacetFilter: Optional[List[str]] = None datumPravoplatnostiOd : Optional[str] = None datumPravoplatnostiDo : Optional[str] = None page: Optional[int] = None size : conint(ge=0) = 20 sortProperty: Optional[str] = None sortDirection: SortDirection = SortDirection.ASC @function_tool def about_admin_proceed(self, args: AdminProceed) -> dict: """ :param query: Hľadané slovo alebo slovné spojenie. :param druhFacetFilter: Zoznam druhov správnych konaní (fazetový filter). :param datumPravoplatnostiOd: Dátum právoplatnosti OD (formát: DD.MM.RRRR). Príklad: "15.03.2023", "01.01.2020" :param datumPravoplatnosiDo: Dátum právoplatnosti DO (formát: DD.MM.RRRR). Príklad: "15.03.2023", "01.01.2020" :param page: Číslo stránky (0 = prvá stránka). Poznámka: Zmena 'page' zobrazí ĎALŠIE konania, nie tie isté. Príklad: 'page=0' → konania 1-20, 'page=1' → konania 21-40. :param size: Počet záznamov na stránku (predvolené 20). Príklad: 'size=10' → 10 konaní na stránke. :param sortProperty: Atribút pre zoradenie výsledkov. :param sortDirection: Smer zoradenia (ASC alebo DESC). :return: Slovník s výsledkami vyhľadávania správnych konaní. """ try: url = f"{API_BASE_URL}/v1/spravneKonanie" 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 : {str(e)} 🛑"} @function_tool def admin_proceed_id(self, id: str) -> dict: """ Načítanie binárneho obsahu prílohy správneho konania na základe ID. :param id: Unikátny identifikátor administratívneho konania (povinný parameter). Príklad: sud_175 :return: Slovník (JSON) obsahujúci binárne dáta prílohy a metainformácie. """ try: url = f"{API_BASE_URL}/v1/spravneKonanie/{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)} 🛑"} @function_tool def admin_proceed_attachments(self, id: str) -> dict: """ Načítanie správneho konania na základe id :param id: Unikátny identifikátor administratívneho konania (povinný parameter). Príklad: sud_175 :return: Slovník (JSON) obsahujúci detailné informácie o správnom konaní na základe id. """ try: url = f"{API_BASE_URL}/v1/spravneKonanie/priloha/{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 AdminProceedAutocomplete(BaseModel): query: Optional[str] = None limit: Optional[conint(ge=1)] = None @function_tool def admin_proceed_autocomplete(self, args: AdminProceedAutocomplete) -> dict: """ Autocomplete služba pre vyhľadávanie správnych konaní. :param query: Hľadané slovo alebo slovné spojenie pre vyhľadávanie správnych konaní. :param limit: Maximálny počet návrhov, ktoré sa majú vrátiť. None → API vráti 5 dokumentov (predvolená hodnota). Hodnota 0 spôsobí chybu API, preto použite None namiesto 0 :return: Slovník (JSON) obsahujúci zoznam návrhov pre autocomplete. """ try: url = f"{API_BASE_URL}/v1/spravneKonanie/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)} 🛑"}