From 5a930d5cea6fe4691d25d0de81c7eac3efc30d8c Mon Sep 17 00:00:00 2001 From: saidsurucu Date: Sat, 28 Jun 2025 20:42:10 +0300 Subject: [PATCH] fix gemini empty enum issue --- bedesten_mcp_module/models.py | 2 +- mcp_server_main.py | 31 +++++++++++++++++++++---------- uyusmazlik_mcp_module/client.py | 6 ++++-- yargitay_mcp_module/models.py | 8 ++++---- 4 files changed, 30 insertions(+), 17 deletions(-) diff --git a/bedesten_mcp_module/models.py b/bedesten_mcp_module/models.py index 6fdbff4..e3ab88f 100644 --- a/bedesten_mcp_module/models.py +++ b/bedesten_mcp_module/models.py @@ -9,7 +9,7 @@ from yargitay_mcp_module.models import YargitayBirimEnum # Danıştay Chamber/Board Options DanistayBirimEnum = Literal[ - "", # Empty string for "All" chambers + "ALL", # "ALL" for all chambers # Main Councils "Büyük Gen.Kur.", # Grand General Assembly "İdare Dava Daireleri Kurulu", # Administrative Cases Chambers Council diff --git a/mcp_server_main.py b/mcp_server_main.py index ff6af0e..b6acdf1 100644 --- a/mcp_server_main.py +++ b/mcp_server_main.py @@ -107,7 +107,8 @@ bedesten_client_instance = BedestenApiClient() KARAR_TURU_ADI_TO_GUID_ENUM_MAP = { - "": RekabetKararTuruGuidEnum.TUMU, + "": RekabetKararTuruGuidEnum.TUMU, # Keep for backward compatibility + "ALL": RekabetKararTuruGuidEnum.TUMU, # Map "ALL" to TUMU "Birleşme ve Devralma": RekabetKararTuruGuidEnum.BIRLESME_DEVRALMA, "Diğer": RekabetKararTuruGuidEnum.DIGER, "Menfi Tespit ve Muafiyet": RekabetKararTuruGuidEnum.MENFI_TESPIT_MUAFIYET, @@ -134,9 +135,9 @@ async def search_yargitay_detailed( • +"phrase1" +"phrase2" = Multiple required phrases • +"required" -"excluded" = Include and exclude Examples: arsa payı | "arsa payı" | +"arsa payı" +"bozma sebebi" | bozma*"""), - birimYrgKurulDaire: YargitayBirimEnum = Field("", description=""" + birimYrgKurulDaire: YargitayBirimEnum = Field("ALL", description=""" Yargıtay chamber/board selection. Available options: - • Empty string ('') for ALL chambers + • 'ALL' for all chambers • Hukuk Genel Kurulu (Civil General Assembly) • 1. Hukuk Dairesi through 23. Hukuk Dairesi (Civil Chambers 1-23) • Hukuk Daireleri Başkanlar Kurulu (Civil Chambers Presidents Board) @@ -661,8 +662,8 @@ async def get_emsal_document_markdown(id: str) -> EmsalDocumentMarkdown: ) async def search_uyusmazlik_decisions( icerik: str = Field("", description="Keyword or content for main text search."), - bolum: Literal["", "Ceza Bölümü", "Genel Kurul Kararları", "Hukuk Bölümü"] = Field("", description="Select the department (Bölüm)."), - uyusmazlik_turu: Literal["", "Görev Uyuşmazlığı", "Hüküm Uyuşmazlığı"] = Field("", description="Select the type of dispute."), + bolum: Literal["ALL", "Ceza Bölümü", "Genel Kurul Kararları", "Hukuk Bölümü"] = Field("ALL", description="Select the department (Bölüm). Use 'ALL' for all departments."), + uyusmazlik_turu: Literal["ALL", "Görev Uyuşmazlığı", "Hüküm Uyuşmazlığı"] = Field("ALL", description="Select the type of dispute. Use 'ALL' for all types."), karar_sonuclari: List[Literal["Hüküm Uyuşmazlığı Olmadığına Dair", "Hüküm Uyuşmazlığı Olduğuna Dair"]] = Field(default_factory=list, description="List of desired 'Karar Sonucu' types."), esas_yil: str = Field("", description="Case year ('Esas Yılı')."), esas_sayisi: str = Field("", description="Case number ('Esas Sayısı')."), @@ -722,8 +723,16 @@ async def search_uyusmazlik_decisions( """ # Convert string literals to enums - bolum_enum = UyusmazlikBolumEnum(bolum) if bolum else UyusmazlikBolumEnum.TUMU - uyusmazlik_turu_enum = UyusmazlikTuruEnum(uyusmazlik_turu) if uyusmazlik_turu else UyusmazlikTuruEnum.TUMU + # Map "ALL" to TUMU for backward compatibility + if bolum == "ALL": + bolum_enum = UyusmazlikBolumEnum.TUMU + else: + bolum_enum = UyusmazlikBolumEnum(bolum) if bolum else UyusmazlikBolumEnum.TUMU + + if uyusmazlik_turu == "ALL": + uyusmazlik_turu_enum = UyusmazlikTuruEnum.TUMU + else: + uyusmazlik_turu_enum = UyusmazlikTuruEnum(uyusmazlik_turu) if uyusmazlik_turu else UyusmazlikTuruEnum.TUMU karar_sonuclari_enums = [UyusmazlikKararSonucuEnum(ks) for ks in karar_sonuclari] search_params = UyusmazlikSearchRequest( @@ -761,7 +770,9 @@ async def search_uyusmazlik_decisions( "idempotentHint": True } ) -async def get_uyusmazlik_document_markdown_from_url(document_url: HttpUrl) -> UyusmazlikDocumentMarkdown: +async def get_uyusmazlik_document_markdown_from_url( + document_url: str = Field(..., description="Full URL to the Uyuşmazlık Mahkemesi decision document from search results") +) -> UyusmazlikDocumentMarkdown: """ Retrieves the full text of a specific Uyuşmazlık Mahkemesi decision from its URL in Markdown format. @@ -1294,13 +1305,13 @@ async def search_rekabet_kurumu_decisions( description='Search in decision text (Metin). For an exact phrase match, enclose the phrase in double quotes (e.g., "\\"vertical agreement\\" competition). The website indicates that using "" provides more precise results for phrases.' ), KararTuru: Literal[ - "", + "ALL", "Birleşme ve Devralma", "Diğer", "Menfi Tespit ve Muafiyet", "Özelleştirme", "Rekabet İhlali" - ] = Field("", description="Decision type (Karar Türü). Leave empty for 'All'. Options: '', 'Birleşme ve Devralma', 'Diğer', 'Menfi Tespit ve Muafiyet', 'Özelleştirme', 'Rekabet İhlali'."), + ] = Field("ALL", description="Decision type (Karar Türü). Use 'ALL' for all types. Options: 'ALL', 'Birleşme ve Devralma', 'Diğer', 'Menfi Tespit ve Muafiyet', 'Özelleştirme', 'Rekabet İhlali'."), KararSayisi: Optional[str] = Field(None, description="Decision number (Karar Sayısı)."), KararTarihi: Optional[str] = Field(None, description="Decision date (Karar Tarihi), e.g., DD.MM.YYYY."), page: int = Field(1, ge=1, description="Page number to fetch for the results list.") diff --git a/uyusmazlik_mcp_module/client.py b/uyusmazlik_mcp_module/client.py index cd570c3..d86473c 100644 --- a/uyusmazlik_mcp_module/client.py +++ b/uyusmazlik_mcp_module/client.py @@ -31,13 +31,15 @@ BOLUM_ENUM_TO_ID_MAP = { UyusmazlikBolumEnum.CEZA_BOLUMU: "f6b74320-f2d7-4209-ad6e-c6df180d4e7c", UyusmazlikBolumEnum.GENEL_KURUL_KARARLARI: "e4ca658d-a75a-4719-b866-b2d2f1c3b1d9", UyusmazlikBolumEnum.HUKUK_BOLUMU: "96b26fc4-ef8e-4a4f-a9cc-a3de89952aa1", - UyusmazlikBolumEnum.TUMU: "" # Represents "...Seçiniz..." or all - empty string for API + UyusmazlikBolumEnum.TUMU: "", # Represents "...Seçiniz..." or all - empty string for API + "ALL": "" # Also map the new "ALL" literal to empty string for backward compatibility } UYUSMAZLIK_TURU_ENUM_TO_ID_MAP = { UyusmazlikTuruEnum.GOREV_UYUSMAZLIGI: "7b1e2cd3-8f09-418a-921c-bbe501e1740c", UyusmazlikTuruEnum.HUKUM_UYUSMAZLIGI: "19b88402-172b-4c1d-8339-595c942a89f5", - UyusmazlikTuruEnum.TUMU: "" # Represents "...Seçiniz..." or all - empty string for API + UyusmazlikTuruEnum.TUMU: "", # Represents "...Seçiniz..." or all - empty string for API + "ALL": "" # Also map the new "ALL" literal to empty string for backward compatibility } KARAR_SONUCU_ENUM_TO_ID_MAP = { diff --git a/yargitay_mcp_module/models.py b/yargitay_mcp_module/models.py index 4626ef1..fd9b85f 100644 --- a/yargitay_mcp_module/models.py +++ b/yargitay_mcp_module/models.py @@ -5,7 +5,7 @@ from typing import List, Optional, Dict, Any, Literal # Yargıtay Chamber/Board Options YargitayBirimEnum = Literal[ - "", # Empty string for "All" chambers + "ALL", # "ALL" for all chambers # Hukuk (Civil) Chambers "Hukuk Genel Kurulu", "1. Hukuk Dairesi", "2. Hukuk Dairesi", "3. Hukuk Dairesi", "4. Hukuk Dairesi", @@ -43,13 +43,13 @@ class YargitayDetailedSearchRequest(BaseModel): • Exclusion: '+"arsa payı" -"inşaat sözleşmesi"' Examples: arsa payı | "arsa payı" | +"mülkiyet hakkı" +"bozma sebebi" | hukuk*""") # Department/Board selection - Complete Court of Cassation chamber hierarchy - birimYrgKurulDaire: YargitayBirimEnum = Field("", description=""" + birimYrgKurulDaire: YargitayBirimEnum = Field("ALL", description=""" Court of Cassation (Yargıtay) chamber/board selection. Options include: - - Empty string ('') for ALL chambers + - 'ALL' for all chambers - Civil: 'Civil General Assembly (Hukuk Genel Kurulu)', '1st Civil Chamber (1. Hukuk Dairesi)' through '23rd Civil Chamber (23. Hukuk Dairesi)', 'Civil Chambers Presidents Board (Hukuk Daireleri Başkanlar Kurulu)' - Criminal: 'Criminal General Assembly (Ceza Genel Kurulu)', '1st Criminal Chamber (1. Ceza Dairesi)' through '23rd Criminal Chamber (23. Ceza Dairesi)', 'Criminal Chambers Presidents Board (Ceza Daireleri Başkanlar Kurulu)' - General: 'Grand General Assembly (Büyük Genel Kurulu)' - Total: 52 possible values (including empty string for all chambers) + Total: 52 possible values (including 'ALL' for all chambers) """) birimYrgHukukDaire: Optional[str] = Field("", description="Legacy field - use birimYrgKurulDaire instead for chamber selection") birimYrgCezaDaire: Optional[str] = Field("", description="Legacy field - use birimYrgKurulDaire instead for chamber selection")