Corp/backend/api/v1/search/serializers.py
2026-09-07 19:43:48 +03:00

52 lines
2.1 KiB
Python

# backend/api/v1/search/serializers.py
"""
Сериализаторы для API поиска через django-watson.
"""
from __future__ import annotations
from rest_framework import serializers
class SearchResultSerializer(serializers.Serializer):
"""Сериализатор для результата поиска watson."""
model_name = serializers.CharField(
help_text=(
"Тип модели: post, employee, department, request, chat, message, event"
)
)
object_id = serializers.JSONField(help_text="ID объекта (число или UUID)")
title = serializers.CharField(help_text="Заголовок/имя объекта", allow_blank=True)
description = serializers.CharField(
help_text="Описание/превью контента", allow_blank=True, required=False
)
image = serializers.CharField(
help_text="Изображение или аватар результата",
allow_blank=True,
required=False,
allow_null=True,
)
meta = serializers.DictField(
help_text="Дополнительные метаданные", required=False, allow_null=True
)
class SearchResponseSerializer(serializers.Serializer):
"""Сериализатор для ответа API поиска."""
query = serializers.CharField(help_text="Поисковый запрос")
results = SearchResultSerializer(many=True)
counts = serializers.DictField(
help_text="Количество результатов по типам",
child=serializers.IntegerField(),
)
hidden_counts = serializers.DictField(
help_text="Количество недоступных пользователю результатов по типам",
child=serializers.IntegerField(),
)
total = serializers.IntegerField(help_text="Общее количество результатов")
hidden_total = serializers.IntegerField(
help_text="Общее количество недоступных пользователю результатов"
)