142 lines
5.6 KiB
Python
142 lines
5.6 KiB
Python
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)} 🛑"} |