34 lines
981 B
Python
34 lines
981 B
Python
from uuid import UUID
|
|
|
|
from pydantic import BaseModel, PositiveInt, NegativeInt, UUID4
|
|
|
|
|
|
class SuccessChatFromAiSchema(BaseModel):
|
|
user_id: PositiveInt | None
|
|
slice_id: UUID4 | None
|
|
reason: str | None
|
|
|
|
|
|
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
|
|
]
|
|
} |