Сервис для обработки заявок на займ, разработанный с использованием Yii2 и принципов Чистой Архитектуры (Clean Architecture).
Сервис моделирует обработку заявок на займ:
- Пользователи могут подавать заявки посредством API.
- Заявка попадает в очередь и обрабатывается асинхронно.
- Обработка происходит с вероятностью одобрения 10%.
- У каждого пользователя может быть только одна одобренная заявка.
- Framework: Yii2 (PHP 8.2)
- Database: PostgreSQL
- Queue: Redis
- Web Server: Nginx
- Containerization: Docker Compose
- Testing: PHPUnit
src/domain/
— доменные сущности, value object’ы, интерфейсы и событияsrc/application/
— сервисы и use-case'ыsrc/api/controllers/
— REST APIsrc/tests/
— unit и интеграционные тесты
- Скопируйте
.env.example
в.env
и укажите актуальные значения:
cp .env.example .env
- Выполните команду инициализации (сборка, запуск, миграции):
make init
При инициализации выполняется миграция, которая создаёт 10 тестовых пользователей.
После запуска:
- API доступно по адресу:
http://localhost
- URL GET-запроса для получение всех пользователей с их заявками:
GET /v1/users
- URL POST-запроса для создания заявки:
POST /v1/users/{id}/requests
Переменная | Описание |
---|---|
APP_NAME |
Имя приложения, используется как префикс для Docker-сервисов |
NGINX_PORT |
Порт, на котором доступно приложение через Nginx на localhost |
POSTGRES_HOST |
Хост БД PostgreSQL |
POSTGRES_PORT |
Порт PostgreSQL |
POSTGRES_USER |
Имя пользователя для подключения к БД |
POSTGRES_DB |
Название базы данных |
POSTGRES_PASSWORD |
Пароль пользователя БД |
REDIS_HOST |
Хост Redis |
REDIS_PORT |
Порт Redis |
YII_DEBUG |
Включение режима отладки (1 — включён, 0 — выключен) |
YII_ENV |
Окружение приложения (dev , prod , test и т.д.) |
Перед использованием убедитесь, что файл
.env
существует. Если нет — создайте его:
cp .env.example .env
Команда | Описание |
---|---|
make up |
Запустить контейнеры (docker compose up -d ) |
make down |
Остановить контейнеры (docker compose down --remove-orphans ) |
make restart |
Перезапустить контейнеры (make down && make up ) |
make init |
Полная инициализация проекта: остановка, сборка, запуск, миграции |
Команда | Описание |
---|---|
make docker-up |
Запустить контейнеры |
make docker-down |
Остановить контейнеры |
make docker-clear-volumes |
Остановить и удалить связанные volume'ы |
make docker-pull |
Скачать свежие образы |
make docker-build |
Собрать образы |
Команда | Описание |
---|---|
make wait-db |
Ожидание готовности базы данных |
make migrate |
Применение миграций |
make purge-db |
Очистка базы данных |
make db-refresh |
Полная перезагрузка базы: очистка + миграции |
Команда | Описание |
---|---|
make run-test |
Запуск тестов |