Skip to main content
ГоловнаБлогНормалізація статусів відстеження перевізників: як зіставляти події перевізників в одну модель статусів

Нормалізація статусів відстеження перевізників: як зіставляти події перевізників в одну модель статусів

17TRACK

Нормалізація статусів відстеження перевізників означає перетворення специфічних для перевізника кодів сканування та повідомлень на узгоджену модель відправлення зі збереженням оригінальних підтверджень. Щоб надійно її реалізувати, зіставте кожну подію з канонічним статусом і причиною, а потім обчислюйте поточний стан відправлення з урахуванням часу подій, контексту відправлення та чітких правил переходів. Не вважайте автоматично найновіше отримане повідомлення поточним статусом відправлення.

Carrier Tracking Status Normalization How to Map Carrier Events into

Цей посібник призначений для розробників, команд логістичних операцій і власників продуктів, які інтегрують відстеження в систему керування замовленнями, панель підтримки або робочий процес сповіщень клієнтів. Наведена нижче модель є запропонованим шаблоном реалізації, а не офіційним стандартом перевізників і не відтворенням таксономії статусів будь-якого постачальника послуг відстеження.

Відокремлюйте подію перевізника від стану відправлення

Подія відстеження описує те, що було повідомлено про відправлення: створено етикетку, посилка прибула на об’єкт або спроба доставки була невдалою. Стан відправлення — це інтерпретація вашого застосунку щодо відповідних підтверджень у певний момент часу. Ці поняття слід зберігати окремо.

Наприклад, після події невдалої спроби доставки може відбутися подія прибуття на об’єкт. Прибуття є корисною операційною історією, але не обов’язково означає, що проблему з невдалою спробою вирішено. І навпаки, сканування із затримкою, отримане після підтвердження доставки, не повинно автоматично повертати посилку до статусу транзитного переміщення.

Практична архітектура має три рівні:

  1. Необроблені підтвердження: оригінальне корисне навантаження перевізника або постачальника, включно з кодами, текстом, часовими мітками та ідентифікаторами.
  2. Нормалізовані події: ваша інтерпретація кожної окремої події за допомогою версійованого правила зіставлення.
  3. Поточна проєкція відправлення: стан, вибраний з історії подій, разом із будь-якими активними умовами та діями клієнта.

Таке розділення дає змогу виправляти зіставлення та перебудовувати стани відправлень, не видаляючи оригінальний запис.

Визначте компактну модель статусів з окремими умовами

Одне поле статусу стає складним у підтримці, коли воно одночасно має відображати фізичне переміщення, митне оформлення, проблеми з доставкою та повернення. Використовуйте невелику модель життєвого циклу, а потім додавайте конкретніші умови та причини.

Канонічний статусРекомендоване значенняМежа, яку слід зберігати
UNKNOWNПідтвердження неможливо впевнено зіставити.Не є еквівалентом втрати або затримки.
PRE_TRANSITЕлектронна інформація про відправлення існує, але фізичне приймання не підтверджено.Створення етикетки не доводить, що перевізник володіє посилкою.
IN_TRANSITВідправлення переміщується мережею доставки або обробляється в ній.Не означає, що доставка відбудеться того самого дня.
OUT_FOR_DELIVERYДжерело явно повідомляє про відправлення для спроби доставки.Самого прибуття на місцевий об’єкт недостатньо.
READY_FOR_PICKUPВідправлення явно доступне для отримання одержувачем.Саме прибуття до пункту отримання може не підтверджувати готовність.
DELIVEREDДоставку явно підтверджено для відповідного етапу відправлення.Передача між перевізниками не обов’язково є доставкою одержувачу.
CANCELEDДжерело явно підтверджує скасування запису відправлення.Скасування замовлення не доводить, що посилка припинила рух.

Зберігайте такі умови, як CUSTOMS_PROCESSING, DELIVERY_ATTEMPT_FAILED, ADDRESS_ISSUE або DELAY_REPORTED, поза межами основного поля життєвого циклу. Відправлення може залишатися у статусі IN_TRANSIT, поки проблема з адресою потребує уваги. Не позначайте звичайне митне оформлення як виняток, якщо джерело не повідомляє про затримання, проблему або необхідну дію.

Окремо представляйте напрямок за допомогою такого поля, як journey_type. Повернення може мати власні стани транзитного переміщення та доставки. Це запобігає трактуванню доставки назад відправнику як успішної доставки покупцеві.

Створіть запис події перед написанням правил зіставлення

Нормалізований запис має містити достатньо контексту, щоб пояснити зіставлення та відтворити результат. Корисна початкова схема включає:

  • Ідентифікація: внутрішній ідентифікатор відправлення, ідентифікатор перевізника, номер відстеження, джерело та етап відправлення.
  • Оригінальні підтвердження: необроблений код події, необроблений опис, ідентифікатор події джерела, якщо його надано, і посилання на оригінальне корисне навантаження.
  • Часові дані: час виникнення події, інформація про часовий пояс, час отримання та точність часової мітки.
  • Інтерпретація: канонічний статус, умова, код причини, тип маршруту та вимога щодо дії.
  • Відстежуваність: ідентифікатор правила зіставлення, версія зіставлення та категорія впевненості.

Зберігайте час виникнення події окремо від часу отримання оновлення вашою системою. Вебхук, отриманий після обіду, може описувати сканування, виконане вранці. Відповідь на запит із періодичним опитуванням також може містити кілька історичних подій, а не одну нову.

Використовуйте задокументований формат часових міток, наприклад RFC 3339, коли відомі час і зміщення. Якщо джерело надає місцевий час без надійного зміщення, зберігайте це обмеження, а не додавайте хибне позначення UTC. Події, для яких відома лише дата, зберігайте як підтвердження лише з датою, не вигадуючи точного часу сканування.

Зберігайте необроблені корисні навантаження відповідно до правил доступу та зберігання. Вони можуть містити дані одержувача або іншу інформацію, якій не місце в широко доступній аналітичній таблиці.

Спочатку зіставляйте коди перевізника, а потім обережно використовуйте текст

Починайте з правил, прив’язаних до конкретного джерела та перевізника. Код на кшталт 01 не має надійного значення поза задокументованим контекстом. Якщо джерело розрізняє послуги, регіони або етапи, додавайте ці параметри, коли вони впливають на інтерпретацію.

Використовуйте такий порядок зіставлення як стандарт реалізації:

  1. Зіставте задокументований структурований код події та всі необхідні уточнення.
  2. Використайте задокументований статус або підстатус джерела, якщо він чітко описує подію, що обробляється.
  3. Застосуйте вузько визначені текстові правила для відомих повідомлень, у яких відсутні достатні структуровані поля.
  4. Залиште невирішені події без зіставлення та передайте повторювані випадки на перевірку.

Спочатку визначте, чи описує поле статусу постачальника окрему подію, чи поточний підсумок відправлення. Копіювання підсумку на рівні відправлення до кожної історичної події може створити враження, що попередні сканування є підтвердженнями доставки.

Уникайте глобальних правил за ключовими словами, таких як «містить delivered». Збіг може відбутися і для фрази «not delivered», а також для повідомлення про доставку логістичному партнеру. Текстові правила потребують обробки заперечень, мовного контексту та винятків. Машинний переклад може допомогти перевіряльнику зрозуміти повідомлення, але перекладений текст не повинен непомітно ставати авторитетним визначенням події.

Приклади зіставлень та їхні обмеження

У наведених нижче прикладах використовуються вигадані повідомлення для демонстрації розробки правил. Це не перевірені коди перевізників і не точні повідомлення конкретного перевізника.

  • «Shipment details submitted»: зіставляйте з PRE_TRANSIT, коли визначення джерела вказує лише на електронну інформацію.
  • «Accepted at origin facility»: зіставляйте з IN_TRANSIT, коли подія підтверджує фізичне приймання.
  • «Recipient unavailable; attempt unsuccessful»: записуйте DELIVERY_ATTEMPT_FAILED і оцінюйте життєвий цикл за навколишніми підтвердженнями. Не робіть висновку, що посилка доступна для отримання.
  • «Available for collection»: зіставляйте з READY_FOR_PICKUP, коли джерело підтверджує готовність до отримання одержувачем.
  • «Transferred to delivery partner»: записуйте передачу та зберігайте відповідний транзитний статус, а не позначайте доставку одержувачу як завершену.

Кожне правило має містити коротке обґрунтування та відповідального власника. Коли спеціаліст з операцій оскаржує зіставлення, команда повинна мати змогу визначити точне правило, а не реконструювати клієнтську мітку.

Обчислюйте поточний стан за допомогою детермінованого редуктора

Редуктор — це функція, яка оцінює нормалізовані події та створює поточну проєкцію відправлення. Для однакових підтверджень і версії правил він має повертати однаковий результат незалежно від кількості повторних відтворень вхідних даних.

Усувайте дублікати, не видаляючи змістовні сканування

Якщо існує стабільний ідентифікатор події джерела, надавайте йому перевагу. В іншому разі створюйте ключ дедуплікації з доступних атрибутів, таких як ідентичність відправлення, перевізник, код, час виникнення та місце. Враховуйте точність часових міток і поведінку джерела. Два сканування з ідентичними описами не обов’язково є дублікатами, особливо якщо посилка повторно відвідує об’єкт.

Упорядковуйте події, не припускаючи ідеальної роботи годинників

Використовуйте надійний час виникнення та задокументовану інформацію про послідовність, якщо вона доступна. Час отримання може допомогти вирішити однакові значення, але не повинен регулярно переважати над ранішим часом виникнення. Якщо часові мітки конфліктують або їх неможливо надійно порівняти, зберігайте неоднозначність, а не створюйте штучну визначеність.

Перевіряйте переходи замість призначення універсального рангу

Простий числовий порядок статусів не може відобразити кожен маршрут відправлення. Посилка може перейти зі статусу «видано для доставки» назад у транзит після невдалої спроби. Термін дії готовності до отримання може завершитися. Явне виправлення може скасувати підтвердження доставки.

Визначте дозволені переходи та підтвердження, необхідні для кожного з них. Вважайте статус «доставлено» захищеним від звичайних старіших сканувань, але дозволяйте задокументоване виправлення або авторизоване операційне перевизначення. Записуйте причину та джерело кожного перевизначення.

Відстежуйте активні умови незалежно

Пізніше сканування переміщення може показувати прогрес, але не доводити, що проблему з оплатою або адресою вирішено. Визначте правила очищення для конкретних умов: явне вирішення, подія, що логічно свідчить про вирішення, або авторизована ручна дія. Не очищайте кожну умову лише тому, що надійшла інша подія.

Також розрізняйте затримку, повідомлену перевізником, і власне сповіщення про бездіяльність. Відсутність нових сканувань є спостереженням щодо свіжості даних, а не доказом втрати посилки.

Обробляйте передачі між перевізниками та повернення як пов’язані маршрути

Міжнародне відстеження може охоплювати кількох перевізників та ідентифікатори. Зберігайте внутрішню ідентичність відправлення та приєднуйте специфічні для перевізника посилання на відстеження до відповідних етапів. Пов’язуйте посилання за допомогою зв’язків, наданих джерелом, або перевірених операційних даних, а не лише схожих пунктів призначення чи близьких часових міток.

Подію доставки на рівні етапу слід інтерпретувати в контексті. Доставка до консолідаційного об’єкта або мережі партнера може завершити цей етап, але не доставку покупцеві. Проєкція вашого відправлення має знати, яке призначення представляє подія.

Так само розділяйте «повернення запитано», «переміщення повернення розпочато» та «повернено відправнику». Це різні етапи. Запит на повернення не доводить, що посилка фізично рухається назад, а підтвердження доставки під час зворотного маршруту має вказувати пункт призначення повернення.

Використовуйте API відстеження, не відмовляючись від власних бізнес-правил

Інтеграція з кількома перевізниками може надати єдину точку отримання даних, але спільний формат відповіді не усуває потреби в чіткому внутрішньому контракті. Оцінюючи 17TRACK Tracking API, використовуйте його офіційну документацію, щоб перевірити значення полів та інтерфейсів, важливих для вашої реалізації. Не припускайте, що запропоновані в цьому посібнику статуси відповідають його власній таксономії.

Перед підключенням будь-якого API до клієнтських сповіщень або операційної автоматизації визначте:

  • Які поля описують окремі події, а які — поточний підсумок відправлення.
  • Які оригінальні дані перевізника доступні та можуть зберігатися.
  • Як представлені часові мітки, відсутні значення, виправлення та повторні оновлення.
  • Як можна розрізнити маршрути повернення та доставку проміжним партнерам.
  • Як ваша інтеграція реагуватиме на невідомі коди або майбутні зміни схеми.

Зберігайте тонкий адаптер між зовнішньою відповіддю та канонічною моделлю. Це дає змогу решті застосунку використовувати єдиний контракт статусів відстеження, не залежачи від кожної назви поля у зовнішньому джерелі. Розглядайте правила сповіщень як окремий рівень: нова нормалізована подія не повинна автоматично запускати повідомлення клієнту.

Тестуйте історії подій, а не лише окремі зіставлення

Зіставлення може бути правильним окремо, але все одно створювати неправильний стан відправлення. Тестуйте повні історії, включно з оновленнями, доставленими в порядку, що відрізняється від часу їх виникнення.

  • Історія із затримкою: підтвердження доставки надходить раніше за старіше транзитне сканування. Відправлення залишається доставленим.
  • Повторне отримання: та сама подія обробляється знову. Повторне сповіщення клієнту не надсилається.
  • Невдала спроба: після статусу «видано для доставки» надходить невдала спроба. Проєкція більше не обіцяє активну доставку без підтверджень.
  • Готовність до отримання: посилка прибуває до пункту отримання до підтвердження доступності. Передчасна інструкція щодо отримання не надсилається.
  • Невідома подія: з’являється новий код. Необроблений запис зберігається, а раніше встановлений стан відправлення не замінюється автоматично на невідомий.
  • Повернення: зворотний маршрут завершується у відправника. Доставка первинному покупцеві не позначається як успішна.
  • Виправлення: явне виправлення джерела змінює результат через контрольований переходом процес.

Відстежуйте нерозпізнані події, використання резервного текстового зіставлення, недійсні переходи та спроби повторних сповіщень за перевізником і джерелом. Розрізняйте повноту зіставлення та його правильність: розпізнавання кожного коду не має користі, якщо його інтерпретація неправильна.

Перед розгортанням зміни зіставлення відтворюйте репрезентативні історії та порівнюйте старі й нові проєкції. Переглядайте відмінності, що впливають на підтвердження доставки, інструкції щодо отримання, завершення повернення або дії клієнта. Версіонуйте правила, щоб агент підтримки міг пояснити, чому система створила певний результат.

FAQ

Чи повинна кожна подія відстеження мати рівно один статус?

Кожна подія може мати одну основну нормалізовану інтерпретацію, але їй також можуть бути потрібні умова, причина та контекст маршруту. Спроба вмістити весь зміст в один плоский список статусів ускладнює використання та підтримку моделі.

Чи повинна невідома подія замінювати поточний статус відправлення?

Зазвичай ні. Залишайте зіставлення події невирішеним, зберігаючи останній підтверджений стан відправлення. Свіжість даних показуйте окремо, щоб користувачі не плутали старий підтверджений стан із нещодавнім оновленням.

Чи може доставлене відправлення повернутися до статусу транзитного переміщення?

Старіше транзитне сканування не повинно спричиняти таку зміну. Перевірене виправлення може її обґрунтувати, а щойно розпочатий маршрут повернення зазвичай слід представляти окремо. Для переходу потрібна явна причина, а не лише пізніша часова мітка отримання.

Як слід представляти відсутні оновлення відстеження?

Використовуйте внутрішній індикатор свіжості або сповіщення про бездіяльність. Зберігайте їх окремо від затримки, втрати або статусів винятків, повідомлених перевізником. Будь-який поріг ескалації має відповідати вашим сервісним зобов’язанням та операційній політиці, а не універсальному припущенню.

Хто має затверджувати зміни зіставлення?

Інженерна команда повинна відповідати за реалізацію та тестування відтворення; операційна логістична команда — перевіряти значення для доставки; власник клієнтського досвіду — затверджувати наслідки для повідомлень. Призначте конкретного відповідального за рішення, щоб неоднозначні події не залишалися невирішеними безстроково.

Джерела

  • RFC 3339: Date and Time on the Internet: Timestamps — довідка щодо представлення часових міток і числових зміщень.
  • 17TRACK Tracking API — офіційна точка входу для інтеграції з API відстеження, описаної вище.
  • 17TRACK API documentation — довідник з реалізації для перевірки контракту постачальника; канонічна модель і приклади зіставлення в цій статті є запропонованими шаблонами проєктування, а не специфічними для постачальника визначеннями.
Loading