Compare commits

...

2 commits

Author SHA1 Message Date
73cef306c9 [UP] v 0.1.6 2025-12-08 08:09:32 +03:00
158afb90d4 [UP] add reports support 2025-12-08 08:09:24 +03:00
3 changed files with 96 additions and 2 deletions

View file

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

View file

@ -263,3 +263,54 @@ class YandexManagerClient:
if not response:
return None
return YandexFleetInspectionCheeks(**response)
async def _reports_rout(self, method: str, url: str, **kwargs) -> dict | list | None:
response = await self._request(method, f'/reports/{url.strip("/")}', **kwargs)
if not response:
return None
return response
async def create_supply_hours_condition_report(self, report: SupplyHoursConditionReportIn) -> SupplyHoursConditionReport | None:
response = await self._reports_rout('POST', 'supply_hours_conditions/', json=report.model_dump())
if not response:
return None
return SupplyHoursConditionReport(**response)
async def get_yandex_fleet_check_reports(self, **params) -> list[YandexFleetCheckReport] | None:
response = await self._reports_rout('GET', 'yandex_fleet_checks/', params=params)
if not response:
return []
return [YandexFleetCheckReport(**report) for report in response]
async def create_yandex_fleet_check_report(self, report: YandexFleetCheckReportIn) -> YandexFleetCheckReport | None:
response = await self._reports_rout('POST', 'yandex_fleet_checks/', json=report.model_dump())
if not response:
return None
return YandexFleetCheckReport(**response)
async def get_group_check_reports(self, **params) -> list[GroupCheckReport] | None:
response = await self._reports_rout('GET', 'group_checks/', params=params)
if not response:
return []
return [GroupCheckReport(**report) for report in response]
async def create_group_check_report(self, report: GroupCheckReportIn) -> GroupCheckReport | None:
response = await self._reports_rout('POST', 'group_checks/', json=report.model_dump())
if not response:
return None
return GroupCheckReport(**response)
async def get_driver_check_reports(self, **params) -> list[DriverCheckReport] | None:
response = await self._reports_rout('GET', 'driver_checks/', params=params)
if not response:
return []
return [DriverCheckReport(**report) for report in response]
async def create_driver_check_report(self, report: DriverCheckReportIn) -> DriverCheckReport | None:
response = await self._reports_rout('POST', 'driver_checks/', json=report.model_dump())
if not response:
return None
return DriverCheckReport(**response)

View file

@ -283,4 +283,47 @@ class GroupInspectionCheek(BaseInspectionsCheckModel, BasicModel):
class DriverInspectionCheek(BaseInspectionsCheckModel, BasicModel):
drive_inspection: DriverInspection = Field(description="Инспекция водителя")
drive_inspection: DriverInspection = Field(description="Инспекция водителя")
class SupplyHoursConditionReport(UUIDModel, BasicModel):
supply_hours_condition: Optional[SupplyHoursCondition] = Field(description="Условие по часам поставки", default=None)
driver: Optional[Driver] = Field(description="Водитель", default=None)
supply_duration: int = Field(description="Время работы в часах", default=0)
is_fulfilled: bool = Field(description="Соблюдение условия", default=False)
class SupplyHoursConditionReportIn(BaseModel):
supply_hours_condition_id: Optional[int] = Field(description="Условие по часам поставки", default=None)
driver_id: Optional[int] = Field(description="Водитель", default=None)
supply_duration: Optional[int] = Field(description="Время работы в часах", default=0)
is_fulfilled: Optional[bool] = Field(description="Соблюдение условия", default=False)
class CheckReport(UUIDModel, BasicModel):
owner: Optional[User] = Field(description="Владелец", default=None)
supply_hours_condition_report: Optional[SupplyHoursConditionReportIn] = Field(description="Водитель", default=None)
action_do: Optional[Action] = Field(description="Действие", default=None)
class YandexFleetCheckReport(CheckReport):
yandex_fleet_check: Optional[YandexFleetInspectionCheeks] = Field(description="Инспекция флота", default=None)
class GroupCheckReport(CheckReport):
group_check: Optional[GroupInspectionCheek] = Field(description="Инспекция группы", default=None)
class DriverCheckReport(CheckReport):
driver_check: Optional[DriverInspectionCheek] = Field(description="Инспекция водителя", default=None)
class CheckReportIn(BaseModel):
owner_id: Optional[int] = Field(description="Владелец", default=None)
supply_hours_condition_report_id: Optional[int] = Field(description="Водитель", default=None)
action_do_id: Optional[int] = Field(description="Действие", default=None)
class YandexFleetCheckReportIn(CheckReportIn):
yandex_fleet_check_id: Optional[int] = Field(description="Инспекция флота", default=None)
class GroupCheckReportIn(CheckReportIn):
group_check_id: Optional[int] = Field(description="Инспекция группы", default=None)
class DriverCheckReportIn(CheckReportIn):
driver_check_id: Optional[int] = Field(description="Инспекция водителя", default=None)