From 8a148899e3879ef011b8ebb7ca83a1f8aeee5082 Mon Sep 17 00:00:00 2001 From: saidsurucu Date: Thu, 17 Jul 2025 21:20:23 +0300 Subject: [PATCH] =?UTF-8?q?convert=20enum=20say=C4=B1=C5=9Ftay?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sayistay_mcp_module/models.py | 8 ++++---- sayistay_mcp_module/unified_client.py | 22 +++++++++------------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/sayistay_mcp_module/models.py b/sayistay_mcp_module/models.py index b73e5d6..3cd0316 100644 --- a/sayistay_mcp_module/models.py +++ b/sayistay_mcp_module/models.py @@ -1,7 +1,7 @@ # sayistay_mcp_module/models.py from pydantic import BaseModel, Field -from typing import Optional, List, Union, Dict, Any +from typing import Optional, List, Union, Dict, Any, Literal from enum import Enum from .enums import DaireEnum, KamuIdaresiTuruEnum, WebKararKonusuEnum @@ -172,7 +172,7 @@ class SayistayDocumentMarkdown(BaseModel): class SayistayUnifiedSearchRequest(BaseModel): """Unified search request for all Sayıştay decision types.""" - decision_type: SayistayDecisionTypeEnum = Field(..., description="Decision type: genel_kurul, temyiz_kurulu, or daire") + decision_type: Literal["genel_kurul", "temyiz_kurulu", "daire"] = Field(..., description="Decision type: genel_kurul, temyiz_kurulu, or daire") # Common pagination parameters start: int = Field(0, ge=0, description="Starting record for pagination (0-based)") @@ -204,7 +204,7 @@ class SayistayUnifiedSearchRequest(BaseModel): class SayistayUnifiedSearchResult(BaseModel): """Unified search result containing decisions from any Sayıştay decision type.""" - decision_type: SayistayDecisionTypeEnum = Field(..., description="Type of decisions returned") + decision_type: Literal["genel_kurul", "temyiz_kurulu", "daire"] = Field(..., description="Type of decisions returned") decisions: List[Dict[str, Any]] = Field(default_factory=list, description="Decision list (structure varies by type)") total_records: int = Field(0, description="Total number of records found") total_filtered: int = Field(0, description="Number of records after filtering") @@ -212,7 +212,7 @@ class SayistayUnifiedSearchResult(BaseModel): class SayistayUnifiedDocumentMarkdown(BaseModel): """Unified document model for all Sayıştay decision types.""" - decision_type: SayistayDecisionTypeEnum = Field(..., description="Type of document") + decision_type: Literal["genel_kurul", "temyiz_kurulu", "daire"] = Field(..., description="Type of document") decision_id: str = Field(..., description="Decision ID") source_url: str = Field(..., description="Source URL of the document") document_data: Dict[str, Any] = Field(default_factory=dict, description="Document content and metadata") diff --git a/sayistay_mcp_module/unified_client.py b/sayistay_mcp_module/unified_client.py index b1dac65..3874604 100644 --- a/sayistay_mcp_module/unified_client.py +++ b/sayistay_mcp_module/unified_client.py @@ -9,7 +9,6 @@ from .models import ( SayistayUnifiedSearchRequest, SayistayUnifiedSearchResult, SayistayUnifiedDocumentMarkdown, - SayistayDecisionTypeEnum, GenelKurulSearchRequest, TemyizKuruluSearchRequest, DaireSearchRequest @@ -27,7 +26,7 @@ class SayistayUnifiedClient: async def search_unified(self, params: SayistayUnifiedSearchRequest) -> SayistayUnifiedSearchResult: """Unified search that routes to appropriate search method based on decision_type.""" - if params.decision_type == SayistayDecisionTypeEnum.GENEL_KURUL: + if params.decision_type == "genel_kurul": # Convert to genel kurul request genel_kurul_params = GenelKurulSearchRequest( karar_no=params.karar_no, @@ -45,14 +44,14 @@ class SayistayUnifiedClient: decisions_list = [decision.model_dump() for decision in result.decisions] return SayistayUnifiedSearchResult( - decision_type=SayistayDecisionTypeEnum.GENEL_KURUL, + decision_type="genel_kurul", decisions=decisions_list, total_records=result.total_records, total_filtered=result.total_filtered, draw=result.draw ) - elif params.decision_type == SayistayDecisionTypeEnum.TEMYIZ_KURULU: + elif params.decision_type == "temyiz_kurulu": # Convert to temyiz kurulu request temyiz_params = TemyizKuruluSearchRequest( ilam_dairesi=params.ilam_dairesi, @@ -75,14 +74,14 @@ class SayistayUnifiedClient: decisions_list = [decision.model_dump() for decision in result.decisions] return SayistayUnifiedSearchResult( - decision_type=SayistayDecisionTypeEnum.TEMYIZ_KURULU, + decision_type="temyiz_kurulu", decisions=decisions_list, total_records=result.total_records, total_filtered=result.total_filtered, draw=result.draw ) - elif params.decision_type == SayistayDecisionTypeEnum.DAIRE: + elif params.decision_type == "daire": # Convert to daire request daire_params = DaireSearchRequest( yargilama_dairesi=params.yargilama_dairesi, @@ -103,7 +102,7 @@ class SayistayUnifiedClient: decisions_list = [decision.model_dump() for decision in result.decisions] return SayistayUnifiedSearchResult( - decision_type=SayistayDecisionTypeEnum.DAIRE, + decision_type="daire", decisions=decisions_list, total_records=result.total_records, total_filtered=result.total_filtered, @@ -113,14 +112,11 @@ class SayistayUnifiedClient: else: raise ValueError(f"Unsupported decision type: {params.decision_type}") - async def get_document_unified(self, decision_id: str, decision_type: SayistayDecisionTypeEnum) -> SayistayUnifiedDocumentMarkdown: + async def get_document_unified(self, decision_id: str, decision_type: str) -> SayistayUnifiedDocumentMarkdown: """Unified document retrieval for all Sayıştay decision types.""" - # Convert enum to string for backend client - decision_type_str = decision_type.value - - # Use existing client method - result = await self.client.get_document_as_markdown(decision_id, decision_type_str) + # Use existing client method (decision_type is already a string) + result = await self.client.get_document_as_markdown(decision_id, decision_type) return SayistayUnifiedDocumentMarkdown( decision_type=decision_type,