[UP] v 0.1.4

This commit is contained in:
Evgeny (Krymmy) Momotov 2025-11-13 13:23:56 +03:00
parent 9cd05f08d4
commit 85bb07d7ba
3 changed files with 80 additions and 4 deletions

View file

@ -1,6 +1,6 @@
[project]
name = "callerapimanager"
version = "0.1.3-1"
version = "0.1.4"
description = ""
authors = [
{name = "Evgeny (Krymmy) Momotov",email = "evgeny.momotov@gmail.com"}

View file

@ -6,6 +6,7 @@ from typing import List, Dict, Any, Optional
import aiohttp
from .data_models import *
from .yandex_fleet_models import *
class CallerManagerClient:
@ -104,6 +105,6 @@ class CallerManagerClient:
response = await self._request('GET', f'/prompts/{prompt_id}/openai_settings')
return OpenAISettings(**response)
#async def get_yandex_fleet_driver_profile(self, driver_id: int) -> YandexFleetDriverProfile:
# response = await self._request('GET', f'/yandex_fleet/drivers/{driver_id}/profile')
# return YandexFleetDriverProfile(**response)
async def get_yandex_fleet_driver_profile(self, driver_id: int) -> DriverProfile:
response = await self._request('GET', f'/yandex_fleet/drivers/{driver_id}/profile')
return DriverProfile(**response)

View file

@ -0,0 +1,75 @@
from enum import Enum
from typing import Optional
from pydantic import BaseModel, validator, Field
class WorkStatus(Enum):
WORKING = "working"
NOT_WORKING = "not_working"
FIRED = "fired"
class EmploymentType(str, Enum):
selfemployed = "selfemployed"
park_employee = "park_employee"
individual_entrepreneur = "individual_entrepreneur"
class Account(BaseModel):
balance_limit: str = Field(..., description="Лимит по счету, например: 50")
block_orders_on_balance_below_limit: bool = Field(
False, description="Запрещены ли все заказы при балансе ниже лимита"
)
payment_service_id: str = Field(..., description="ID для платежа, например: 12345")
work_rule_id: Optional[str] = Field(None, description="Идентификатор условия работы, например: bc43tre6ba054dfdb7143ckfgvcby63e")
class OrderProvider(BaseModel):
partner: bool = Field(..., description="Доступны ли заказы от партнера")
platform: bool = Field(..., description="Доступны ли заказы от платформы")
class Profile(BaseModel):
comment: Optional[str] = Field(None, description="Прочее, например: great driver")
feedback: Optional[str] = Field(None, description="Прочее (доступно сотрудникам парка), например: great driver")
fire_date: Optional[str] = Field(None, description="Дата увольнения из парка в формате ISO 8601 без временной зоны, например: 2020-10-28")
hire_date: Optional[str] = Field(None, description="Дата приема в парк в формате ISO 8601 без временной зоны, например: 2020-10-28")
work_status: WorkStatus = Field(..., description="Статус работы водителя: working, not_working, fired")
class FullName(BaseModel):
first_name: str = Field(..., description="Имя, например: Ivan")
last_name: str = Field(..., description="Фамилия, например: Ivanov")
middle_name: Optional[str] = Field(None, description="Отчество, например: Ivanovich")
class DriverLicenseExperience(BaseModel):
total_since_date: str = Field(..., description="Дата начала водительских обязанностей в формате ISO 8601 без временной зоны, например: 1970-01-01")
class DriverLicense(BaseModel):
birth_date: Optional[str] = Field(None, description="Дата рождения в формате ISO 8601 без временной зоны, например: 1975-10-28")
country: Optional[str] = Field(None, description="Страна выдачи водительского удостоверения (трехбуквенный код), например: rus")
expiry_date: Optional[str] = Field(None, description="Дата окончания действия в формате ISO 8601 без временной зоᔊы, например: 2050-10-28")
issue_date: Optional[str] = Field(None, description="Дата выдачи в формате ISO 8601 без временной зоны, например: 2020-10-28")
number: Optional[str] = Field(None, description="Серия и номер водительского удостоверения, например: 070236")
class ContactInfo(BaseModel):
address: Optional[str] = Field(None, description="Адрес, например: Moscow, Ivanovskaya Ul., bld. 40/2, appt. 63")
email: Optional[str] = Field(None, description="Э trueлронная почта, например: example-email@example.com")
phone: Optional[str] = Field(None, description="Номер телефона, например: +79999999999", pattern=r"^\+\d{1,15}$")
class Person(BaseModel):
contact_info: Optional[ContactInfo] = Field(None, description="Контактная информация водителя")
driver_license: Optional[DriverLicense] = Field(None, description="Информация о водительском уд揪тверении")
driver_license_experience: Optional[DriverLicenseExperience] = Field(None, description="Водительский стаж с даты")
employment_type: EmploymentType = Field(..., description="Тип занятости: selfemployed, park_employee, individual_entrepreneur")
full_name: Optional[FullName] = Field(None, description="Полное имя водителя")
tax_identification_number: str = Field(..., min_length=1, description="Идентификационный номер налогоплательщика, например: 7743013902")
class DriverProfile(BaseModel):
account: Optional[Account] = Field(None, description="Счет водителя")
profile: Optional[Profile] = Field(None, description="Профиль водителя")
person: Optional[Person] = Field(None, description="Персональная информация водителя")
order_provider: Optional[OrderProvider] = Field(None, description="Доступность заказов водителем")
car_id: str = Field(..., description="ID машины, например: 12345", min_length=1, max_length=100)