Repository - это класс с методами для работы с бд, это правильно.
Manager я обычно видел довольно редко(вообще не видел не на одном проекте), но если используется, то обычно он инкапсулирует логику репозиториев и может например вызывать несколько репозиториев в себе
Service если используются Manager, то обычно сервисы он взаимодействует с репозиториями или менедежрами, валидирует данные, логирует, обрабатывает какие-либо ошибки на этом уровне
но так как менеджеры я вообще не видел, то расскажу, как пишу и как обычно я видел на примере других проектов
Репозитории - взаимодействуют с бд
(На начальном этапе используйте их, перед собеседованием почитай про CQRS)
Сервисы - абстракция, которая инкапсулирует бизнес логику, например один сервис инкапсулирует логику репозитория, другой например отправляет сообщение другому микросервису или клиенту, другой реализует логику работы с внешним API
UseCase - использует сервисы для решения конкретоной бизнес задачи
Например создать новый товар, это же не просто кнопочку на фронте нажать, там много разных действий
В условиях монолита - это создать сам товар, указать его категорию, провалидировать что все корректно, добавить в бд, провалидировать что все нормально записалось, отправить какое-либо уведомление, связаться с внешним API(для каких-либо задач)
для работы с бд вы пишите репозитории, для валидации и инкапсуляции логики вы пишите сервисы, для отправки и связи с внешним API также сервисы, а для самого сценария вы делает UseCase который вызывает все нужные сервисы и уже этот UseCase вызывается в контроллере и контроллер отдает ответ клиенту
Заметь, что UseCase не должны напрямую с репозиториями взаимодействовать, а именно через абстракции, как раз сервисы
А в микросервисах, там еще больше операций, отправка к внешним микросервисам, обработка ответов и т.д
Надеюсь ответил на вопрос, а если я ошибся надеюсь меня исправят