convert enums to literal
This commit is contained in:
@@ -50,36 +50,36 @@ class AnayasaMahkemesiApiClient:
|
|||||||
for kw in params.keywords_any: query_params.append(("HerhangiBirKelimeAra[]", kw))
|
for kw in params.keywords_any: query_params.append(("HerhangiBirKelimeAra[]", kw))
|
||||||
if params.keywords_exclude:
|
if params.keywords_exclude:
|
||||||
for kw in params.keywords_exclude: query_params.append(("BulunmayanKelimeAra[]", kw))
|
for kw in params.keywords_exclude: query_params.append(("BulunmayanKelimeAra[]", kw))
|
||||||
if params.period and params.period.value and params.period.value != "ALL": query_params.append(("Donemler_id", params.period.value))
|
if params.period and params.period and params.period != "ALL": query_params.append(("Donemler_id", params.period))
|
||||||
if params.case_number_esas: query_params.append(("EsasNo", params.case_number_esas))
|
if params.case_number_esas: query_params.append(("EsasNo", params.case_number_esas))
|
||||||
if params.decision_number_karar: query_params.append(("KararNo", params.decision_number_karar))
|
if params.decision_number_karar: query_params.append(("KararNo", params.decision_number_karar))
|
||||||
if params.first_review_date_start: query_params.append(("IlkIncelemeTarihiIlk", params.first_review_date_start))
|
if params.first_review_date_start: query_params.append(("IlkIncelemeTarihiIlk", params.first_review_date_start))
|
||||||
if params.first_review_date_end: query_params.append(("IlkIncelemeTarihiSon", params.first_review_date_end))
|
if params.first_review_date_end: query_params.append(("IlkIncelemeTarihiSon", params.first_review_date_end))
|
||||||
if params.decision_date_start: query_params.append(("KararTarihiIlk", params.decision_date_start))
|
if params.decision_date_start: query_params.append(("KararTarihiIlk", params.decision_date_start))
|
||||||
if params.decision_date_end: query_params.append(("KararTarihiSon", params.decision_date_end))
|
if params.decision_date_end: query_params.append(("KararTarihiSon", params.decision_date_end))
|
||||||
if params.application_type and params.application_type.value and params.application_type.value != "ALL": query_params.append(("BasvuruTurler_id", params.application_type.value))
|
if params.application_type and params.application_type and params.application_type != "ALL": query_params.append(("BasvuruTurler_id", params.application_type))
|
||||||
if params.applicant_general_name: query_params.append(("BasvuranGeneller_id", params.applicant_general_name))
|
if params.applicant_general_name: query_params.append(("BasvuranGeneller_id", params.applicant_general_name))
|
||||||
if params.applicant_specific_name: query_params.append(("BasvuranOzeller_id", params.applicant_specific_name))
|
if params.applicant_specific_name: query_params.append(("BasvuranOzeller_id", params.applicant_specific_name))
|
||||||
if params.attending_members_names:
|
if params.attending_members_names:
|
||||||
for name in params.attending_members_names: query_params.append(("Uyeler_id[]", name))
|
for name in params.attending_members_names: query_params.append(("Uyeler_id[]", name))
|
||||||
if params.rapporteur_name: query_params.append(("Raportorler_id", params.rapporteur_name))
|
if params.rapporteur_name: query_params.append(("Raportorler_id", params.rapporteur_name))
|
||||||
if params.norm_type and params.norm_type.value and params.norm_type.value != "ALL": query_params.append(("NormunTurler_id", params.norm_type.value))
|
if params.norm_type and params.norm_type and params.norm_type != "ALL": query_params.append(("NormunTurler_id", params.norm_type))
|
||||||
if params.norm_id_or_name: query_params.append(("NormunNumarasiAdlar_id", params.norm_id_or_name))
|
if params.norm_id_or_name: query_params.append(("NormunNumarasiAdlar_id", params.norm_id_or_name))
|
||||||
if params.norm_article: query_params.append(("NormunMaddeNumarasi", params.norm_article))
|
if params.norm_article: query_params.append(("NormunMaddeNumarasi", params.norm_article))
|
||||||
if params.review_outcomes:
|
if params.review_outcomes:
|
||||||
for outcome_enum_val in params.review_outcomes:
|
for outcome_val in params.review_outcomes:
|
||||||
if outcome_enum_val.value and outcome_enum_val.value != "ALL": query_params.append(("IncelemeTuruKararSonuclar_id[]", outcome_enum_val.value))
|
if outcome_val and outcome_val != "ALL": query_params.append(("IncelemeTuruKararSonuclar_id[]", outcome_val))
|
||||||
if params.reason_for_final_outcome and params.reason_for_final_outcome.value and params.reason_for_final_outcome.value != "ALL":
|
if params.reason_for_final_outcome and params.reason_for_final_outcome and params.reason_for_final_outcome != "ALL":
|
||||||
query_params.append(("KararSonucununGerekcesi", params.reason_for_final_outcome.value))
|
query_params.append(("KararSonucununGerekcesi", params.reason_for_final_outcome))
|
||||||
if params.basis_constitution_article_numbers:
|
if params.basis_constitution_article_numbers:
|
||||||
for article_no in params.basis_constitution_article_numbers: query_params.append(("DayanakHukmu[]", article_no))
|
for article_no in params.basis_constitution_article_numbers: query_params.append(("DayanakHukmu[]", article_no))
|
||||||
if params.official_gazette_date_start: query_params.append(("ResmiGazeteTarihiIlk", params.official_gazette_date_start))
|
if params.official_gazette_date_start: query_params.append(("ResmiGazeteTarihiIlk", params.official_gazette_date_start))
|
||||||
if params.official_gazette_date_end: query_params.append(("ResmiGazeteTarihiSon", params.official_gazette_date_end))
|
if params.official_gazette_date_end: query_params.append(("ResmiGazeteTarihiSon", params.official_gazette_date_end))
|
||||||
if params.official_gazette_number_start: query_params.append(("ResmiGazeteSayisiIlk", params.official_gazette_number_start))
|
if params.official_gazette_number_start: query_params.append(("ResmiGazeteSayisiIlk", params.official_gazette_number_start))
|
||||||
if params.official_gazette_number_end: query_params.append(("ResmiGazeteSayisiSon", params.official_gazette_number_end))
|
if params.official_gazette_number_end: query_params.append(("ResmiGazeteSayisiSon", params.official_gazette_number_end))
|
||||||
if params.has_press_release and params.has_press_release.value and params.has_press_release.value != "ALL": query_params.append(("BasinDuyurusu", params.has_press_release.value))
|
if params.has_press_release and params.has_press_release and params.has_press_release != "ALL": query_params.append(("BasinDuyurusu", params.has_press_release))
|
||||||
if params.has_dissenting_opinion and params.has_dissenting_opinion.value and params.has_dissenting_opinion.value != "ALL": query_params.append(("KarsiOy", params.has_dissenting_opinion.value))
|
if params.has_dissenting_opinion and params.has_dissenting_opinion and params.has_dissenting_opinion != "ALL": query_params.append(("KarsiOy", params.has_dissenting_opinion))
|
||||||
if params.has_different_reasoning and params.has_different_reasoning.value and params.has_different_reasoning.value != "ALL": query_params.append(("FarkliGerekce", params.has_different_reasoning.value))
|
if params.has_different_reasoning and params.has_different_reasoning and params.has_different_reasoning != "ALL": query_params.append(("FarkliGerekce", params.has_different_reasoning))
|
||||||
|
|
||||||
# Add pagination and sorting parameters as query params instead of URL path
|
# Add pagination and sorting parameters as query params instead of URL path
|
||||||
if params.results_per_page and params.results_per_page != 10:
|
if params.results_per_page and params.results_per_page != 10:
|
||||||
|
|||||||
@@ -1,48 +1,21 @@
|
|||||||
# anayasa_mcp_module/models.py
|
# anayasa_mcp_module/models.py
|
||||||
|
|
||||||
from pydantic import BaseModel, Field, HttpUrl
|
from pydantic import BaseModel, Field, HttpUrl
|
||||||
from typing import List, Optional, Dict, Any
|
from typing import List, Optional, Dict, Any, Literal
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
|
||||||
# --- New Unified Enums ---
|
# --- Enums (AnayasaDonemEnum, etc. - same as before) ---
|
||||||
class AnayasaDecisionTypeEnum(str, Enum):
|
|
||||||
NORM_DENETIMI = "norm_denetimi"
|
|
||||||
BIREYSEL_BASVURU = "bireysel_basvuru"
|
|
||||||
|
|
||||||
# --- Enums (AnayasaDonemEnum, AnayasaBasvuruTuruEnum, etc. - same as before) ---
|
|
||||||
class AnayasaDonemEnum(str, Enum):
|
class AnayasaDonemEnum(str, Enum):
|
||||||
TUMU = "ALL"
|
TUMU = "ALL"
|
||||||
DONEM_1961 = "1"
|
DONEM_1961 = "1"
|
||||||
DONEM_1982 = "2"
|
DONEM_1982 = "2"
|
||||||
|
|
||||||
class AnayasaBasvuruTuruEnum(str, Enum):
|
|
||||||
TUMU = "ALL"
|
|
||||||
IPTAL = "1"
|
|
||||||
ITIRAZ = "2"
|
|
||||||
DIGER = "3"
|
|
||||||
|
|
||||||
class AnayasaVarYokEnum(str, Enum):
|
class AnayasaVarYokEnum(str, Enum):
|
||||||
TUMU = "ALL"
|
TUMU = "ALL"
|
||||||
YOK = "0"
|
YOK = "0"
|
||||||
VAR = "1"
|
VAR = "1"
|
||||||
|
|
||||||
class AnayasaNormTuruEnum(str, Enum):
|
|
||||||
TUMU = "ALL"
|
|
||||||
ANAYASA = "1"
|
|
||||||
ANAYASA_DEGISTIREN_KANUN = "2"
|
|
||||||
CUMHURBASKANLIGI_KARARNAMESI = "14"
|
|
||||||
ICTUZUK = "3"
|
|
||||||
KANUN = "4"
|
|
||||||
KANUN_HUKMUNDE_KARARNAME = "5"
|
|
||||||
KARAR = "6"
|
|
||||||
NIZAMNAME = "7"
|
|
||||||
TALIMATNAME = "8"
|
|
||||||
TARIFE = "9"
|
|
||||||
TBMM_KARARI = "10"
|
|
||||||
TEZKERE = "11"
|
|
||||||
TUZUK = "12"
|
|
||||||
YOK_SECENEGI = "0"
|
|
||||||
YONETMELIK = "13"
|
|
||||||
|
|
||||||
class AnayasaIncelemeSonucuEnum(str, Enum):
|
class AnayasaIncelemeSonucuEnum(str, Enum):
|
||||||
TUMU = "ALL"
|
TUMU = "ALL"
|
||||||
@@ -94,30 +67,30 @@ class AnayasaNormDenetimiSearchRequest(BaseModel):
|
|||||||
keywords_all: Optional[List[str]] = Field(default_factory=list, description="Keywords for AND logic (KelimeAra[]).")
|
keywords_all: Optional[List[str]] = Field(default_factory=list, description="Keywords for AND logic (KelimeAra[]).")
|
||||||
keywords_any: Optional[List[str]] = Field(default_factory=list, description="Keywords for OR logic (HerhangiBirKelimeAra[]).")
|
keywords_any: Optional[List[str]] = Field(default_factory=list, description="Keywords for OR logic (HerhangiBirKelimeAra[]).")
|
||||||
keywords_exclude: Optional[List[str]] = Field(default_factory=list, description="Keywords to exclude (BulunmayanKelimeAra[]).")
|
keywords_exclude: Optional[List[str]] = Field(default_factory=list, description="Keywords to exclude (BulunmayanKelimeAra[]).")
|
||||||
period: Optional[AnayasaDonemEnum] = Field(default=AnayasaDonemEnum.TUMU, description="Constitutional period (Donemler_id).")
|
period: Optional[Literal["ALL", "1", "2"]] = Field(default="ALL", description="Constitutional period (Donemler_id).")
|
||||||
case_number_esas: str = Field("", description="Case registry number (EsasNo), e.g., '2023/123'.")
|
case_number_esas: str = Field("", description="Case registry number (EsasNo), e.g., '2023/123'.")
|
||||||
decision_number_karar: str = Field("", description="Decision number (KararNo), e.g., '2023/456'.")
|
decision_number_karar: str = Field("", description="Decision number (KararNo), e.g., '2023/456'.")
|
||||||
first_review_date_start: str = Field("", description="First review start date (IlkIncelemeTarihiIlk), format DD/MM/YYYY.")
|
first_review_date_start: str = Field("", description="First review start date (IlkIncelemeTarihiIlk), format DD/MM/YYYY.")
|
||||||
first_review_date_end: str = Field("", description="First review end date (IlkIncelemeTarihiSon), format DD/MM/YYYY.")
|
first_review_date_end: str = Field("", description="First review end date (IlkIncelemeTarihiSon), format DD/MM/YYYY.")
|
||||||
decision_date_start: str = Field("", description="Decision start date (KararTarihiIlk), format DD/MM/YYYY.")
|
decision_date_start: str = Field("", description="Decision start date (KararTarihiIlk), format DD/MM/YYYY.")
|
||||||
decision_date_end: str = Field("", description="Decision end date (KararTarihiSon), format DD/MM/YYYY.")
|
decision_date_end: str = Field("", description="Decision end date (KararTarihiSon), format DD/MM/YYYY.")
|
||||||
application_type: Optional[AnayasaBasvuruTuruEnum] = Field(default=AnayasaBasvuruTuruEnum.TUMU, description="Type of application (BasvuruTurler_id).")
|
application_type: Optional[Literal["ALL", "1", "2", "3"]] = Field(default="ALL", description="Type of application (BasvuruTurler_id).")
|
||||||
applicant_general_name: str = Field("", description="General applicant name (BasvuranGeneller_id).")
|
applicant_general_name: str = Field("", description="General applicant name (BasvuranGeneller_id).")
|
||||||
applicant_specific_name: str = Field("", description="Specific applicant name (BasvuranOzeller_id).")
|
applicant_specific_name: str = Field("", description="Specific applicant name (BasvuranOzeller_id).")
|
||||||
official_gazette_date_start: str = Field("", description="Official Gazette start date (ResmiGazeteTarihiIlk), format DD/MM/YYYY.")
|
official_gazette_date_start: str = Field("", description="Official Gazette start date (ResmiGazeteTarihiIlk), format DD/MM/YYYY.")
|
||||||
official_gazette_date_end: str = Field("", description="Official Gazette end date (ResmiGazeteTarihiSon), format DD/MM/YYYY.")
|
official_gazette_date_end: str = Field("", description="Official Gazette end date (ResmiGazeteTarihiSon), format DD/MM/YYYY.")
|
||||||
official_gazette_number_start: str = Field("", description="Official Gazette starting number (ResmiGazeteSayisiIlk).")
|
official_gazette_number_start: str = Field("", description="Official Gazette starting number (ResmiGazeteSayisiIlk).")
|
||||||
official_gazette_number_end: str = Field("", description="Official Gazette ending number (ResmiGazeteSayisiSon).")
|
official_gazette_number_end: str = Field("", description="Official Gazette ending number (ResmiGazeteSayisiSon).")
|
||||||
has_press_release: Optional[AnayasaVarYokEnum] = Field(default=AnayasaVarYokEnum.TUMU, description="Press release available (BasinDuyurusu).")
|
has_press_release: Optional[Literal["ALL", "0", "1"]] = Field(default="ALL", description="Press release available (BasinDuyurusu).")
|
||||||
has_dissenting_opinion: Optional[AnayasaVarYokEnum] = Field(default=AnayasaVarYokEnum.TUMU, description="Dissenting opinion exists (KarsiOy).")
|
has_dissenting_opinion: Optional[Literal["ALL", "0", "1"]] = Field(default="ALL", description="Dissenting opinion exists (KarsiOy).")
|
||||||
has_different_reasoning: Optional[AnayasaVarYokEnum] = Field(default=AnayasaVarYokEnum.TUMU, description="Different reasoning exists (FarkliGerekce).")
|
has_different_reasoning: Optional[Literal["ALL", "0", "1"]] = Field(default="ALL", description="Different reasoning exists (FarkliGerekce).")
|
||||||
attending_members_names: Optional[List[str]] = Field(default_factory=list, description="List of attending members' exact names (Uyeler_id[]).")
|
attending_members_names: Optional[List[str]] = Field(default_factory=list, description="List of attending members' exact names (Uyeler_id[]).")
|
||||||
rapporteur_name: str = Field("", description="Rapporteur's exact name (Raportorler_id).")
|
rapporteur_name: str = Field("", description="Rapporteur's exact name (Raportorler_id).")
|
||||||
norm_type: Optional[AnayasaNormTuruEnum] = Field(default=AnayasaNormTuruEnum.TUMU, description="Type of the reviewed norm (NormunTurler_id).")
|
norm_type: Optional[Literal["ALL", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "0"]] = Field(default="ALL", description="Type of the reviewed norm (NormunTurler_id).")
|
||||||
norm_id_or_name: str = Field("", description="Number or name of the norm (NormunNumarasiAdlar_id).")
|
norm_id_or_name: str = Field("", description="Number or name of the norm (NormunNumarasiAdlar_id).")
|
||||||
norm_article: str = Field("", description="Article number of the norm (NormunMaddeNumarasi).")
|
norm_article: str = Field("", description="Article number of the norm (NormunMaddeNumarasi).")
|
||||||
review_outcomes: Optional[List[AnayasaIncelemeSonucuEnum]] = Field(default_factory=list, description="List of review types and outcomes (IncelemeTuruKararSonuclar_id[]).")
|
review_outcomes: Optional[List[Literal["1", "2", "3", "4", "5", "6", "7", "8", "12"]]] = Field(default_factory=list, description="List of review types and outcomes (IncelemeTuruKararSonuclar_id[]).")
|
||||||
reason_for_final_outcome: Optional[AnayasaSonucGerekcesiEnum] = Field(default=AnayasaSonucGerekcesiEnum.TUMU, description="Main reason for the decision outcome (KararSonucununGerekcesi).")
|
reason_for_final_outcome: Optional[Literal["ALL", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "29", "30"]] = Field(default="ALL", description="Main reason for the decision outcome (KararSonucununGerekcesi).")
|
||||||
basis_constitution_article_numbers: Optional[List[str]] = Field(default_factory=list, description="List of supporting Constitution article numbers (DayanakHukmu[]).")
|
basis_constitution_article_numbers: Optional[List[str]] = Field(default_factory=list, description="List of supporting Constitution article numbers (DayanakHukmu[]).")
|
||||||
results_per_page: int = Field(10, ge=1, le=10, description="Results per page.")
|
results_per_page: int = Field(10, ge=1, le=10, description="Results per page.")
|
||||||
page_to_fetch: int = Field(1, ge=1, description="Page number to fetch for results list.")
|
page_to_fetch: int = Field(1, ge=1, description="Page number to fetch for results list.")
|
||||||
@@ -219,7 +192,7 @@ class AnayasaBireyselBasvuruDocumentMarkdown(BaseModel):
|
|||||||
# --- Unified Models ---
|
# --- Unified Models ---
|
||||||
class AnayasaUnifiedSearchRequest(BaseModel):
|
class AnayasaUnifiedSearchRequest(BaseModel):
|
||||||
"""Unified search request for both Norm Denetimi and Bireysel Başvuru."""
|
"""Unified search request for both Norm Denetimi and Bireysel Başvuru."""
|
||||||
decision_type: AnayasaDecisionTypeEnum = Field(..., description="Decision type: norm_denetimi or bireysel_basvuru")
|
decision_type: Literal["norm_denetimi", "bireysel_basvuru"] = Field(..., description="Decision type: norm_denetimi or bireysel_basvuru")
|
||||||
|
|
||||||
# Common parameters
|
# Common parameters
|
||||||
keywords: List[str] = Field(default_factory=list, description="Keywords to search for")
|
keywords: List[str] = Field(default_factory=list, description="Keywords to search for")
|
||||||
@@ -229,26 +202,26 @@ class AnayasaUnifiedSearchRequest(BaseModel):
|
|||||||
# Norm Denetimi specific parameters (ignored for bireysel_basvuru)
|
# Norm Denetimi specific parameters (ignored for bireysel_basvuru)
|
||||||
keywords_all: List[str] = Field(default_factory=list, description="All keywords must be present (norm_denetimi only)")
|
keywords_all: List[str] = Field(default_factory=list, description="All keywords must be present (norm_denetimi only)")
|
||||||
keywords_any: List[str] = Field(default_factory=list, description="Any of these keywords (norm_denetimi only)")
|
keywords_any: List[str] = Field(default_factory=list, description="Any of these keywords (norm_denetimi only)")
|
||||||
decision_type_norm: Optional[AnayasaBasvuruTuruEnum] = Field(None, description="Decision type for norm denetimi")
|
decision_type_norm: Optional[Literal["ALL", "1", "2", "3"]] = Field(None, description="Decision type for norm denetimi")
|
||||||
application_date_start: str = Field("", description="Application start date (norm_denetimi only)")
|
application_date_start: str = Field("", description="Application start date (norm_denetimi only)")
|
||||||
application_date_end: str = Field("", description="Application end date (norm_denetimi only)")
|
application_date_end: str = Field("", description="Application end date (norm_denetimi only)")
|
||||||
|
|
||||||
# Bireysel Başvuru specific parameters (ignored for norm_denetimi)
|
# Bireysel Başvuru specific parameters (ignored for norm_denetimi)
|
||||||
decision_start_date: str = Field("", description="Decision start date (bireysel_basvuru only)")
|
decision_start_date: str = Field("", description="Decision start date (bireysel_basvuru only)")
|
||||||
decision_end_date: str = Field("", description="Decision end date (bireysel_basvuru only)")
|
decision_end_date: str = Field("", description="Decision end date (bireysel_basvuru only)")
|
||||||
norm_type: Optional[AnayasaNormTuruEnum] = Field(None, description="Norm type (bireysel_basvuru only)")
|
norm_type: Optional[Literal["ALL", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "0"]] = Field(None, description="Norm type (bireysel_basvuru only)")
|
||||||
subject_category: str = Field("", description="Subject category (bireysel_basvuru only)")
|
subject_category: str = Field("", description="Subject category (bireysel_basvuru only)")
|
||||||
|
|
||||||
class AnayasaUnifiedSearchResult(BaseModel):
|
class AnayasaUnifiedSearchResult(BaseModel):
|
||||||
"""Unified search result containing decisions from either system."""
|
"""Unified search result containing decisions from either system."""
|
||||||
decision_type: AnayasaDecisionTypeEnum = Field(..., description="Type of decisions returned")
|
decision_type: Literal["norm_denetimi", "bireysel_basvuru"] = 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_found: int = Field(0, description="Total number of records found")
|
total_records_found: int = Field(0, description="Total number of records found")
|
||||||
retrieved_page_number: int = Field(1, description="Page number that was retrieved")
|
retrieved_page_number: int = Field(1, description="Page number that was retrieved")
|
||||||
|
|
||||||
class AnayasaUnifiedDocumentMarkdown(BaseModel):
|
class AnayasaUnifiedDocumentMarkdown(BaseModel):
|
||||||
"""Unified document model for both Norm Denetimi and Bireysel Başvuru."""
|
"""Unified document model for both Norm Denetimi and Bireysel Başvuru."""
|
||||||
decision_type: AnayasaDecisionTypeEnum = Field(..., description="Type of document")
|
decision_type: Literal["norm_denetimi", "bireysel_basvuru"] = Field(..., description="Type of document")
|
||||||
source_url: HttpUrl = Field(..., description="Source URL of the document")
|
source_url: HttpUrl = 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")
|
||||||
markdown_chunk: Optional[str] = Field(None, description="Markdown content chunk")
|
markdown_chunk: Optional[str] = Field(None, description="Markdown content chunk")
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ from .models import (
|
|||||||
AnayasaUnifiedSearchRequest,
|
AnayasaUnifiedSearchRequest,
|
||||||
AnayasaUnifiedSearchResult,
|
AnayasaUnifiedSearchResult,
|
||||||
AnayasaUnifiedDocumentMarkdown,
|
AnayasaUnifiedDocumentMarkdown,
|
||||||
AnayasaDecisionTypeEnum,
|
# Removed AnayasaDecisionTypeEnum - now using string literals
|
||||||
AnayasaNormDenetimiSearchRequest,
|
AnayasaNormDenetimiSearchRequest,
|
||||||
AnayasaBireyselReportSearchRequest
|
AnayasaBireyselReportSearchRequest
|
||||||
)
|
)
|
||||||
@@ -28,7 +28,7 @@ class AnayasaUnifiedClient:
|
|||||||
async def search_unified(self, params: AnayasaUnifiedSearchRequest) -> AnayasaUnifiedSearchResult:
|
async def search_unified(self, params: AnayasaUnifiedSearchRequest) -> AnayasaUnifiedSearchResult:
|
||||||
"""Unified search that routes to appropriate client based on decision_type."""
|
"""Unified search that routes to appropriate client based on decision_type."""
|
||||||
|
|
||||||
if params.decision_type == AnayasaDecisionTypeEnum.NORM_DENETIMI:
|
if params.decision_type == "norm_denetimi":
|
||||||
# Convert to norm denetimi request
|
# Convert to norm denetimi request
|
||||||
norm_params = AnayasaNormDenetimiSearchRequest(
|
norm_params = AnayasaNormDenetimiSearchRequest(
|
||||||
keywords_all=params.keywords_all or params.keywords,
|
keywords_all=params.keywords_all or params.keywords,
|
||||||
@@ -44,13 +44,13 @@ class AnayasaUnifiedClient:
|
|||||||
decisions_list = [decision.model_dump() for decision in result.decisions]
|
decisions_list = [decision.model_dump() for decision in result.decisions]
|
||||||
|
|
||||||
return AnayasaUnifiedSearchResult(
|
return AnayasaUnifiedSearchResult(
|
||||||
decision_type=AnayasaDecisionTypeEnum.NORM_DENETIMI,
|
decision_type="norm_denetimi",
|
||||||
decisions=decisions_list,
|
decisions=decisions_list,
|
||||||
total_records_found=result.total_records_found,
|
total_records_found=result.total_records_found,
|
||||||
retrieved_page_number=result.retrieved_page_number
|
retrieved_page_number=result.retrieved_page_number
|
||||||
)
|
)
|
||||||
|
|
||||||
elif params.decision_type == AnayasaDecisionTypeEnum.BIREYSEL_BASVURU:
|
elif params.decision_type == "bireysel_basvuru":
|
||||||
# Convert to bireysel başvuru request
|
# Convert to bireysel başvuru request
|
||||||
bireysel_params = AnayasaBireyselReportSearchRequest(
|
bireysel_params = AnayasaBireyselReportSearchRequest(
|
||||||
keywords=params.keywords,
|
keywords=params.keywords,
|
||||||
@@ -68,7 +68,7 @@ class AnayasaUnifiedClient:
|
|||||||
decisions_list = [decision.model_dump() for decision in result.decisions]
|
decisions_list = [decision.model_dump() for decision in result.decisions]
|
||||||
|
|
||||||
return AnayasaUnifiedSearchResult(
|
return AnayasaUnifiedSearchResult(
|
||||||
decision_type=AnayasaDecisionTypeEnum.BIREYSEL_BASVURU,
|
decision_type="bireysel_basvuru",
|
||||||
decisions=decisions_list,
|
decisions=decisions_list,
|
||||||
total_records_found=result.total_records_found,
|
total_records_found=result.total_records_found,
|
||||||
retrieved_page_number=result.retrieved_page_number
|
retrieved_page_number=result.retrieved_page_number
|
||||||
@@ -88,7 +88,7 @@ class AnayasaUnifiedClient:
|
|||||||
result = await self.norm_client.get_decision_document_as_markdown(document_url, page_number)
|
result = await self.norm_client.get_decision_document_as_markdown(document_url, page_number)
|
||||||
|
|
||||||
return AnayasaUnifiedDocumentMarkdown(
|
return AnayasaUnifiedDocumentMarkdown(
|
||||||
decision_type=AnayasaDecisionTypeEnum.NORM_DENETIMI,
|
decision_type="norm_denetimi",
|
||||||
source_url=result.source_url,
|
source_url=result.source_url,
|
||||||
document_data=result.model_dump(),
|
document_data=result.model_dump(),
|
||||||
markdown_chunk=result.markdown_chunk,
|
markdown_chunk=result.markdown_chunk,
|
||||||
@@ -102,7 +102,7 @@ class AnayasaUnifiedClient:
|
|||||||
result = await self.bireysel_client.get_decision_document_as_markdown(document_url, page_number)
|
result = await self.bireysel_client.get_decision_document_as_markdown(document_url, page_number)
|
||||||
|
|
||||||
return AnayasaUnifiedDocumentMarkdown(
|
return AnayasaUnifiedDocumentMarkdown(
|
||||||
decision_type=AnayasaDecisionTypeEnum.BIREYSEL_BASVURU,
|
decision_type="bireysel_basvuru",
|
||||||
source_url=result.source_url,
|
source_url=result.source_url,
|
||||||
document_data=result.model_dump(),
|
document_data=result.model_dump(),
|
||||||
markdown_chunk=result.markdown_chunk,
|
markdown_chunk=result.markdown_chunk,
|
||||||
|
|||||||
+4
-6
@@ -273,9 +273,7 @@ from anayasa_mcp_module.models import (
|
|||||||
AnayasaUnifiedSearchRequest,
|
AnayasaUnifiedSearchRequest,
|
||||||
AnayasaUnifiedSearchResult,
|
AnayasaUnifiedSearchResult,
|
||||||
AnayasaUnifiedDocumentMarkdown,
|
AnayasaUnifiedDocumentMarkdown,
|
||||||
AnayasaDecisionTypeEnum,
|
# Removed enum imports - now using Literal strings in models
|
||||||
AnayasaDonemEnum, AnayasaBasvuruTuruEnum, AnayasaVarYokEnum,
|
|
||||||
AnayasaNormTuruEnum, AnayasaIncelemeSonucuEnum, AnayasaSonucGerekcesiEnum
|
|
||||||
)
|
)
|
||||||
# KIK Module Imports
|
# KIK Module Imports
|
||||||
from kik_mcp_module.client import KikApiClient
|
from kik_mcp_module.client import KikApiClient
|
||||||
@@ -1505,7 +1503,7 @@ async def get_uyusmazlik_document_markdown_from_url(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
async def search_anayasa_unified(
|
async def search_anayasa_unified(
|
||||||
decision_type: AnayasaDecisionTypeEnum = Field(..., description="Decision type: norm_denetimi (norm control) or bireysel_basvuru (individual applications)"),
|
decision_type: Literal["norm_denetimi", "bireysel_basvuru"] = Field(..., description="Decision type: norm_denetimi (norm control) or bireysel_basvuru (individual applications)"),
|
||||||
keywords: List[str] = Field(default_factory=list, description="Keywords to search for (common parameter)"),
|
keywords: List[str] = Field(default_factory=list, description="Keywords to search for (common parameter)"),
|
||||||
page_to_fetch: int = Field(1, ge=1, le=100, description="Page number to fetch (1-100)"),
|
page_to_fetch: int = Field(1, ge=1, le=100, description="Page number to fetch (1-100)"),
|
||||||
results_per_page: int = Field(10, ge=1, le=100, description="Results per page (1-100)"),
|
results_per_page: int = Field(10, ge=1, le=100, description="Results per page (1-100)"),
|
||||||
@@ -1513,14 +1511,14 @@ async def search_anayasa_unified(
|
|||||||
# Norm Denetimi specific parameters (ignored for bireysel_basvuru)
|
# Norm Denetimi specific parameters (ignored for bireysel_basvuru)
|
||||||
keywords_all: List[str] = Field(default_factory=list, description="All keywords must be present (norm_denetimi only)"),
|
keywords_all: List[str] = Field(default_factory=list, description="All keywords must be present (norm_denetimi only)"),
|
||||||
keywords_any: List[str] = Field(default_factory=list, description="Any of these keywords (norm_denetimi only)"),
|
keywords_any: List[str] = Field(default_factory=list, description="Any of these keywords (norm_denetimi only)"),
|
||||||
decision_type_norm: Optional[AnayasaBasvuruTuruEnum] = Field(None, description="Decision type for norm denetimi"),
|
decision_type_norm: Optional[Literal["ALL", "1", "2", "3"]] = Field(None, description="Decision type for norm denetimi"),
|
||||||
application_date_start: str = Field("", description="Application start date (norm_denetimi only)"),
|
application_date_start: str = Field("", description="Application start date (norm_denetimi only)"),
|
||||||
application_date_end: str = Field("", description="Application end date (norm_denetimi only)"),
|
application_date_end: str = Field("", description="Application end date (norm_denetimi only)"),
|
||||||
|
|
||||||
# Bireysel Başvuru specific parameters (ignored for norm_denetimi)
|
# Bireysel Başvuru specific parameters (ignored for norm_denetimi)
|
||||||
decision_start_date: str = Field("", description="Decision start date (bireysel_basvuru only)"),
|
decision_start_date: str = Field("", description="Decision start date (bireysel_basvuru only)"),
|
||||||
decision_end_date: str = Field("", description="Decision end date (bireysel_basvuru only)"),
|
decision_end_date: str = Field("", description="Decision end date (bireysel_basvuru only)"),
|
||||||
norm_type: Optional[AnayasaNormTuruEnum] = Field(None, description="Norm type (bireysel_basvuru only)"),
|
norm_type: Optional[Literal["ALL", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "0"]] = Field(None, description="Norm type (bireysel_basvuru only)"),
|
||||||
subject_category: str = Field("", description="Subject category (bireysel_basvuru only)")
|
subject_category: str = Field("", description="Subject category (bireysel_basvuru only)")
|
||||||
) -> str:
|
) -> str:
|
||||||
logger.info(f"Tool 'search_anayasa_unified' called for decision_type: {decision_type}")
|
logger.info(f"Tool 'search_anayasa_unified' called for decision_type: {decision_type}")
|
||||||
|
|||||||
Reference in New Issue
Block a user