DMG
Система, в которой работает компания по удалению вмятин без покраски: каждая вмятина на каждой панели, с ценой уже в момент подсчёта.
Вмятины, цена, документы и мастерская, которой всё это принадлежит.
Смета
Семнадцать панелей кузова, от капота до панели под лобовым стеклом. На каждой техник считает вмятины по трём классам тяжести и отдельно технические, которые считаются по своей цене. Затем говорит, что панели нужно: вытянуть, покрасить, заменить или не трогать. У алюминия свой коэффициент, потому что он ведёт себя не как сталь.
Тарификация
Четыре вида матриц, каждая настраивается для своей компании: град и снятие-установка, а также их французские аналоги. Поверх них двадцать видов надбавок — вытягивание клеем, ограниченный доступ, ламинированное стекло, индукционный нагрев — каждая задаётся фиксированной суммой или процентом.
Бумаги
Сметы и счета нумеруются по каждой компании и по каждому году, каждый из своего счётчика, одной неделимой записью. Смета уходит готовым PDF, собранным с нуля, с повреждённой машиной внутри, и попадает к клиенту по электронной почте.
Компания
Четыре роли, а права хранятся в базе данных, а не в коде — и заново собираются на каждый отдельный запрос. Четырнадцать из тридцати таблиц несут компанию, которой принадлежит строка, поэтому работа одной мастерской никогда не попадает к другой.
От нажатия на панель до документа, который получает клиент.
-
1
Машину рисуют, а не описывают
Техник открывает силуэт стоящего перед ним автомобиля — седан, внедорожник, универсал, фургон или пикап — и нажимает на ту панель, на которую смотрит. Панель принимает цвет того, что ей нужно, а число вводится там же, где всё и случилось.
-
2
Цена идёт следом за подсчётом
Каждая введённая вмятина заново прогоняет весь расчёт: собственную сложность панели, тяжесть вмятины, металл, из которого она сделана, и будет ли она потом покрашена. Никто ничего не ищет по таблицам.
-
3
Смета уходит документом
Числа превращаются в PDF с нарисованной в нём машиной, пронумерованный из собственного счётчика компании, и уходят клиенту. Те же цифры становятся счётом, и их не набирают заново.
Техник считает вмятины на изображении машины, а цена уже там.
Один процесс, одна база данных, и больше нечего поддерживать.
Интерфейс
Шестьдесят один экран: сметы, матрицы, счета и настройки, которые мастерская держит для себя, в одном приложении.
- TypeScript
- Next.js 15
- React 19
- Tailwind CSS
- TanStack Query
Сервер
Один процесс, двадцать пять модулей и API, который описывает сам себя — поэтому экраны и сервер никогда не расходятся.
- NestJS 11
- Prisma
- Swagger / OpenAPI
- CASL
Данные
Тридцать таблиц для самой работы и объектное хранилище для фотографий и документов, которые висят на смете.
- PostgreSQL
- MinIO
Развёртывание
Каждая часть собирается в свой образ, а готовая смета уходит из здания PDF-файлом, прикреплённым к письму.
- Docker
- GitLab CI
- Mailgun
- pdfmake
Трудное здесь — это машина, коэффициенты и центы.
Машина, по которой можно нажимать
Пять силуэтов машин, и на каждом каждая панель — своя область: нажимаешь, и она принимает цвет того, что ей нужно — вытянуть, покрасить, заменить, не трогать. Около пяти тысяч строк на это, потому что техник, стоящий рядом с машиной, не станет читать список названий панелей.
Вмятины, превращённые во время
Французский способ считать град считает не деньги, а время: полоса вмятин превращается в число единиц времени, шестьдесят в часе. Затем перемножаются четыре коэффициента — насколько трудна эта панель, насколько глубока вмятина, алюминий ли металл, будет ли покраска. Движок читает полосы из матрицы, которую мастерская может править сама.
Деньги, которые никогда не округляются
Каждая сумма хранится целым числом центов, по обе стороны провода, и превращается в деньги только при показе. Ни в одной таблице базы данных нет десятичной колонки — решение, которое один раз стоит половины дня и больше не стоит ничего.
Смета составляется там, где стоит машина.
Смета по граду пишется не за столом. Техник обходит машину с телефоном, который у него и так с собой, открывает автомобиль и нажимает на панель перед собой. Те же самые числа, которые вводятся там, и уходят сметой.
Сдано, и посчитано.
Двадцать два месяца, с июня 2024 по апрель 2026 года. В истории значатся восемь человек; работу вынесли пятеро.
Двадцать два месяца работы — сдано.
Есть идея для проекта? Запросите предложение!
Есть проект? Напишите нам, если хотите поработать вместе над чем-то интересным. Или вам нужна наша помощь? Не стесняйтесь обращаться к нам.