## 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