К содержанию
roadlinkPILOT
О платформе

ROADLINK · закрытый пилотМеждународные автоперевозки

ИНЖЕНЕРНАЯ ОСНОВА · ROADLINK 7.0.0

Одно намерение. Проверенные переходы.

Серверная модель следующего рейса, контроль актуальности и точные границы автоматизации.

15.10.2026Версия 7.0.0
Текущие функции и план развития
ЛИЧНОЕ НАМЕРЕНИЕПлан отдельно от рейса

Можно выбрать груз заранее, сохранив одно действующее назначение машины.

КОНТРОЛЬ АКТУАЛЬНОСТИУсловия проверяются снова

Изменившаяся заявка требует обновления и пересмотра расписания.

ПРИВАТНОСТЬДанные своего аккаунта

План не открывает чужие документы, связи и геолокацию.

Описание фактической версии. Добавлены transport_plans, контроль актуальности исходных условий, проверенное расписание и явное создание следующего собственного рейса. Повторные действия не создают второй рейс. Модель не резервирует чужой груз, не подписывает договор и не передаёт сообщения другим участникам.

Визуальное обновление 7.0. Рабочие разделы объединены новой навигацией, типографикой и оформлением карточек. В поиске доступны обзор, список и карта. Ниже описаны сохранённые серверные функции версии 6 и план развития.

Версия от 15 октября 2026 года. Документ описывает текущий серверный пилот и отдельно — будущие компоненты. PostgreSQL/PostGIS, корпоративный RBAC, брокер событий и мобильный клиент не являются установленной инфраструктурой этой версии.

1. Что работает в v6

Интерфейс состоит из операционного центра, радара, аналитики, реестра разрешительных документов и раздела «Цифровые документы». Статические страницы обращаются к API Vinext/Cloudflare Worker. Сервер получает подтверждённую платформой Sites личность и работает с Cloudflare D1 через binding DB; приватные копии документов сохраняются в R2 через BUCKET. Данные аккаунта сохраняются на сервере; учебный набор для аналитики создаётся отдельно и явно маркируется.

Главная страница ведёт на «Рабочий стол»: он показывает ближайшее действие с учётом роли. Для грузоотправителя это публикация груза и поиск машины; для водителя и перевозчика — свой рейс и следующая загрузка. Навигация основных страниц использует единые названия и мобильные элементы управления. Размещённый сайт по умолчанию приватен для владельца. Доступ к сайту и видимость отдельного объявления — разные уровни: серверный режим публикации объявления не означает, что сайт открыт всем или рынок перевозок прошёл коммерческий запуск.

Компонент Текущая реализация Будущее расширение
Идентификация Подтверждённый Sites user ID, профили компании/водителя и добровольная связь сотрудничества Общие организации, роли сотрудников и назначение операционных прав
Хранилище Cloudflare D1 / SQLite, миграции Drizzle, приватные вложения R2 Выбор геопространственного хранилища по реальной нагрузке
Геолокация Открытая страница телефона и импорт последних 12 часов Нативный клиент и согласованные провайдеры телематики
Аналитика Проверенные наблюдения, baseline и проверяемая эмпирическая поправка Обученные модели на достаточных реальных данных
Подбор Сохранённые серверные заявки, правила и будущая точка освобождения Проверка маршрута, подтверждения сторон и бронирование
Личный план Следующий груз по своему рейсу, снимок условий, расписание, повторная проверка и явное создание следующего рейса Двусторонние условия, подтверждение исполнителя и общий заказ
Документы Реестр, проверка владельцем, сопоставление с заявленными требованиями, внутренний учёт дозволов Проверка подлинности, подтверждённые нормативные правила и официальные интеграции
Цифровые документы Общая карточка отправки, черновики четырёх видов, фиксированные версии, закрытый экспорт и внутренние пакеты, ожидающие подключения Подписи, полномочия, проверенные адаптеры и квитанции операторов
Уведомления Выводы внутри приложения Очередь событий, push, email/SMS после настройки каналов

2. Предметная модель D1

Каждая закрытая операционная сущность содержит owner_id, полученный сервером из идентификации. Профиль имеет тип company либо driver. Компания задаёт название и роль carrier/shipper/forwarder; водитель — displayName, роль driver и формат independent/company_driver. Водителю не нужно заполнять компанию. Существующий профиль с названием компании сохраняет совместимость.

Компания и водитель могут подтвердить сотрудничество, но эта связь не объединяет аккаунты и не выдаёт доступ к операционным данным. SQL-запросы закрытых данных ограничены владельцем, доступ к отдельной записи проверяется повторно. Это прикладная изоляция пользователей, не PostgreSQL RLS. Общий корпоративный кабинет и делегирование прав ещё не реализованы.

Таблица Назначение
profiles Тип аккаунта, название компании либо имя водителя, роль и формат работы водителя
account_invitations Компания, хеш одноразового кода, срок, статус и сведения о принятии; исходный код не хранится
account_connections Подтверждённая связь компании и водителя, статус и даты; уникальная пара участников
vehicles Название, номер, кузов, грузоподъёмность, объём и допустимые направления
trips Машина, начало и назначение, планы, фаза, фактические события, введённые расходы
transport_plans Личный план следующего груза: исходный рейс и машина, объявление, снимок условий, расписание, версия и ссылки на созданный рейс/отправку
tracking_sessions Рейс, режим phone/import, версия согласия, время начала, истечение и отзыв
location_samples Сеанс, рейс, координаты, точность, времена измерения/приёма, источник, статус проверки и причина отклонения
listings Объявления грузов и машин, приватная/общая видимость, срок актуальности
audit_events Серверный журнал существенных действий, например согласия, изменений рейса и удаления точек
documents Область применения, сроки, страны, вид дозвола, версия, отметка владельца и закрытая ссылка на R2
compliance_contexts Заявленный маршрут, полный период и требования для текущего рейса либо выбранного следующего груза
permit_allocations Внутренние закрепления, освобождения и заявленные использования с версиями документа и проверки
consignments Общая карточка отправки владельца, необязательная связь со своим рейсом и версия исходных данных
digital_documents Вид документа отправки, внутренний статус draft/prepared и текущая версия
digital_revisions Снимки исходных данных; номер, версия источника, время подготовки и контрольный SHA-256
exchange_packages Неотправленные внутренние пакеты awaiting_connection, документ, версия, назначение и контрольный хеш

Время хранится в нормализованном UTC; API требует временную зону во входных значениях. session_id + event_id уникальны. Машина не получает второй незавершённый рейс. Изменение рейса проверяет исходную сохранённую версию, чтобы конкурентный запрос не затёр новое состояние.

Статусы: loaded, empty, unloading, available, completed. Допустимые переходы проверяются сервером. Факт прибытия/освобождения фиксируется по действию пользователя и серверному времени; одна координата не подтверждает выгрузку. Исходный план initialPlannedRelease сохраняется для честного сравнения с фактическим освобождением. Завершение рейса отзывает активные сеансы.

Личный план следующего груза

План создаётся по своему исходному рейсу и доступному серверному объявлению груза. В нём сохраняются только необходимые условия объявления и данные своей машины/рейса; приватные связи и координаты чужого аккаунта не копируются. Для пары владелец / исходный рейс / груз допускается один план. Состояния: considering, planned, cancelled, converted; это внутренние решения пользователя, не статусы договора.

При чтении сервер сравнивает сохранённый снимок с актуальными данными: current, changed или unavailable. Изменение условий не принимается молча: явный refresh обновляет снимок и сбрасывает подтверждение расписания. Расписание задаёт пользователь — время погрузки, прибытия и освобождения; даты не придумываются из ставки или расстояния. Ориентир порожней подачи остаётся сценарным: расстояние по прямой × 1,3, скорость 55 км/ч и час запаса. Он не доказывает допустимость дорожного маршрута.

Создание следующего рейса требует завершения исходного, свободной собственной машины, актуального груза, подходящих кузова/вместимости/направления и проверенного расписания в окне заявки с учётом ориентира подачи. Если после исходного рейса для той же машины уже создан другой рейс, старое освобождение больше не используется для нового назначения — даже когда более новый рейс тоже завершён. Порядок определяется серверной последовательностью записей, а не редактируемыми датами пользователя. Известное препятствие в проверке документов блокирует создание рейса; состояния «неизвестно» и «нужна проверка» не превращаются в юридический допуск. Сервер повторно проверяет исходные записи при мутации, использует версию плана и защиту от конкурентного назначения; изменение документов, требований или закреплений между оценкой и созданием требует повторной проверки. Успешный повтор возвращает уже созданный рейс. Сохранение или преобразование плана не уведомляет контрагента и не подтверждает бронь, документы или юридический допуск. Денежные поля рейса выражены в EUR; ставка из объявления остаётся предложением в снимке, а выручка нового рейса не заполняется автоматически даже при совпадении валюты.

Отдельное явное действие создаёт неполную карточку отправки с маршрутом, описанием груза, весом и своей машиной. Название разместившего объявление не подставляется в юридическую роль отправителя или продавца. Реквизиты сторон и недостающие поля пользователь проверяет в разделе перевозочных документов. До преобразования плана карточку можно создать только по актуальным исходным условиям. После создания следующего рейса карточка формируется из сохранённого снимка и связывается с этим собственным рейсом, даже если исходное объявление уже снято или истекло: истечение предложения не стирает сведения о созданной перевозке. Ранее созданная карточка остаётся без автоматической привязки к новому рейсу и не обновляется молча после изменения условий плана.

До 100 открытых и 500 всего планов на аккаунт; список возвращает последние 200 и признак усечения. Отдельный план выбора машины грузоотправителем и общая сделка двух сторон в этой модели ещё не реализованы.

Самостоятельный водитель и сотрудничество с компанией

Вход через Sites устанавливает личность; оформление профиля определяет, как участник представлен в сервисе. Режим водителя «работаю с компанией» является заявленным форматом работы, а не доказательством полномочий или автоматически созданной связью. Независимый водитель может работать в своём кабинете без приглашения компании.

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

В базе хранится SHA-256-хеш кода, а не исходное значение. Число приглашений и попыток проверки ограничено. Для пары компания/водитель хранится одна связь; повторное приглашение после прекращения обновляет её, а существенные события остаются в аудите. API списка сотрудничества доступен только его участникам.

Связь не подтверждает трудоустройство, право распоряжаться чужой машиной или заключать договор от лица компании. Для будущих назначений потребуются отдельная операционная сущность, ограниченные права, сроки и согласие на конкретную передачу данных. Выбор типа профиля и принятие приглашения сами по себе не включают GPS. Изменить тип аккаунта можно только после завершения активных связей и отзыва действующих приглашений; проверка выполняется сервером вместе с сохранением профиля.

3. Контракт API

Все рабочие методы требуют идентификации; исключение — /api/health, возвращающий ограниченный статус доступности базы. Изменяющие запросы проверяют origin и формат тела: JSON для данных, разрешённый бинарный формат для загрузки копии. SQL и персональные данные не передаются клиенту в сообщениях внутренних ошибок.

Метод и путь Назначение
GET /api/me, PUT /api/profile Текущая личность и профиль компании либо водителя
GET /api/account-connections Связи сотрудничества текущего участника и приглашения компании
POST /api/account-invitations Одноразовый код компании со сроком 7 дней
POST /api/account-invitations/preview Предварительный просмотр компании по коду, без принятия
POST /api/account-invitations/accept Принятие водителем по коду с confirmed: true
POST /api/account-invitations/:id/revoke Отзыв неиспользованного приглашения компанией
POST /api/account-connections/:id/revoke Отзыв компанией или выход водителя с confirmed: true
GET /api/vehicles, POST /api/vehicles Машины владельца
GET /api/trips, POST /api/trips Рейсы владельца
GET /api/transport-plans?sourceTripId=…, POST /api/transport-plans Свои планы, фильтр по исходному рейсу; создание по sourceTripId и loadId
GET /api/transport-plans/:id, PATCH /api/transport-plans/:id План, заметка, состояние и расписание с expectedVersion; расписание требует scheduleReviewed: true
POST /api/transport-plans/:id/refresh Обновление снимка и сброс проверки расписания с версией и confirmed: true
POST /api/transport-plans/:id/convert Явное создание собственного следующего рейса после повторных проверок, с версией и подтверждением
POST /api/transport-plans/:id/consignment Создание неполной карточки отправки из плана, с версией и подтверждением
PATCH /api/trips/:id Фаза и ожидаемое освобождение
POST /api/trips/:id/availability Связанная заявка доступности из рейса с отдельным согласием
GET /api/tracking, POST /api/tracking/start Сеансы и явное согласие
POST /api/tracking/:id/stop Отзыв передачи
POST /api/tracking/:id/samples Пакет до 100 измерений
DELETE /api/tracking/:id/data Удаление точек сеанса с отзывом
GET /api/analytics Аналитика собственных серверных данных
GET /api/analytics/demo Отдельная синтетическая демонстрация
GET /api/opportunities?tripId=… Следующие грузы для принадлежащего пользователю рейса
GET /api/listings, POST /api/listings, DELETE /api/listings/:id Объявления и управление своими записями
GET /api/documents/config Справочники видов документов, областей применения и стран
GET /api/documents, POST /api/documents Реестр владельца и новая запись
PATCH /api/documents/:id, DELETE /api/documents/:id Изменение с контролем версии и архивирование
POST /api/documents/:id/review Явная отметка проверки владельцем с комментарием
PUT /api/documents/:id/file, GET /api/documents/:id/file, DELETE /api/documents/:id/file Приватная копия PDF/PNG/JPEG до 5 MiB
GET /api/compliance/context?tripId=…&listingId=…, PUT /api/compliance/context Маршрут, требования и оценка; без listingId — текущий рейс
POST /api/documents/:id/reservations Внутреннее закрепление одного использования дозвола
POST /api/reservations/:id/release, POST /api/reservations/:id/use Освобождение или явная необратимая отметка использования
GET /api/digital-documents/config Шаблоны, страны, валюты и справочный каталог систем
GET /api/consignments, POST /api/consignments Список собственных отправок и сохранение, в том числе неполного черновика
GET /api/consignments/:id, PATCH /api/consignments/:id Отправка и её документы; изменение данных с expectedVersion
GET /api/digital-documents, POST /api/digital-documents Документы владельца и создание черновика по consignmentId и template
GET /api/digital-documents/:id Текущая версия, проверка полей и история
POST /api/digital-documents/:id/prepare Внутренняя подготовка полной актуальной версии с confirmed: true и expectedVersion
POST /api/digital-documents/:id/revise Новая версия из текущей карточки отправки с проверкой expectedVersion
`GET /api/digital-documents/:id/export?format=json html&revision=N`
POST /api/digital-documents/:id/exchange-packages Неотправленный пакет по systemId, с подтверждением и проверкой версии
GET /api/exchange-packages, GET /api/exchange-packages/:id/export Свои пакеты и их внутренний JSON

Binding и производственные миграции являются частью размещения Sites. Сырой Worker нельзя открывать с недоверенными заголовками идентификации: текущая граница доверия предполагает контролируемый dispatch платформы.

4. Согласие и качество геолокации

Новый сеанс требует consent: true и принадлежности рейса текущему пользователю. Продолжительность — от 15 минут до 24 часов; новый сеанс отзывает предыдущий для этого рейса. Сервер повторно проверяет активность согласия и состояние рейса непосредственно при записи, включая конкурентный отзыв.

Телефонный режим принимает только точки после согласия и начала рейса. Импорт требует отдельного режима согласия и позволяет передать историю не старше 12 часов, также после начала рейса. Источник назначает сервер; поле клиента не превращает телефонный сеанс в импорт. Это не универсальный архивный импорт многомесячной истории.

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

Передача браузера работает при открытой видимой странице и останавливается при её скрытии. Нельзя обещать наблюдение при заблокированном экране, закрытом приложении или отключённом интернете. Нативный background tracking и адаптеры телематики пока отсутствуют.

5. Аналитика без подмены неизвестного

Конвейер: полученные измерения → проверка качества → наблюдаемые участки и стоянки → сценарий освобождения → объяснимые рекомендации. Доступность и статус загрузки подтверждает пользователь.

Наблюдаемая дистанция складывается из расстояний между соседними пригодными точками. Участки не соединяются через отклонённое измерение, смену сеанса или временной разрыв от 30 минут. Это не дорожный пробег, не одометр и не восстановленный маршрут. Порожняя доля относится только к участкам с определённым статусом; покрытие показывает долю времени наблюдения, а не долю покрытой дороги.

Стоянка определяется как наблюдаемая близость координат во времени. Причины — отдых, очередь, погрузка или поломка — автоматически не устанавливаются. Денежная оценка использует введённые расходы и помечена как условная; она не доказывает предотвратимый убыток или прибыль.

ETA опирается на свежие точки, планы и прозрачные допущения. Базовая оценка использует расстояние по прямой с коэффициентом и наблюдаемую скорость либо установленное значение. Нет дорожного маршрутизатора, границ, таможни, расписаний паромов и режима труда/отдыха. Устаревшие данные не дают актуального прогноза. Диапазон является сценарным, а не гарантией или калиброванной вероятностью.

Подбор следующего груза начинается от места выгрузки и поздней границы пригодного прогноза; при отсутствии прогноза используется подтверждаемый план. Радиус — 300 км, горизонт погрузки — 72 часа после освобождения. Рассматриваются собственные либо явно доступные объявления с действующим сроком; демонстрационные записи не подставляются. Подход оценивается условно: расстояние × 1,3 при 55 км/ч и запасе 1 час. Ставка минус стоимость подачи не является прибылью, а разные валюты без курса не смешиваются.

Связанная с рейсом доступность создаётся отдельным действием с согласием. Публикуются выбранный город освобождения и временное окно, кузов, вместимость и направления. Город должен находиться в пределах 50 км от пункта завершения рейса; срок — не более 7 дней. При чтении радара начало окна пересчитывается по поздней границе свежего прогноза, плану либо заявленному освобождению. Завершённый рейс, новое назначение машины, просроченный план или отсутствие доступного окна скрывают связанную заявку. Точные координаты, номер машины и внутренние ID рейса/машины не передаются. По умолчанию видимость приватная; общая публикация требует дополнительного согласия.

Документы как условие следующей перевозки

У каждого документа есть область применения: компания, машина, водитель или рейс. Документ следующей перевозки может быть дополнительно привязан к конкретной проверке contextId, чтобы документ текущего рейса не переносился автоматически на новый груз. Раздельно хранятся наличие (held/pending/missing/revoked) и доказательность (declared/reviewed). reviewed означает явную проверку владельцем кабинета; ROADLINK и орган власти подлинность не удостоверяют. Изменение сведений или копии сбрасывает отметку проверки.

Контекст включает страны регистрации перевозчика и машины, водителя, страны погрузки и выгрузки, явно введённый транзит и порожнюю подачу, начало и конец перевозки. Транзитные страны не выводятся из линии между городами. Для следующего груза создаётся собственный контекст, привязанный к исходному рейсу и объявлению; изменение исходных данных требует повторной проверки.

Базовый перечень вопросов формируется по маршруту и заявленным особенностям груза. Необходимость каждого документа изначально неизвестна. Владелец указывает required/not_required/unknown, основание и при необходимости конкретный документ; подтверждает маршрут и проверку требований. Классификация двусторонней, транзитной или третьестранной операции носит информационный характер. Она не заменяет применимые соглашения и исключения. Многосторонний или универсальный дозвол не принимается как автоматическое разрешение любого маршрута.

Статус Значение для подбора
ready По заявленным данным все проверки выполнены; это не официальное разрешение на перевозку
review Не хватает сведений, основания или проверки владельцем; отсутствие записи не доказывает отсутствие документа
pending Нужный документ ожидается; готовность пока не подтверждена
blocked Известное несоответствие: например заявлено отсутствие, истекает срок, другая машина или исчерпан остаток

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

Журнал дозволов поддерживает закрепление одного использования за контекстом, освобождение и явную отметку использования. Проверка версии и атомарные условия D1 защищают остаток при конкурентных запросах; повторное действие не списывает ресурс повторно. Активное закрепление ограничивает изменение документа, а закреплённый или использованный контекст фиксируется для учёта. Завершение рейса не расходует дозвол автоматически. Все действия относятся к кабинету ROADLINK: интеграции, официального бронирования и подтверждения использования в E-Permit нет.

Нормативные ориентиры и ссылки на первичные источники приведены в docs/permit-requirements-notes.md. Автоматической базы юридических правил по коридорам, проверки санкционных ограничений и официальной проверки допуска в v6 нет.

6. Эмпирическая поправка и оценка модели

Глубокая AI-модель и LLM не подключены. До 20 разных завершённых рейсов с исходным планом и фактическим освобождением модель сообщает о недостатке данных. Повтор одного рейса не увеличивает размер выборки; будущие фактические события исключаются.

После достижения порога рассчитывается медианная ошибка исходного плана. Последние 20% рейсов по времени, минимум четыре, оставляются для проверки; на них сравнивается MAE исходного плана и поправки. Поправка активируется только при улучшении. Эмпирический диапазон P10–P90 показывается отдельно от GPS-сценария; он не гарантирует 80% будущих прибытий и не переносится автоматически на новый маршрут.

Следующее развитие требует временного backtest, проверки утечки будущих данных, качества по направлениям, покрытия интервалов и влияния рекомендаций на выполненные рейсы. Минимальный порог 20 — инженерный ограничитель, а не универсальное доказательство статистической надёжности.

7. Хранение, приватность и эксплуатация

Аналитическое окно сырых геоданных — 30 дней. Чтение исключает более старые данные по времени измерения и получения. При каждом ingestion удаляется до 500 устаревших точек текущего владельца. Независимый планировщик очистки пока не подключён: отсутствие новых сигналов может оставить старые записи в базе дольше аналитического окна. Пользователь может удалить точки конкретного сеанса немедленно, одновременно отозвав его.

Закрытые координаты не публикуются вместе с объявлением. Сервер по умолчанию создаёт private; marketplace требует отдельного согласия и профиля, передаёт ограниченные поля объявления и не подтверждает документы. Объявления используют publisherType и publisherName из профиля: название компании либо имя водителя. Поле company сохранено для совместимости и содержит то же отображаемое имя. ID аккаунта, email, формат работы водителя и связи сотрудничества в публичную карточку не входят. Подтверждённое сотрудничество не раскрывается как доступ к чужому парку. Корпоративное разделение полномочий, делегирование водителю и безопасный доступ контрагента к точному треку — следующий этап.

R2-ключ копии формируется сервером; доступ к скачиванию требует владельца документа. Загрузка требует отдельного согласия, ожидаемой версии, разрешённого MIME и сигнатуры файла. Ответ скачивания запрещает кеширование и встраивание как активного документа. Архивирование записи сохраняет историю учёта; удаление вложения — отдельное действие. Сканирование содержимого антивирусом и автоматическое удаление архивных копий по сроку не реализованы.

Приглашения ограничены 20 активными, 50 созданными за сутки и 2 000 сохранёнными на компанию; проверки кодов — 60 в час на аккаунт. Связи ограничены 200 разными водителями на компанию и 50 компаниями на водителя, включая ранее прекращённые пары. Это защитные ограничения пилота.

Цифровой модуль ограничен 200 отправками на владельца, 100 версиями на документ и 2 000 пакетами на владельца. Один вид документа одной отправки создаётся один раз; последующие изменения оформляются версиями. Повтор подготовки пакета той же версии и назначения возвращает существующую запись.

Ограничения пилота: 200 машин, 500 рейсов, 200 активных объявлений на владельца; аналитика возвращает до 30 000 измерений с признаком усечения. Это ограниченный кабинет, не архитектура гарантированного обслуживания глобального парка. Нет фонового брокера уведомлений, настроенных внешних каналов и завершённого процесса реагирования на инциденты.

8. Цифровые документы и будущий обмен

Раздел /digital.html готовит несколько документов из общей карточки отправки. Виды: CMR / e-CMR, коммерческий инвойс, упаковочный лист и документ доставки. Сервер позволяет сохранить неполный черновик. Проверка данных определяет готовность к внутренней подготовке, а не юридическую пригодность документа. Это не государственная электронная счёт-фактура, не подтверждённая получателем доставка и не удостоверенная электронная накладная.

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

Экспорт JSON и печатного HTML доступен через проверку владельца. Данные не становятся публичными и не открываются участнику связи компания — водитель. Введённые стороны перевозки не получают аккаунт или право доступа автоматически. Полномочие подписывать документ за компанию не следует из типа профиля.

Внутренние пакеты обмена поддерживают два назначения: ecmr_provider для CMR / e-CMR и partner_exchange для остальных трёх документов. Состояние awaiting_connection означает ожидание подключения. Сохранение пакета не выполняет сетевой запрос, не создаёт государственный ID и не подтверждает получение адресатом. Отдельный каталог описывает другие системы, но не предоставляет для них действующий адаптер.

Для отправки предусмотрены до 100 строк груза, до 20 участков пути и до 50 названий сопроводительных документов. Перечень названий не загружает файлы и не проверяет их подлинность. Участки road/rail/sea связывают сведения маршрута; они не меняют правовую природу автомобильной CMR. Продавец и покупатель хранятся отдельно в invoice.seller и invoice.buyer; каждый содержит имя, адрес, страну и необязательный регистрационный номер. Для подготовки инвойса обе стороны обязательны; запасной подстановки отправителя и получателя нет. Перенос их данных в интерфейсе требует явного действия. Инвойс суммирует количества и цены в одной выбранной валюте с округлением строк до двух знаков; налоги и пошлины автоматически не рассчитываются.

При чтении пакета сервер сопоставляет сохранённые версии с текущими: stale означает изменение исходной отправки, historical — наличие другой текущей версии документа. Выгрузка содержит неизменяемый package, текущие признаки state с checkedAt и блок integrity. SHA-256 рассчитан по JSON.stringify(package); текущие признаки вне области хеша. Поэтому архивный пакет можно сохранить неизменным и одновременно показать, что его сведения уже требуют пересмотра.

Каталог разделяет состояние системы в мире и доступность подключения в ROADLINK. eFTI — передача регуляторных данных ЕС через сертифицированные платформы, eTIR — таможенный транзит, E-Permit — разрешения на перевозку, электронная ТТН Узбекистана — национальный документооборот. Эти назначения сохраняются раздельно. SPECA и перспектива единого документа южного коридора отражены как направления развития.

Будущий адаптер должен согласовать версию схемы, коды и единицы, выполнить проверку формата, аутентификацию, проверку полномочий и подписи, безопасную отправку и обработку квитанций. UN/CEFACT уже публикует eCMR D25A; существование этой схемы не делает JSON ROADLINK соответствующим ей. Действующая сертификация eFTI у ROADLINK отсутствует. По текущему графику ЕС обязательное принятие соответствующих данных органами предусмотрено с 9 июля 2027 года.

Исследование, даты и первоисточники: основа цифровых документов. Наличие протокола или пилота в стране не включает автоматическое разрешение работать без бумаги на всём маршруте. Данные документов пока не используются для обучения AI; событие доставки, подпись или таможенный выпуск не выводятся из GPS.

9. Проверка и последующие этапы

Автоматические тесты проверяют личные планы, актуальность исходных данных, расписание, повторные/конкурентные действия и запрет второго незавершённого рейса. Также проверяются оба типа профиля, совместимость существующих компаний, жизненный цикл приглашений и изоляцию участников сотрудничества, а также изоляцию владельцев, согласие, отзыв, удаление, импорт, повторы и гонки, допустимые статусы, наблюдаемые сегменты, отсутствие ложных прогнозов, holdout и подбор реальных заявок. Для документов проверяются применимость, полный срок, незаполненные требования, приватность, версии и учёт закреплений. Используются SQLite-адаптер и имитация R2; отдельно нужны проверка размещённых D1/R2, входа и GPS на устройствах. Команды приведены в README. Наличие тестов не означает прохождение коммерческого пилота.

Следующий компонент Что необходимо до включения
Нативная геолокация Платформы iOS/Android, системные разрешения, start/stop, режим батареи, офлайн-очередь и испытания на реальных устройствах
Дорожный ETA Провайдер, ключи, бюджет, грузовые ограничения, проверенное покрытие стран и сопоставление с фактическими поездками
Телематика Поставщики, договорённости, credentials, согласия владельцев парка и привязка устройств к машинам
Командный кабинет Общие организации, роли сотрудников, водительские назначения и точечные проверки доступа на сервере; связь сотрудничества v6 не выдаёт эти права
Реальные сделки Верификация сторон и подлинности документов, подтверждённые условия, бронирование между сторонами и защита от двойного назначения
Цифровой обмен Выбранный оператор, согласованный формат, проверка полномочий и подписи, права контрагентов, официальные квитанции и испытания
Допуск к перевозке Проверенные правила с датами действия, нормативные источники, экспертная проверка и официальные интеграции при доступности
Автоматизация эксплуатации Независимое удаление по сроку, мониторинг, политика хранения остальных сущностей, доставка событий и восстановление
Более сильные модели Подтверждённые данные, достаточное разнообразие маршрутов, независимая оценка и проверка полезности решений

PostGIS может стать выбором для масштабируемого пространственного поиска, а очередь и outbox — для надёжных событий. Эти решения принимаются по нагрузке и требованиям; их наличие в целевой схеме не означает установку в v6. Подбор будущей доступности, объяснимость и контроль доступа сохраняются при любом инфраструктурном выборе.

Продуктовые приоритеты, границы оценки удобства и план измерений: разбор версии 6.

Подробнее: исследование геолокации и AI, продуктовая стратегия.

ROADLINK · Рабочее название · Серверный пилот · 2026Открыть рабочий стол ↗Перейти к аналитике ↗