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
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")
+9 -13
View File
@@ -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,