Добавлена dadata

This commit is contained in:
Раис Юсупалиев
2026-03-28 03:44:05 +03:00
parent 5f6406c712
commit 17772e5337
18 changed files with 603 additions and 3 deletions
+29 -1
View File
@@ -6,7 +6,7 @@ from pathlib import Path
import sys
from typing import Any
from pydantic import BaseModel, Field
from pydantic import BaseModel, Field, field_validator
from pydantic_settings import (
BaseSettings,
PydanticBaseSettingsSource,
@@ -48,6 +48,30 @@ class AdapterConfig(BaseModel):
cdek_cache_ttl_seconds: int = Field(default=900, gt=0)
class DadataAddressSuggestionsConfig(BaseModel):
url: str = "https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/address"
api_key: str = ""
timeout_seconds: float = Field(default=10.0, gt=0)
class AddressSuggestionsConfig(BaseModel):
country_to_provider: dict[str, str] = Field(default_factory=dict)
dadata: DadataAddressSuggestionsConfig = Field(
default_factory=DadataAddressSuggestionsConfig
)
@field_validator("country_to_provider")
@classmethod
def _normalize_country_to_provider(
cls,
value: dict[str, str],
) -> dict[str, str]:
return {
str(country_code).strip().upper(): str(provider_id).strip().lower()
for country_code, provider_id in value.items()
}
class ObservabilityConfig(BaseModel):
enabled: bool = False
service_name: str = Field(..., min_length=1)
@@ -65,6 +89,9 @@ class Settings(BaseSettings):
business_logic: BusinessLogicConfig = Field(default_factory=BusinessLogicConfig)
repository: RepositoryConfig = Field(default_factory=RepositoryConfig)
adapter: AdapterConfig = Field(default_factory=AdapterConfig)
address_suggestions: AddressSuggestionsConfig = Field(
default_factory=AddressSuggestionsConfig
)
observability: ObservabilityConfig
@classmethod
@@ -93,6 +120,7 @@ class _RequiredYamlSections(BaseModel):
business_logic: dict[str, Any]
repository: dict[str, Any]
adapter: dict[str, Any]
address_suggestions: dict[str, Any]
observability: dict[str, Any]