141 lines
6.8 KiB
Python
141 lines
6.8 KiB
Python
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 DecisionAPI:
|
|
|
|
class AboutDecision(BaseModel):
|
|
query: Optional[str] = None
|
|
typSuduFacetFilter: Optional[List[str]] = None
|
|
krajFacetFilter: Optional[List[str]] = None
|
|
okresFacetFilter: Optional[List[str]] = None
|
|
odkazovanePredpisy: Optional[str] = None
|
|
oblastPravnejUpravyFacetFilter: Optional[List[str]] = None
|
|
podOblastPravnejUpravyFacetFilter: Optional[List[str]] = None
|
|
formaRozhodnutiaFacetFilter: Optional[List[str]] = None
|
|
povahaRozhodnutiaFacetFilter: Optional[str] = None
|
|
vydaniaOd: Optional[str] = None
|
|
vydaniaDo: Optional[str] = None
|
|
ecli: Optional[str] = None
|
|
spisovaZnacka: Optional[str] = None
|
|
cisloSpisu: Optional[str] = None
|
|
guidSudca: Optional[str] = None
|
|
guidSud: Optional[str] = None
|
|
indexDatumOd: Optional[str] = None
|
|
indexDatumDo: Optional[str] = None
|
|
sortProperty: Optional[str] = None
|
|
sortDirection: SortDirection = SortDirection.ASC
|
|
page: Optional[int] = None
|
|
size : conint(ge=0) = 20
|
|
|
|
@function_tool
|
|
def about_decision(self, args: AboutDecision) -> dict:
|
|
"""
|
|
Načítanie zoznamu rozhodnutí na základe filtrovacích kritérií
|
|
|
|
:param query: Hľadané slovo alebo slovné spojenie, podľa ktorého sa vyhľadávajú rozhodnutia.
|
|
: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. ["Košický kraj", "Bratislavský kraj", "Banskobystrický kraj"].
|
|
:param okresFacetFilter: Zoznam okresov (fazetový filter), napr. ["Okres Banská Bystrica", "Okres Košice I", "Okres Bratislava I"].
|
|
:param odkazovanePredpisy: Odkazované predpisy, na ktoré sa rozhodnutie odvoláva.
|
|
:param oblastPravnejUpravyFacetFilter: Zoznam oblastí právnej úpravy (fazetový filter), napr. ["Občianske právo",
|
|
"Rodinné právo", "Obchodné právo"].
|
|
:param podOblastPravnejUpravyFacetFilter: Zoznam podoblastí právnej úpravy
|
|
(fazetový filter), napr. ["Exekúcia a výkon rozhodnutí",
|
|
"Spotrebiteľské zmluvy", "Vyživovacie povinnosti"].
|
|
:param formaRozhodnutiaFacetFilter: Zoznam foriem rozhodnutia (fazetový filter), napr. ["Uznesenie", "Rozsudok", "Platobný rozkaz"].
|
|
:param povahaRozhodnutiaFacetFilter: Povaha rozhodnutia, napr. "Prvostupňové nenapadnuté opravnými prostriedkami".
|
|
:param vydaniaOd: Dátum vydania OD (formát: DD.MM.RRRR), napr. "01.01.2020".
|
|
:param vydaniaDo: Dátum vydania DO (formát: DD.MM.RRRR), napr. "31.12.2025".
|
|
:param ecli: ECLI identifikátor rozhodnutia.
|
|
:param spisovaZnacka: Spisová značka rozhodnutia, napr. "4T/20/2014".
|
|
:param cisloSpisu: Identifikačné číslo spisu.
|
|
:param guidSudca: Identifikátor sudcu pre filtrovanie rozhodnutí konkrétneho sudcu, napr. "sudca_1600".
|
|
:param guidSud: Identifikátor súdu pre filtrovanie rozhodnutí konkrétneho súdu, napr. "sud_156".
|
|
: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. "datumVydania", "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 rozhodnutí s detailnými informáciami, metadátami a filtrami.
|
|
"""
|
|
try:
|
|
url = f"{API_BASE_URL}/v1/rozhodnutie"
|
|
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 decision_id(self, id: str) -> dict:
|
|
"""
|
|
Načítanie rozhodnutia na základe id
|
|
|
|
:param id: Identifikátor sudu (povinný parameter), napr. "sud_123", "sud_456".
|
|
|
|
:return: Slovník (JSON) obsahujúci detailné informácie o rozhodnutií na základe id
|
|
"""
|
|
try:
|
|
url = f"{API_BASE_URL}/v1/rozhodnutie/{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 DecisionAutocomplete(BaseModel):
|
|
query: Optional[str] = None
|
|
guidSud: Optional[str] = None
|
|
limit: Optional[conint(ge=0)] = None
|
|
|
|
@function_tool
|
|
def decision_autocomplete(self, args: DecisionAutocomplete) -> dict:
|
|
"""
|
|
Autocomplete služba pre načítanie rozhodnutia.
|
|
|
|
:param query: Hľadané slovo alebo slovné spojenie
|
|
:param guidSud: Identifikátor súdu, napr. "sud_123", "sud_456".
|
|
:param limit: Maximálny počet rozhodnutie, ktoré sa majú vrátiť.
|
|
|
|
:return: Slovník (JSON) obsahujúci zoznam rozhodnutie pre autocomplete.
|
|
"""
|
|
try:
|
|
url = f"{API_BASE_URL}/v1/rozhodnutie/autocomplete"
|
|
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)} 🛑" } |