Мікросервіс трекінгу поштових служб на Node.js / TypeScript (BullMQ, Redis)
Бюджет:
25 000 UAH
Термін виконання:
14 днів
Подано відгуків:
0 пропозицій
Опис завдання
Потрібно написати ізольований фоновий воркер/мікросервіс для періодичного опитування та оновлення статусів посилок через API поштових операторів (Нова Пошта, Укрпошта, Meest).
ВХІДНІ ДАНІ (Inbound):
Черга завдань Redis (BullMQ) передає повідомлення виду: { track_number: "2045...", carrier: "nova_poshta" | "ukrposhta" | "meest", priority: 1..3 }
ОБРОБКА (Worker Core):
- Адаптери під API кожного перевізника з окремими лімітами частоти запитів (Rate Limiting: не більше 3 req/sec на одного провайдера)
- Мапінг сирих відповідей служб доставки в єдину внутрішню систему статусів (CREATED → IN_TRANSIT → AT_BRANCH → RECEIVED → RETURNED)
- Автоматичний ретрай помилок (Exponential Backoff): при таймаутах або 502/503 повторювати через 2, 5, 15 хвилин
ВИХІДНІ ДАНІ (Outbound):
- Збереження нової точки маршруту та зміненого статусу в PostgreSQL
- Публікація події про зміну в Redis Pub/Sub та відправка вихідного Webhook на URL клієнта із підписом HMAC SHA-256
ТЕХНІЧНІ ВИМОГИ:
Node.js 20+, суворий TypeScript, робота через пул BullMQ, легкий ORM (Kysely або Prisma), покриття юніт-тестами на парсери відповідей (Vitest). Обов'язкова наявність docker-compose.yml для локального підняття оточення (Redis + Postgres).