Необходимо реализовать сервис, в который можно загрузить задачу на обработку файла. Сам файл можно не хранить физически, достаточно работать с метаданными или путём к файлу. (Либо хранить в S3 (MiniO) или в blob формате в БД) Сервис должен принимать задачи, ставить их в очередь, а также менять статус обработки и сохранять результат.
- создания задачи
- просмотра задачи по id
- получения списка задач
- отмены задачи
- запуска фоновой обработки
- число одновременно выполняемых задач должно задаваться в конфиге
- задача должна переходить по статусам корректно
- ошибки обработки должны сохраняться
- должны быть фильтры по статусу, типу задачи, времени создания
- должна быть пагинация
- задачи должны обрабатываться асинхронно
- retry для упавших задач
- scheduler для поднятия “зависших” задач
- историю смены статусов
- приоритет задач
- отдельную таблицу событий по задаче
- метрики по времени выполнения
- Kotlin
- Spring Boot 3.x+
- асинхронность через Kotlin Coroutines или Spring @Async
- PostgreSQL (Можно использовать H2)
- Spring Data JPA
- Liquibase (Или Flyway)
- OpenAPI / Swagger
- JUnit
- Testcontainers
- docker-compose
- Micrometer / Actuator
- MiniO (Если решили хранить файлы в S3)