Переписали легаси на CodeIgniter и заодно собрали бизнес-процессы
Старая система на CodeIgniter была плохо задокументирована, часть функций числилась рабочей только формально. Полностью мигрировали на Laravel, написали новые модули, починили сломанные сценарии и собрали бизнес-процессы с нуля.
- Многоэтапно
- Эльвин Шарифов + backend-контрактор
- Инженерия · Системный дизайн · Анализ бизнес-процессов
- В проде
Исходная точка
Makromedicine — это многолетняя система на CodeIgniter, через которую прошло много рук. Документация слабая, код растрёпан, часть функций формально была, но фактически не работала — пользователь нажимал, ничего не происходило. Один кусок не вызывал другой, бизнес-сценарий обрывался посередине.
Сфера медицинская — данные чувствительные: записи пациентов, архив обращений, история оплат. Каждый шаг приходилось рассматривать и технически, и с точки зрения compliance.
Решения
- Полная миграция на Laravel, а не очередное латание. Каждый месяц на CodeIgniter обходился всё дороже.
- Бизнес-процесс собрали с нуля — вход пользователя, создание обращения, оплата, отчёт. На каждом шаге явно прописано, кто решает и кто исполняет.
- Битые функции прошли поштучным аудитом — что-то было просто легаси и пошло под нож, что-то починили, что-то встроили в новый сценарий.
- Новые модули под запрос клиента — отчётность, экспорт, внутренняя админка, audit log.
Исполнение
Стек: Laravel 11, Postgres, фоновые задачи через queue (генерация отчётов, рассылки). Фронт — Blade + Alpine.js; для админки React был бы избыточен. Аутентификацию и RBAC сделали заново.
«Самое интересное в этом проекте — не технологический переезд, а пересборка бизнес-процессов. CodeIgniter был предлогом, настоящая работа была — расставить ответственность по местам.»
На каждой неделе была сверка с клиентом: какая функция остаётся, какая меняется, какая уходит.
Результат
- Полный стек на Laravel — добавлять новое больше не больно.
- Заново собранные бизнес-процессы — у каждого шага есть владелец.
- Битые функции починены или убраны — пользователь больше не натыкается на «кнопку, которая не работает».
- Audit log и внутренняя админка переданы команде клиента.