- В репозитории находится фундамент Laravel приложения с небольшими изменениями, а также предопределенным файлом окружения
.env.local
. Этот файл служит ориентиром и базовым требованием к проекту: выбор СУБД, механизм кэширования, порты в контейнере и на хост-машине и т.д. - Переменные в
.env.local
и в конфигурация приложения config не должны изменяться (исключение составляют настройки для подключаемых пакетов). - Проект должен быть обернут в Docker, запуск осуществляться посредством
docker-compose up
. Файл окружения для compose - также .env.local - Локальное развертывание должно происходить без ошибок как на Unix, так и на Windows системах.
- Использование плагина devcontainers запрещено.
- Вместо связки
phpfpm + nginx
требуется реализоватьnginx
(как обратный прокси) +swoole
(Laravel Octane) в качестве сервера приложения. - Необходимо настроить работу служб внутри контейнера под supervisor.
- Приложение должно представлять собой чистое REST API. Удаляем все web маршруты и меняем глобальный обработчик исключений. Возврат ответов должен быть в формате JSON по любому маршруту.
- Приложение выполняет функционал сервиса генерации уникального лабораторного кода. Для этого необходимо создать один POST API маршрут, который принимает один из трех префиксов лабораторного кода:
QD
,ZA
,FW
. - Сгенерированный код должен следовать формату
{префикс}{цифра}{цифра}{цифра}({буква}{0,2})
. После трех цифр и при достижении максимального количества вариантов, счетчик обнуляется, и добавляется буква по алфавиту. Продолжается по тому же принципу до двух последних латинских букв алфавита. Например, последний вариант дляQD
будетQD999ZZ
. - Необходимо создать алгоритм, учитывающий все возможные варианты, для максимизации количества уникальных лабораторных кодов.
- Важно: Система должна учитывать конкурентные запросы и предотвращать дублирование лабораторных кодов в БД.
- Схема таблицы в БД должна содержать текстовое поле
lab_code
. Остальные поля вариативны и остаются на усмотрение разработчика.