convert enum sayıştay
This commit is contained in:
@@ -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,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,
|
||||||
|
|||||||
Reference in New Issue
Block a user