Backend Service (Golang)

Назначение

Backend — это центральный API-шлюз, который:

  • Принимает запросы от внешних пользователей и организаторов (endpoint /predict).

  • Делегирует классификацию и анализ отзывов ML-сервису (lct-ml).

  • Проверяет корректность данных и возвращает структурированные ошибки.

  • Форматирует ответы в соответствии с требованиями ТЗ.

API

POST /predict

Формат запроса:

{
  "data": [
    {"id": 1, "text": "Очень понравилось обслуживание..."},
    {"id": 2, "text": "Кредитную карту одобрили быстро"}
  ]
}

Формат ответа:

 {
  "predictions": [
    {"id": 1, "topics": ["Обслуживание","Мобильное приложение"], "sentiments": ["положительно","отрицательно"]},
    {"id": 2, "topics": ["Кредитная карта"], "sentiments": ["нейтрально"]}
  ]
} 

Go Backend API (GoBackend/)

🚀 Быстрый старт

Запуск с Docker (рекомендуется)

  1. Перейдите в папку проекта:

cd GoBackend
  1. Запустите проект:

docker compose up --build
  1. API будет доступно по адресу: http://localhost:8080

Запуск без Docker

  1. Установите Go 1.25+

  2. Установите зависимости:

cd GoBackend
go mod download
  1. Запустите сервер:

go run cmd/server/main.go

📋 Go API Endpoints

Health Check

GET /health

Проверка работоспособности сервера.

Ответ:

{
  "status": "healthy",
  "timestamp": "2025-09-27T01:10:42.082Z",
  "version": "1.0.0"
}

Получение отзывов

GET /api/v1/reviews

Получение отзывов с пагинацией и фильтрацией.

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

  • page (int, default: 1) - номер страницы

  • limit (int, default: 20, max: 100) - количество отзывов на странице

  • topic (string, optional) - фильтр по теме

  • sentiment (string, optional) - фильтр по тональности

Пример запроса:

GET /api/v1/reviews?page=1&limit=10&topic=Обслуживание&sentiment=положительно

Ответ:

{
  "reviews": [
    {
      "id": 1,
      "link": "https://example.com/review/1",
      "date": "2025-01-15",
      "title": "Отличное обслуживание",
      "text": "Очень понравилось обслуживание в отделении...",
      "rating": "5",
      "status": "published",
      "product": "Депозиты", 
      "city": "Москва",
      "topics": ["Обслуживание"],
      "sentiments": ["положительно"]
    }
  ],
  "total": 14410,
  "page": 1,
  "limit": 10,
  "total_pages": 1441
}

Аналитические данные

GET /api/v1/analytics

Получение полных данных для аналитики (все отзывы + предсказания).

Ответ:

{
  "reviews": [...], 
  "predictions": [
    {
      "id": 1,
      "topics": ["Обслуживание", "Мобильное приложение"],
      "sentiments": ["положительно", "отрицательно"]
    }
  ]
}

⚠️ Внимание: Этот endpoint возвращает большой объем данных (~36MB). Используйте с осторожностью.

⚙️ Технологии

  • Go 1.25

  • Fiber v3 (веб-фреймворк)

  • Docker & Docker Compose

  • JSON для обмена данными

Последнее обновление