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 (рекомендуется)
Перейдите в папку проекта:
cd GoBackend
Запустите проект:
docker compose up --build
API будет доступно по адресу:
http://localhost:8080
Запуск без Docker
Установите Go 1.25+
Установите зависимости:
cd GoBackend
go mod download
Запустите сервер:
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 для обмена данными
Последнее обновление