convert enum sayıştay

This commit is contained in:
saidsurucu
2025-07-17 21:20:23 +03:00
parent fa6c448afa
commit 8a148899e3
2 changed files with 13 additions and 17 deletions
+4 -4
View File
@@ -1,7 +1,7 @@
# sayistay_mcp_module/models.py # sayistay_mcp_module/models.py
from pydantic import BaseModel, Field 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 enum import Enum
from .enums import DaireEnum, KamuIdaresiTuruEnum, WebKararKonusuEnum from .enums import DaireEnum, KamuIdaresiTuruEnum, WebKararKonusuEnum
@@ -172,7 +172,7 @@ class SayistayDocumentMarkdown(BaseModel):
class SayistayUnifiedSearchRequest(BaseModel): class SayistayUnifiedSearchRequest(BaseModel):
"""Unified search request for all Sayıştay decision types.""" """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 # Common pagination parameters
start: int = Field(0, ge=0, description="Starting record for pagination (0-based)") start: int = Field(0, ge=0, description="Starting record for pagination (0-based)")
@@ -204,7 +204,7 @@ class SayistayUnifiedSearchRequest(BaseModel):
class SayistayUnifiedSearchResult(BaseModel): class SayistayUnifiedSearchResult(BaseModel):
"""Unified search result containing decisions from any Sayıştay decision type.""" """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)") 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_records: int = Field(0, description="Total number of records found")
total_filtered: int = Field(0, description="Number of records after filtering") total_filtered: int = Field(0, description="Number of records after filtering")
@@ -212,7 +212,7 @@ class SayistayUnifiedSearchResult(BaseModel):
class SayistayUnifiedDocumentMarkdown(BaseModel): class SayistayUnifiedDocumentMarkdown(BaseModel):
"""Unified document model for all Sayıştay decision types.""" """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") decision_id: str = Field(..., description="Decision ID")
source_url: str = Field(..., description="Source URL of the document") source_url: str = Field(..., description="Source URL of the document")
document_data: Dict[str, Any] = Field(default_factory=dict, description="Document content and metadata") document_data: Dict[str, Any] = Field(default_factory=dict, description="Document content and metadata")
+9 -13
View File
@@ -9,7 +9,6 @@ from .models import (
SayistayUnifiedSearchRequest, SayistayUnifiedSearchRequest,
SayistayUnifiedSearchResult, SayistayUnifiedSearchResult,
SayistayUnifiedDocumentMarkdown, SayistayUnifiedDocumentMarkdown,
SayistayDecisionTypeEnum,
GenelKurulSearchRequest, GenelKurulSearchRequest,
TemyizKuruluSearchRequest, TemyizKuruluSearchRequest,
DaireSearchRequest DaireSearchRequest
@@ -27,7 +26,7 @@ class SayistayUnifiedClient:
async def search_unified(self, params: SayistayUnifiedSearchRequest) -> SayistayUnifiedSearchResult: async def search_unified(self, params: SayistayUnifiedSearchRequest) -> SayistayUnifiedSearchResult:
"""Unified search that routes to appropriate search method based on decision_type.""" """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 # Convert to genel kurul request
genel_kurul_params = GenelKurulSearchRequest( genel_kurul_params = GenelKurulSearchRequest(
karar_no=params.karar_no, karar_no=params.karar_no,
@@ -45,14 +44,14 @@ class SayistayUnifiedClient:
decisions_list = [decision.model_dump() for decision in result.decisions] decisions_list = [decision.model_dump() for decision in result.decisions]
return SayistayUnifiedSearchResult( return SayistayUnifiedSearchResult(
decision_type=SayistayDecisionTypeEnum.GENEL_KURUL, decision_type="genel_kurul",
decisions=decisions_list, decisions=decisions_list,
total_records=result.total_records, total_records=result.total_records,
total_filtered=result.total_filtered, total_filtered=result.total_filtered,
draw=result.draw draw=result.draw
) )
elif params.decision_type == SayistayDecisionTypeEnum.TEMYIZ_KURULU: elif params.decision_type == "temyiz_kurulu":
# Convert to temyiz kurulu request # Convert to temyiz kurulu request
temyiz_params = TemyizKuruluSearchRequest( temyiz_params = TemyizKuruluSearchRequest(
ilam_dairesi=params.ilam_dairesi, ilam_dairesi=params.ilam_dairesi,
@@ -75,14 +74,14 @@ class SayistayUnifiedClient:
decisions_list = [decision.model_dump() for decision in result.decisions] decisions_list = [decision.model_dump() for decision in result.decisions]
return SayistayUnifiedSearchResult( return SayistayUnifiedSearchResult(
decision_type=SayistayDecisionTypeEnum.TEMYIZ_KURULU, decision_type="temyiz_kurulu",
decisions=decisions_list, decisions=decisions_list,
total_records=result.total_records, total_records=result.total_records,
total_filtered=result.total_filtered, total_filtered=result.total_filtered,
draw=result.draw draw=result.draw
) )
elif params.decision_type == SayistayDecisionTypeEnum.DAIRE: elif params.decision_type == "daire":
# Convert to daire request # Convert to daire request
daire_params = DaireSearchRequest( daire_params = DaireSearchRequest(
yargilama_dairesi=params.yargilama_dairesi, yargilama_dairesi=params.yargilama_dairesi,
@@ -103,7 +102,7 @@ class SayistayUnifiedClient:
decisions_list = [decision.model_dump() for decision in result.decisions] decisions_list = [decision.model_dump() for decision in result.decisions]
return SayistayUnifiedSearchResult( return SayistayUnifiedSearchResult(
decision_type=SayistayDecisionTypeEnum.DAIRE, decision_type="daire",
decisions=decisions_list, decisions=decisions_list,
total_records=result.total_records, total_records=result.total_records,
total_filtered=result.total_filtered, total_filtered=result.total_filtered,
@@ -113,14 +112,11 @@ class SayistayUnifiedClient:
else: else:
raise ValueError(f"Unsupported decision type: {params.decision_type}") 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.""" """Unified document retrieval for all Sayıştay decision types."""
# Convert enum to string for backend client # Use existing client method (decision_type is already a string)
decision_type_str = decision_type.value result = await self.client.get_document_as_markdown(decision_id, decision_type)
# Use existing client method
result = await self.client.get_document_as_markdown(decision_id, decision_type_str)
return SayistayUnifiedDocumentMarkdown( return SayistayUnifiedDocumentMarkdown(
decision_type=decision_type, decision_type=decision_type,