ai-lawyer-agent/core/tools/spravneKonanie.py
2025-12-12 08:41:11 +01:00

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)} 🛑"}