This commit is contained in:
“Smyshlyaev.IO” 2025-08-26 01:18:19 +03:00
parent 45bc53f88a
commit 75d2d36f64
1 changed files with 113 additions and 0 deletions

View File

@ -0,0 +1,113 @@
## Anagram microservice
### Задача
Разработать микросервис на Go для группировки слов по анаграммам с возможностью обработки больших объемов данных.
### Основные требования
1. REST API
Реализовать HTTP API со следующими эндпоинтами:
POST /api/v1/anagrams/group - группировка массива слов
GET /api/v1/anagrams/groups/{id} - получение результата по ID задачи
GET /api/v1/health - проверка состояния сервиса
2. Входные данные
```json
{
"words": ["ток","рост","кот","торс","Кто","фывап","рок"],
"case_sensitive": false
}
```
3. Выходные данные
```json
{
"task_id": "uuid-string",
"status": "completed",
"result": [
["ток","кот","Кто"],
["рост","торс"],
["фывап"],
["рок"]
],
"processing_time_ms": 15,
"groups_count": 4
}
```
4. Архитектура и производительность
Использовать паттерн Clean Architecture
Реализовать пул горутин для обработки больших массивов (>10k слов)
Добавить кэширование результатов (in-memory)
Поддержка конкурентной обработки нескольких запросов
5. Обработка больших данных
Поддержка потоковой обработки для массивов >100k элементов
Возможность загрузки данных из файла (CSV, JSON)
6. Мониторинг и логирование
Структурированное логирование (logrus/zap)
Трейсинг запросов
Graceful shutdown
8. Тестирование
Unit тесты с покрытием >80%
Integration тесты
Benchmark тесты для алгоритма группировки
Тестирование нагрузки
9. API дополнения
POST /api/v1/anagrams/upload - загрузка файла со словами
GET /api/v1/anagrams/stats - статистика обработанных запросов
DELETE /api/v1/anagrams/cache - очистка кэша
10. Обработка ошибок
Валидация входных данных
Rate limiting
Timeout для долгих операций
Возврат детальных ошибок в JSON формате
-----------------
Критерии оценки:
Качество и читаемость кода
Архитектурные решения
Производительность алгоритма
Обработка edge cases
Покрытие тестами
Документация API (Swagger/OpenAPI)
Monitoring и observability