Квалификационное

испытание

для

Fullstack-программиста

Цель испытания:
Оценить навыки кандидата в разработке программного обеспечения для силоизмерительных систем, включая создание BackEnd и FrontEnd частей, работу с SQL базой данных, а также взаимодействие между ними.
Модель данных:
Приложение должно поддерживать работу с процессом измерения веса вагонов. Каждый вагон состоит из двух или более тележек, каждая тележка включает две или более оси. Ось характеризуется весом и скоростью. Вес вагона определяется как сумма веса всех его осей. Вагоны входят в состав с учетом номера в составе. Состав обладает дополнительными свойствами, такими как дата и время записи, направление движения.
ЗАДАНИЕ

ЧАСТЬ 1: BACKEND РАЗРАБОТКА

1. Работа с БД
a. Составить схему базы данных согласно описанной модели.
b. Разработать ORM модель, отражающую схему базы данных.

2. Создание API
a. Разработать CRUD методы для работы с данными о взвешивании.
b. Разработать RESTful API для управления данными о взвешивании.

3. Тестирование:
a. Написать unit-тесты для всех созданных эндпоинтов и функций работы с базой данных.

Применение технологий на усмотрение исполнителя.

ЧАСТЬ 2: FRONTEND РАЗРАБОТКА

1. Необходимые страницы:
a.Страница создания новых данных о взвешивании вагонов.
b.Страница просмотра существующих составов.

2. Взаимодействие с BackEnd:
a.Реализовать взаимодействие с Backend по разработанным методам API.
b.Обеспечить отображениe ошибок и успешных сообщений пользователю.

ЧАСТЬ 3: ДОКУМЕНТАЦИЯ

1. Подготовить документацию к API (например, с использованием Swagger или Postman).

2. Описать схему базы данных и основные функции приложения.

ЧАСТЬ 4: ДОПОЛНИТЕЛЬНЫЕ ЗАДАНИЯ

1. Docker:
a.Подготовить Dockerfile для развертывания приложения (BackEnd и FrontEnd) в контейнерах.
b.Подготовить docker-compose файл для упрощения развертывания.

2. CI/CD:
a.Настроить простую CI/CD-процедуру (например, с использованием GitHub Actions или GitLab CI) для автоматического тестирования и приложения.

ИТОГОВЫЕ КРИТЕРИИ ОЦЕНКИ

Результат работы должен:
- Выгружен на GitLab, GitHub или Bitbucket;
- Полнота выполнения всех требований;
- Качество кода и документации;
- Удобство использования интерфейса;
- Уровень тестового покрытия;
- Корректность работы всех компонентов системы.

ИТОГ

Кандидат должен продемонстрировать не только технические навыки, но и умение организовать рабочий процесс, следовать лучшим практикам разработки и обеспечивать качество кода.