Перейти к содержимому
Кейс

Tyras

Система, на которой работает компания по экспорту автомобилей: каждая машина от аукционного лота до судна и каждая бумага, которую по дороге спросит порт.

Список заказов на отправку в Tyras: каждая машина в пути, с её статусом, лотом и назначением
37Построенных экранов 13Состояний заказа 15Генерируемых документов 7Ролей пользователей
Что мы построили

Заказ, контейнер, бумаги и деньги.

Заказ

Каждая машина начинается как заказ: лот, на котором её купили, VIN, номер покупателя, куда она едет. Тринадцать состояний ведут её от новой до завершённой, а те, что важнее всего — принята на площадке, отправлена на доставку, погружена на экспорт — ставит сама система, а не человек руками.

Контейнер

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

Бумаги

Из системы выходит пятнадцать документов: коносамент, в варианте для Монреаля и для Ванкувера; декларация на опасный груз; инструкции по погрузке; подтверждение отправки; и счета от трёх компаний.

Деньги

Счета в канадских долларах, долларах США и евро, с GST и квебекским QST. Курс берётся у Банка Канады и замораживается на счёте, поэтому документ полугодовой давности воспроизводится в точности.

Как это работает

От аукционного лота до бумаг, которые пишутся сами.

  1. 1

    Машину купили, и она становится заказом

    Номер лота, VIN, аукцион. С этой минуты у машины есть адрес в системе, и все, кто к ней прикасается — диспетчер, водитель, грузчик на площадке, перевозчик — видят один и тот же.

  2. 2

    Фотография двигает заказ дальше

    Водитель получает задание карточкой в Telegram, с картой и прямой ссылкой. Он делает работу, открывает приложение и загружает фотографии. Группа, в которую он их кладёт, и есть состояние заказа: принята на площадке, доставлена, погружена на экспорт. Статус никто не печатает.

  3. 3

    Бумаги пишутся сами

    Когда контейнер готов, документы выходят уже заполненными: коносамент для нужного порта, декларация на опасный груз с нужным номером ООН для батарей внутри, инструкции по погрузке с каждым VIN и его фотографией.

Машину вводят один раз, на аукционе. Всё, что дальше — площадка, контейнер, судно и каждая бумага, которую спросит порт — это одна и та же запись в движении.

На чём построено

Интерфейс, сервисы, данные, и как уходят документы.

Интерфейс

Тридцать семь экранов: заказ, контейнер, бумаги и деньги — для того, кто вошёл в систему.

  • TypeScript
  • React 18
  • Vite
  • PrimeReact
  • TanStack Query

Сервисы

Реактивные Java-сервисы за единым входом через Keycloak, общим для всех семи ролей.

  • Java
  • Spring Boot (WebFlux)
  • Keycloak

Данные

MongoDB для заказов и контейнеров, PostgreSQL для людей, которые работают в системе, и объектное хранилище для самих документов.

  • MongoDB
  • PostgreSQL
  • S3

Документы и развёртывание

Пятнадцать документов, собранных как PDF и таблицы, задание, уходящее водителям в Telegram, и каждая часть, поставляемая в своём контейнере.

  • iText 7
  • JasperReports
  • fastexcel
  • Docker
  • GitLab CI
  • Telegram
Трудные места

Трудное здесь — это бумаги, батареи и деньги.

Бумаги, которые примет порт

Коносамент — это не PDF с логотипом; это официальный бланк, в котором каждое поле стоит там, где его ждёт перевозчик. Почти двенадцать тысяч строк существуют только для того, чтобы расставить текст по страницам — восемьсот из них на один вариант для Ванкувера, и ещё один для Монреаля, потому что два порта спрашивают разное.

Батарея решает, какими будут бумаги

Электромобиль — это опасный груз. Декларация читает список машин в контейнере и подставляет нужный номер ООН — ООН 3556 для электрических, ООН 3166 для гибридов — чтобы бланк совпадал с тем, что на самом деле в ящике.

Деньги, которые воспроизводятся

Суммы хранятся в точных десятичных числах, никогда в плавающей запятой. Курс берётся у Банка Канады и записывается прямо на счёт, поэтому повторная печать документа полугодовой давности даёт те же числа, а не сегодняшние.

Работа

Выпускаем новое, два года спустя.

Тридцать месяцев, с февраля 2024 года, и работа продолжается. В истории появляются двенадцать имён; шесть человек; четверо тянули его на себе.

2 200Часов разработки

Два года спустя — и мы всё ещё выпускаем новое.

Контакты

Есть идея для проекта? Запросите предложение!

Есть проект? Напишите нам, если хотите поработать вместе над чем-то интересным. Или вам нужна наша помощь? Не стесняйтесь обращаться к нам.