Skip to content

Latest commit

 

History

History
220 lines (163 loc) · 7.61 KB

File metadata and controls

220 lines (163 loc) · 7.61 KB

📚 Документация Backend для проекта SafeGuard 🚀

📝 Описание проекта

SafeGuard — это система для поиска смысловых копий изображений в интернете, предназначенная для предотвращения распространения неприемлемого контента. Система использует методы машинного обучения для распознавания аналогичных изображений, независимо от фона, стиля или типа изображения.

Основные компоненты:

  1. Поиск смысловых копий изображений.

  2. Распознавание людей и объектов на изображениях.

  3. Фильтрация контента на основе изображения.

  4. Интерфейс API для интеграции с внешними системами.

🛠️ Технологический стек

  • Django, Django REST Framework (DRF) — для создания API.
  • PostgreSQL — база данных.
  • VK Cloud S3 — хранилище объектов.

📁 Структура проекта

Проект организован с использованием стандартной структуры для Django-приложений и некоторых вспомогательных библиотек:

│   ├── src/
│   │   ├── core/
│   │   │   ├── db/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── initdb.py   # Инициализация базы данных
│   │   │   │   ├── session.py  # Настройка сессий с БД
│   │   │   ├── __init__.py
│   │   │   ├── errors.py      # Обработчики ошибок
│   │   ├── models/
│   │   │   ├── __init__.py
│   │   │   ├── base.py        # Базовые модели
│   │   │   ├── image.py       # Модели для обработки изображений
│   │   ├── routers/
│   │   │   ├── v1/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── router.py  # Роутеры API для версии 1
│   │   ├── schemas/
│   │   │   ├── __init__.py
│   │   │   ├── image.py       # Схемы для сериализации данных
│   │   ├── main.py            # Точка входа для Django
│   │   ├── s3.py              # Интеграция с  VK Cloud S3
│   │   ├── settings.py        # Конфигурация настроек
├── .env                       # Переменные окружения для локальной настройки
├── Dockerfile                 # Dockerfile для сборки контейнера
├── requirements.txt           # Зависимости проекта

📑 Документация для эндпоинтов API SafeGuard

1. Получить все изображения с заданным статусом 🖼️

URL

GET /image/all

Параметры запроса

  • status (обязательный): Статус изображения. Доступные значения: UPLOADED, PROCESSING, PROCESSED.

Ответ

Возвращает список всех изображений с заданным статусом.

Пример ответа:

[
  {
    "id": 1,
    "name": "image1.jpg",
    "s3_path": "images/uuid_image1.jpg"
  },
  {
    "id": 2,
    "name": "image2.jpg",
    "s3_path": "images/uuid_image2.jpg"
  }
]

2. Получить информацию об изображении 📸

URL

GET /image/{image_id}

Параметры запроса

  • image_id (обязательный): ID изображения.

Ответ

Возвращает подробную информацию о выбранном изображении.

Пример ответа:

{
  "id": 1,
  "name": "image1.jpg",
  "status": "UPLOADED",
  "created_at": "2024-11-01T10:00:00+00:00",
  "uploaded_at": "2024-11-01T10:05:00+00:00",
  "s3_path": "images/uuid_image1.jpg"
}

3. Загрузить новое изображение 📤

URL

POST /image

Параметры запроса

  • name (обязательный): Название изображения.
  • file (обязательный): Файл изображения.
  • model_name (обязательный): Название модели, которая будет обрабатывать изображение.

Ответ

Возвращает информацию о загруженном изображении.

Пример ответа:

{
  "id": 1,
  "name": "image1.jpg",
  "status": "UPLOADED",
  "created_at": "2024-11-01T10:00:00+00:00"
}

4. Ожидание изображения для обработки 🕑

URL

GET /image/poll/{model_name}

Параметры запроса

  • model_name (обязательный): Название модели для обработки.

Ответ

Возвращает изображение, готовое для обработки, или сообщает об отсутствии новых изображений.

Пример ответа:

{
  "id": 1,
  "s3_path": "images/uuid_image1.jpg",
  "img_callback_url": "http://restapi:8000/api/v1/image/1/processed"
}

5. Получить результат обработки изображения 🖼️🔧

URL

GET /image/{image_id}/processed

Параметры запроса

  • image_id (обязательный): ID изображения.

Ответ

Возвращает ссылку на обработанное изображение и список других обработанных изображений.

Пример ответа:

{
  "img_url": "images/uuid_image1.jpg",
  "return": "true",
  "id": "1",
  "result": ["2", "3"]
}

6. Получить изображения, связанные с обработанным изображением 🔄

URL

GET /image/{image_id}/return_images

Параметры запроса

  • image_id (обязательный): ID изображения.

Ответ

Возвращает список обработанных изображений, связанных с указанным изображением.

Пример ответа:

[
  {
    "id": 2,
    "file_link": "images/uuid_image2.jpg"
  },
  {
    "id": 3,
    "file_link": "images/uuid_image3.jpg"
  }
]

⚙️ Примечания

  • Для работы с изображениями система использует Amazon S3 для хранения файлов.
  • Все запросы и ответы взаимодействуют с базой данных, где хранятся изображения и их статусы.
  • При обработке изображений система автоматически обновляет статусы и связывает обработанные изображения с исходными.

🚀 Безопасность и доступ

Все эндпоинты защищены и требуют соответствующих прав доступа для работы с изображениями и их обработкой.