Никита Митусов Обсудить задачу

Бланк результатов. Кейс № 3

IZILAB

Написано
с нуля

Заказ анализов онлайн. Написал сервис с нуля: админку, каталог, корзину, оплату, письма и запуск.

Исследуемый
izilab.ru
Биоматериал
старый сайт на React и Node.js
Взято
27.03.2025, договор
Выдано
30.09.2025, 23:00 МСК
Исполнитель
Никита Митусов, сервис написан с нуля
Кто ещё
Заказ вело агентство Solution: аналитика, дизайн, вёрстка и данные. Руководитель агентства подключился к коду на финише и дописал расчёт прибыли и заказ комплексов
Раздел 1Результаты

Старый сайт не трогали. Написал новый

ПоказательРезультатРеференс, как былоОткл.
Основа написана с нуля на Laravel старый сайт на React и Node.js норма
Админка 12 разделов заказов за месяц не посчитать норма
Заказ в лабораторию письмом после оплаты, сам передавали вручную норма
Лаборатории в базе 233 не задан норма
Сети 5, у каждой свои артикулы не задан норма
Письма после оплаты 3 не задан норма
PDF после оплаты 2 не задан норма
Комплексы в заказе пропуск, закрыт на финише должны попадать ↓2
Срок, дней 187 45 ↑1
  1. 45 дней были планом на программирование. Дизайн согласовали 8 июля, вёрстку передали 11 августа. От вёрстки до запуска прошло 50 дней.
  2. Комплексы не попадали в заказ: мой пропуск. Закрыл его на финише руководитель агентства вместе с расчётом себестоимости.
Раздел 2Модель данных

Один анализ живёт в трёх измерениях

Город задаёт цену. Сеть задаёт артикул и себестоимость. Медофис задаёт день и часы. Поэтому карточка анализа и прайс-листы в админке сложнее обычного каталога.

Город цена

Сеть артикул и себестоимость

Медофис день и часы

Ферритин

Цена
450 ₽цена города
Артикул
СЛ-1040свой в каждой сети
Приём
пн–сб, 7:30–11:00справкой в оформлении

30 дней записи вперёд. Выходные и особые даты закрыты.

Учебная модель. Города и сети настоящие, цены, артикулы и часы условные.

Раздел 3Заказ

Корзина гасит сети

Отметьте анализы. Сети без них погаснут, останутся те, где можно сдать весь набор. Потом оплатите и посмотрите, что уходит дальше.

Анализы, Казань

Где сдать

Итого

450 ₽

Сдать в сети Ситилаб

Перечень услуг у сети и вкладка артикулов мои. Подбор сети под всю корзину дописал руководитель агентства на финише. Цены и состав сетей условные.

После оплаты всё уходит само

Раньше заказы передавали в лаборатории вручную. Теперь вебхук ЮKassa запускает цепочку, и письма уходят только после оплаты.

  1. ОплатаЮKassa подтвердила платёж
  2. Вебхукзаказ отмечен оплаченным, данные чека переданы
  3. PDF Направление пациенту

    Казань, Медофис 1

  4. PDF Гарантийное письмо лаборатории

    Казань, Медофис 1

  5. Письмо Заказ оплачен клиенту

    Казань, Медофис 1

  6. Письмо Новый заказ администратору медофиса

    Казань, Медофис 1

  7. Письмо Состав заказа лаборатории
    • Ферритин, СЛ-1040
ПриложенияНастоящие экраны

Приложения к бланку

Дизайн и вёрстка от агентства. Натянул их на Laravel и собрал витрину: каталог, карточки, корзину, оформление. Страницы можно листать прямо в рамке.

Каталог анализов IZILAB с категориями и карточками
Каталог анализов IZILAB с категориями и карточками
Карточка анализа: срок, цена по акции, кнопка корзины
Карточка анализа: срок, цена по акции, кнопка корзины
Карточка комплекса с составом исследований
Карточка комплекса с составом исследований
Акции со сроком и таймером на каждой карточке
Акции со сроком и таймером на каждой карточке

Раздел 4. 30 сентября 2025, время московское

Ночь запуска

  1. За день до запуска

    На сервере заказчика нет части окружения, база работает в контейнере. Ставлю окружение, переношу дамп, разбираюсь с картинками, которые перестали открываться.

  2. Старый сайт

    Последняя продажа на старом сайте. Заказчик торговал почти до конца.

  3. Домен

    Меняем запись домена, сервис поднимается. SSL слетает, как и ждали. Выпускаю новый.

  4. Первый покупатель

    Оплата не проходит: ЮKassa возвращает ошибку про чек. Эту дыру заметили вечером и отложили на завтра. Завтра наступило раньше.

  5. Первая оплата

    Добавляю данные для чека той же ночью. Деньги прошли, сервис работает.

23:32 восстановлено по логу с поправкой на часы сервера.

Раздел 5Жалобы и назначения

Что ломалось

Лаборатории потеряли города
Жалоба
Сайт перестал находить лаборатории по городу, фильтр в админке тоже молчал.
Причина
Импорт заполнял поле city_id, а админка и витрина читали связь через таблицу city_laboratory. Заметил, что ручное пересохранение всё чинит, сравнил две записи и увидел расхождение.
Назначение
Привязывать логику к заполненному полю не стал: таблица связей нужна всему сервису. На поиск ушло около 4 часов. 233 записи перенёс скриптом руководитель агентства.
PDF, который нельзя отладить без оплаты
Жалоба
Локально файлы создавались, на сервере ссылок на них не было.
Причина
PDF собирался внутри вебхука, поэтому каждая проверка требовала настоящего платежа. Лог нашёл руководитель агентства: библиотеке для PNG-логотипа нужно расширение PHP GD.
Назначение
Поставил расширение, убрал отладчик, который копил гигабайты логов. Теперь при правке заказа файлы создаются заново.
Цена, которой уже нет
Жалоба
Заказ оплатили по акционным ценам, удалённым 31 октября.
Причина
Вероятная причина: цена комплекса бралась из сессии. Я сделал так, чтобы не нагружать базу. Повторить случай не удалось.
Назначение
Цены комплексов теперь идут только из базы и городской таблицы, просроченные скидки не применяются. Срок акции снимает цену сам в 00:01.
ЗаключениеПодпись и печать

Заключение

«Всё понятно и чисто»

Смотрел код, всё очень понятно и чисто.

Руководитель агентства, 2025. Пересказ из переписки.

Я работал быстро, и местами это било по точности: часть вёрстки разошлась с макетом, комплексы не попали в заказ. С тех пор сверяю страницы с вёрсткой по чек-листу и прогоняю данные и деньги на боевых данных до показа.

Запущен
01.10.2025

Что я делал
Весь сервис с нуля: база, админка, каталог, корзина, оформление, оплата, письма, PDF и запуск на сервере заказчика
Кто ещё работал
Заказ вело агентство Solution: аналитика, дизайн, вёрстка и данные. Руководитель агентства подключился к коду на финише и дописал расчёт прибыли и заказ комплексов
Когда
март – декабрь 2025, запуск в ночь на 1 октября
Инструменты
Laravel, Orchid, MySQL, ЮKassa, Яндекс Карты, DomPDF
Сайт
izilab.ru

Нужно похожее? Сайты и лендинги: от 30 000 ₽