126 lines
5.7 KiB
Python
126 lines
5.7 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 JudgeAPI:
|
|
|
|
class JudgeParams(BaseModel):
|
|
query: Optional[str] = None
|
|
funkciaFacetFilter: Optional[List[str]] = None
|
|
typSuduFacetFilter: Optional[List[str]] = None
|
|
krajFacetFilter: Optional[List[str]] = None
|
|
okresFacetFilter: Optional[List[str]] = None
|
|
stavZapisuFacetFilter: Optional[List[str]] = None
|
|
guidSud: Optional[str] = None
|
|
page: Optional[int] = None
|
|
size: Optional[conint(ge=0)] = None
|
|
sortProperty: Optional[str] = None
|
|
sortDirection: SortDirection = SortDirection.ASC
|
|
|
|
@function_tool
|
|
def about_judge(self, args: JudgeParams):
|
|
"""
|
|
Načítanie zoznamu sudcov na základe filtrovacích kritérii
|
|
|
|
:param query: Hľadané slovo alebo slovné spojenie pre vyhľadávanie sudcov.
|
|
:param funkciaFacetFilter: Zoznam funkcií sudcov: ["Sudca", "Predseda", "Podpredseda", "Hosťujúci sudca", "a ine"].
|
|
:param typSuduFacetFilter: Zoznam typov súdov: ["Okresný súd", "Krajský súd", "Mestský súd",
|
|
"Najvyšší súd SR", "Správny súd",
|
|
"Špecializovaný trestný súd"].
|
|
:param krajFacetFilter: Zoznam krajov: ["Bratislavský kraj", "Košický kraj", "Banskobystrický kraj",
|
|
"Prešovský kraj", "Žilinský kraj", "Trnavský kraj", "Nitriansky kraj",
|
|
"Trenčiansky kraj"].
|
|
:param okresFacetFilter: Zoznam okresov: ["Okres [mesto Slovenska]"] napr. "Okres Bratislava I", "Okres Košice I".
|
|
:param stavZapisuFacetFilter: Zoznam stavov zápisu: ["prerusenie vykonu - poberatel", "aktivity",
|
|
"odvolany", "vymazany", "prerusenie vykonu - ina funkce"].
|
|
:param guidSud: Identifikátor súdu pre filtrovanie sudcov konkrétneho súdu, napr. "sud_101".
|
|
: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.
|
|
:param sortProperty: Atribút pre zoradenie výsledkov, napr. "priezvisko", "meno".
|
|
:param sortDirection: Smer zoradenia záznamov: "ASC" (predvolené) alebo "DESC".
|
|
|
|
:return: Slovník (JSON) obsahujúci zoznam sudcov s detailnými informáciami, metadátami a filtrami.
|
|
|
|
:return: Slovník (JSON) obsahujúci zoznam súdov na základe filtrovacích kritérii
|
|
"""
|
|
try:
|
|
url = f"{API_BASE_URL}/v1/sudca"
|
|
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 judge_id(self, id: str) -> dict:
|
|
"""
|
|
Načítanie detailu sudcu 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 sudcovi na základe identifikátora.
|
|
"""
|
|
try:
|
|
url = f"{API_BASE_URL}/v1/sudca/{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 JudgeAutocomplete(BaseModel):
|
|
query: Optional[str] = None
|
|
guidSud: Optional[str] = None
|
|
limit: Optional[conint(ge=1)] = None
|
|
|
|
@function_tool
|
|
def judge_autocomplete(self, args: JudgeAutocomplete) -> dict:
|
|
"""
|
|
Autocomplete služba pre vyhľadávanie sudcov.
|
|
|
|
:param query: Hľadané slovo alebo slovné spojenie.
|
|
:param guidSud: Identifikátor súdu pre filtrovanie sudcov konkrétneho súdu.
|
|
Príklad: "sud_175"
|
|
: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 sudcov pre autocomplete.
|
|
"""
|
|
try:
|
|
url = f"{API_BASE_URL}/v1/sudca/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)} 🛑"} |