From 426cc1025ca7588df8f28ea8823f9b5b285239a7 Mon Sep 17 00:00:00 2001 From: harold Date: Wed, 7 May 2025 20:23:46 +0500 Subject: [PATCH] add fix --- telegram-application/src/core/workers/crud.py | 2 +- .../src/core/workers/schemas.py | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/telegram-application/src/core/workers/crud.py b/telegram-application/src/core/workers/crud.py index 5937087..993e12d 100644 --- a/telegram-application/src/core/workers/crud.py +++ b/telegram-application/src/core/workers/crud.py @@ -18,7 +18,7 @@ async def bulk_create_success_reasons( Success ) .values( - [chat.model_dump() for chat in success_schema.success] + [chat.model_dump_without_duplicate() for chat in success_schema.success] ) ) await session.execute(stmt) diff --git a/telegram-application/src/core/workers/schemas.py b/telegram-application/src/core/workers/schemas.py index 69ba69c..2028bf1 100644 --- a/telegram-application/src/core/workers/schemas.py +++ b/telegram-application/src/core/workers/schemas.py @@ -1,3 +1,5 @@ +from uuid import UUID + from pydantic import BaseModel, PositiveInt, NegativeInt, UUID4 @@ -9,3 +11,24 @@ class SuccessChatFromAiSchema(BaseModel): class ResponseFromGeminiSchema(BaseModel): success: list[SuccessChatFromAiSchema] | None + + def model_dump_without_duplicate(self) -> dict: + if not self.success: + return self.model_dump() + + # Словарь для хранения уникальных элементов по slice_id + unique_items: dict[UUID, SuccessChatFromAiSchema] = {} + + for item in self.success: + if item.slice_id is not None: + if item.slice_id not in unique_items: + unique_items[item.slice_id] = item + + filtered_success = list(unique_items.values()) + + return { + "success": [ + item.model_dump() + for item in filtered_success + ] + } \ No newline at end of file