Інтеграція з Мурашина логістика в Python
! |}
щоб контролювати проблемні доставки та відхилення. |- | ANT-Logistics Client | Python-клієнт для API ANT-Logistics. |- | Route | Маршрут, сформований у ANT-Logistics.== 23. Логування та аудит ==
entity_id=order.id,
Етап 6. Dashboard та аудит
18.3. ant_delivery_orders
|- | Integration Account | конфігурація підключення до ANT-Logistics. | style="background:#eeeeee;" | Сірий |- | Очікує передачі | PENDING_SEND | Заявка в черзі на передачу. Замовлення, точки, склади, авто, водії ! Route Sync Worker отримує маршрути. |- | is_active | boolean | Активність. | Статус підсвічується помаранчевим. |- | ANT Task | Задача / точка доставки в ANT-Logistics. | style="background:#ffcc80;" | Помаранчевий |- | Відмовлено | REJECTED_BY_CLIENT | клієнт ERP відмовився від доставки. |- | fact_arrival_at | timestamp | Фактичне прибуття. |- | planned_duration | integer | Планова тривалість. |}
інтеграційні функції ERP призначена для:
order.status = "SEND_ERROR"
! | style="background:#ffcc80;" | Потрібна дія |- | Потребують повтору | Технічні помилки передачі. |- | vehicle_id | uuid | Автомобіль. entity_type="delivery_order",
24.5. Dashboard
8.2. Замовлення / заявка на доставку
idempotency_key=command.idempotency_key,
|- | external_order_id | string | Так | ID замовлення в K2 ERP. Python-сервіс виконує валідацію. |- | style="background:#eeeeee;" | Сірий | #eeeeee | Чернетка, скасовано або неактивно. Значення
"external_order_id": "K2-ORDER-2026-000123",
Етап 1. Аналіз API ANT-Logistics
order.sent_at = utc_now()
== 15. Валідація заявки ==
audit_logger.log(
=== Етап 7. Production hardening ===
Поля:
платформа повинна логувати:
== 5. Основні бізнес-сценарії ==
"payment": {
verify_ssl: bool = True
! Тип помилки
- створення інтеграції ANT-Logistics;
- перевірка підключення;
- передача торгових точок;
- передача заявок на доставку;
- передача складів;
- передача автомобілів;
- передача водіїв;
- збереження ANT task ID;
- синхронізація маршрутів;
- синхронізація статусів доставки;
- дедублікація;
- retry-механізм;
- журнал подій;
- dashboard API;
- базові unit-тести;
- mock ANT API для інтеграційних тестів. |-
| finished_at | timestamp | Завершення маршруту. | Внутрішній контроль для логіста та керівника. Що зберігати
12. ANT-Logistics Client
13.2. Перевірка підключення
13.12. Dashboard
"cargo": {
=== 5.1. Передача замовлень на доставку ===
! клієнт ERP
Сервіс повинен забезпечити:
! | Зовнішня логістична платформа. Хрещатик, 1",
task_payload = ant_mapper.to_task_payload(order, point_response.point_id)
Python-сервіс повинен:
order = delivery_order_repository.get_by_id(db, delivery_order_id)
payload=status_response.raw_payload,
! |-
| work_time_to
| time
| Кінець робочого часу. |-
| comment
| text
| Коментар. |-
| Route Stop
| Окрема точка маршруту. def create_delivery_task(self, payload: "DeliveryTaskPayload") -> "AntTaskResponse":
<div style="border-left: 6px solid #f57c00; background: #fff3e0; padding: 12px 16px; margin: 16px 0;">
! |}
new_status=new_status,
=== 13.5. Синхронізація водія ===
ANT_LOGISTICS_API_KEY=********
order.ant_task_id = task_response.task_id
=== 13.4. Синхронізація автомобіля ===
ANT_LOGISTICS_BASE_URL=https://api.example.ant-logistics
old_status=old_status,
=== 8.1. Торгові точки / клієнти ===
POST /api/v1/ant-logistics/delivery-orders/{order_id}/cancel
entity_id=order.id,
! Подія
audit_logger.log(
def get_task_status(self, ant_task_id: str) -> "TaskStatusResponse":
<div style="border-left: 6px solid #c62828; background: #ffebee; padding: 12px 16px; margin: 16px 0;">
</div>
=== 8.3. Автомобіль ===
"places": command.cargo.places,
new_status="PENDING_SEND",
! |- | weight | decimal | Ні | Вага. | Отримати доступ і тестовий ключ до старту. |}
retry_count: int = 3
5.3. Синхронізація автомобілів
Retry дозволений для:
| | 1. Статус)
20.1. Типи помилок
POST /api/v1/ant-logistics/routes/sync
29. Джерела
Водій / Кур'єр / Логіст
def get_routes(self, delivery_date: str) -> "RouteListResponse":
- реалізувати авторизацію;
- реалізувати check_connection;
- реалізувати create_or_update_point;
- реалізувати create_delivery_task;
- реалізувати cancel_delivery_task;
- реалізувати get_routes;
- реалізувати get_task_status;
- реалізувати обробку помилок. |-
| Синхронізація статусів | Середній | style="background:#bbdefb;" | Блакитний | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Заплановано | PLANNED | Заявку включено в маршрут.=== 13.8. Передача заявки в ANT-Logistics ===
18.6. ant_events |
Статуси виконання, фактичні інформаційні дані
<pre>
|
| 6.== 17. Черга передачі ==
=== 24.3. Маршрути ===
== 14. Приклад запиту на створення заявки ==
data={
== 1. Мета ==
! |-
| finish_warehouse_id
| string
| Кінцева точка. |-
| Невідомі статуси ANT
| API здатна повернути статус без мапінгу. |-
| external_point_id
| varchar
| ID точки в K2 ERP. |-
| Delivery Point
| Торгова точка, клієнт ERP або адреса доставки. |-
| sent_at
| timestamp
| Дата передачі. |-
| phone
| string
| Ні
| Телефон. | style="background:#eeeeee;" | Сірий
|}
! |-
| idempotency_key
| string
| Так
| Ключ захисту від дублювання. Призначення
5. |-
| Передача заявки
| Час, endpoint, request ID, ANT task ID. Коментар
def refresh_session(self) -> "AuthResult":
== 25. MVP ==
task_name="send_delivery_order_to_ant",
{| class="wikitable"
! Планування маршрутів, мобільний додаток водія, GPS
! |-
| Product / Cargo
| Товар або вантажні параметри. |-
| status
| varchar
| Статус маршруту. |-
| AC-3
| API key неправильний. | style="background:#ffcc80;" | Помаранчевий
|-
| Помилка передачі
| SEND_ERROR
| API повернув помилку. |-
| delivered_at
| timestamp
| Дата доставки. |-
| weight
| numeric
| Вага. |-
| time_window_to
| time
| Ні
| Кінець часового вікна. |-
| amount
| decimal
| Ні
| Сума замовлення. | Вони підсвічуються помаранчевим. | Зберегти raw-відповідь. |-
| amount
| numeric
| Сума.== 10. Єдина логіка кольорів ==
=== 12.3. Конфігурація клієнта ===
</pre>
order = delivery_order_repository.create(
pass
"payment_type": command.payment.payment_type,
"address": command.point.address,
v
! |-
| started_at
| timestamp
| Початок маршруту. # Чи потрібно підтримувати скасування заявки після планування? Тип
order.raw_response = task_response.raw_payload
* наявність external_order_id;
* наявність idempotency_key;
* дату доставки;
* адресу доставки;
* координати або можливість геокодування;
* контактний телефон;
* часові вікна;
* вагу;
* об'єм;
* кількість місць;
* суму післяплати, якщо виступає як;
* складський облік відвантаження;
* активність точки;
* чи не була заявка вже передана;
* чи дозволено змінювати заявку після планування;
* чи немає скасування в K2 ERP. ! №
sha256(external_order_id + delivery_date + point_id + address + amount)
|
| 5.</div>
pass
* служб доставки;
* дистриб'юторів;
* торгових компаній;
* інтернет-магазинів;
* виробничих компаній із власною доставкою;
* логістичних підрозділів;
* компаній із мобільними торговими представниками;
* компаній, які використовують маршрутизацію водіїв або кур'єрів;
* компаній, які ведуть замовлення в K2 ERP і планують маршрути в ANT-Logistics. |-
| delivery_date + point_id + order_number
| Бізнес-ключ доставки. |-
| email
| string
| Ні
| Email. | Заявка переходить у NEEDS_RETRY. |-
| route_id
| uuid
| Маршрут.<syntaxhighlight lang="python">
pass
{| class="wikitable"
! Колір
{| class="wikitable"
== 20. Обробка помилок ==
</div>
db.commit()
timeout_seconds: int = 30
=== 18.5. ant_route_stops ===
'''Заборонено:''' зберігати API key, session ID або інші секрети у коді, Git-репозиторії, відкритих логах або frontend-змінних. |}
{| class="wikitable"
=== 12.2. Основні методи ===
* акаунт ANT-Logistics;
* доступ до API v2;
* API key або інший ключ доступу;
* механізм отримання ідентифікатора сесії, якщо він застосовується для API;
* тестове середовище або тестовий акаунт;
* список доступних API-методів;
* структуру даних для торгових точок;
* структуру даних для автомобілів;
* структуру даних для складів;
* структуру даних для завдань / заявок;
* правила маршрутизації;
* правила імпорту та експорту;
* перелік статусів маршрутів і задач;
* правила роботи з GPS;
* правила авторизації;
* ліміти API;
* контакт технічної підтримки ANT-Logistics. Створюється delivery_order зі статусом DRAFT або PENDING_SEND. платформа повинна не допускати дублювання заявок. |-
| DuplicateOrderError
| Заявка вже передана. |-
| TimeoutError
| Перевищено час очікування. | Python-сервіс отримує маршрут і зберігає його в K2 ERP. pass
* реалізувати чергу передачі;
* реалізувати worker відправки;
* реалізувати worker синхронізації статусів;
* реалізувати worker синхронізації маршрутів;
* реалізувати retry. |-
| vehicle_id
| string
| Закріплений автомобіль. оновлення версій статусів
! |-
| Дублювання заявок
| Повторний запит здатна створити дубль доставки. Тип задачі
</pre>
! |-
| AC-9
| Маршрут має точки доставки. |-
| address
| string
| Так
| Адреса доставки. * Документація API v2 у кабінеті ANT-Logistics. SEO-опис
<syntaxhighlight lang="python">
|-
| API Layer
| REST API для прийому заявок, точок, авто, водіїв. |}
{| class="wikitable"
<pre>
)
{| class="wikitable"
'''Технічний стек:''' Python 3.11+, FastAPI, PostgreSQL, SQLAlchemy, Alembic, httpx, Pydantic, Celery/RQ/APScheduler, Redis, Docker. |-
| ANT-Logistics / Мурашина логістика
| Сервіс планування оптимальних маршрутів доставки. Поле
<pre>
<pre>
K2 ERP / CRM / WMS / Website
!== 26. Етапи реалізації ==
* створити FastAPI-проєкт;
* налаштувати PostgreSQL;
* створити моделі інтеграції, точок, заявок, маршрутів, подій;
* налаштувати Alembic;
* реалізувати healthcheck. Код
'''критично:''' методи Python-клієнта виступає як внутрішньою абстракцією. |-
| Driver
| Водій або кур'єр. |-
| address
| text
| Адреса. |-
| Синхронізація маршрутів
| Середній
| Фоновий бізнес-процес. point_payload = ant_mapper.to_point_payload(order)
* додати rate limiting;
* додати моніторинг;
* додати alerting;
* додати dead letter queue;
* додати резервне копіювання;
* додати безпечне зберігання секретів. SEO-опис
"service_time_minutes": 15,
"status": "PENDING_SEND",
status_response = ant_client.get_task_status(order.ant_task_id)
try:
return
db.commit()
== 9. Статуси доставки ==
== 7. User Story ==
=== 7.5. Повернення статусів у K2 ERP ===
"weight": command.cargo.weight,
"address": "м. |-
| contact_name
| string
| Ні
| Контактна особа. |}
</div>
# Яка реліз системи API застосовується для: v1 чи v2? # Чи потрібно отримувати фактичний GPS-трек? |-
| longitude
| decimal
| Ні
| Довгота. |-
| ant_task_id
| ID задачі в ANT-Logistics. |-
| entity_type
| varchar
| integration, point, order, route, stop. SEO-опис
K2 ERP передає в ANT-Logistics список клієнтів або торгових точок. SEO-опис
<div style="border-left: 6px solid #2e7d32; background: #e8f5e9; padding: 12px 16px; margin: 16px 0;">
== 21. Dashboard логіста і керівника ==
event_type="DELIVERY_ORDER_CREATED",
! SEO-опис
},
"idempotency_key": command.idempotency_key,
</div>
}
|-
| Заявок на сьогодні
| 348
| style="background:#e3f2fd;" | інформаційні матеріали
|-
| Передано в ANT
| 340
| style="background:#bbdefb;" | В роботі
|-
| Заплановано
| 328
| style="background:#c8e6c9;" | Норма
|-
| Доставлено
| 280
| style="background:#c8e6c9;" | Норма
|-
| Не доставлено
| 12
| style="background:#ef9a9a;" | Критично
|-
| Частково доставлено
| 6
| style="background:#ffcc80;" | Потрібна дія
|-
| Потребують повтору
| 4
| style="background:#ffcc80;" | Потрібна дія
|-
| Без координат
| 9
| style="background:#fff9c4;" | Увага
|}
! | Не передавати заявку, показати список помилок. |-
| volume
| decimal
| Ні
| Об'єм. |}
! |-
| delivery_date
| date
| Так
| Дата доставки. Київ, вул. |-
| latitude
| decimal
| Ні
| Широта. Поле
платформа повинна забезпечити:
* перевіряє інформаційні дані замовлення;
* визначає точку доставки;
* формує заявку / задачу для ANT-Logistics;
* передає адресу, координати, часове вікно, вагу, об'єм, суму, контакт;
* зберігає ID задачі ANT-Logistics;
* очікує включення задачі в маршрут. |-
| sequence_number
| integer
| Порядок точки. |-
| vehicle_type
| string
| Тип авто. |}
{| class="wikitable"
<pre>
! |-
| Передача точки
| інформаційні дані точки, ANT point ID. |-
| Зміна заявки після планування
| здатна зламати маршрут. Компонент
"external_order_id": command.external_order_id,
! |-
| session_id_encrypted
| text
| Зашифрований session ID, якщо застосовується для. |-
| AddressError
| Некоректна адреса або не визначені координати. API v2 ANT-Logistics
Python Status Sync Worker
order = delivery_order_repository.get_by_id(db, delivery_order_id)
|
| 4. |-
| source
| varchar
| K2_ERP, PYTHON_SERVICE, ANT_LOGISTICS, USER. |-
| base_url
| varchar
| URL API. |-
| payload
| jsonb
| Технічні інформаційні дані. SEO-опис
! | Обмежити редагування після PLANNED. | Черга, retry, dashboard помилок. | здатна інтегруватись через ANT-Logistics або окремо. |-
| id
| uuid
| ID точки маршруту. |-
| comment
| text
| Ні
| Коментар для логіста або водія. |-
| Відсутність координат
| Маршрутизація здатна бути неточною. Worker передає заявку / задачу. {| class="wikitable"
entity_type="delivery_order",
"payment_type": "cash_on_delivery"
'''Управлінський результат:''' логіст і керівник повинні бачити, які заявки передано в ANT-Logistics, які маршрути сформовано, які замовлення доставлено, які не виконано, які водії мають відхилення, які точки проблемні та де потрібне втручання. |-
| external_order_id
| varchar
| ID замовлення K2 ERP. | Статус у K2 ERP змінюється на DELIVERED. |-
| longitude
| numeric
| Довгота. |-
| AC-5
| Заявка проходить валідацію. |-
| group
| string
| Ні
| Група точок. | style="background:#e3f2fd;" | інформаційні матеріали
|-
| Передано в ANT
| Заявки, які успішно передані. {| class="wikitable"
! | style="background:#fff9c4;" | Жовтий
|-
| Передається
| SENDING
| Виконується API-запит. | інтеграційні функції ERP зберігається в системі. 3. |-
| GPS Sync Worker
| Отримує фактичні треки, якщо доступно. HTML
def authenticate(self) -> "AuthResult":
return
=== 5.5. Отримання статусів доставки ===
! |-
| new_status
| varchar
| Новий статус. |}
existing = delivery_order_repository.get_by_idempotency_key(
{| class="wikitable"
== 6. Основні сутності ==
<syntaxhighlight lang="python">
Retry заборонений для:
__TOC__
event_type="DELIVERY_STATUS_SYNCED",
=== 21.2. Приклад dashboard ===
</pre>
== 28. Відкриті питання ==
"time_window_to": "13:00"
передачі заявок на доставку забезпечується через '''Головна ідея:''' розробити Python-сервіс. v
K2 ERP або TMS передає перелік автомобілів. |-
| style="background:#f3e5f5;" | Фіолетовий
| #f3e5f5
| Спеціальний статус або ручна перевірка. db=db,
* реалізувати створення заявки;
* реалізувати мапінг K2 ERP → ANT;
* реалізувати валідацію;
* реалізувати hash заявки;
* реалізувати дедублікацію. # Які саме методи API доступні у вашому тарифі? KPI
if new_status == "DELIVERED":
</div>
v
pass
{| class="wikitable"
Для надійності передача заявок повинна виконуватись через чергу. |-
| fact_duration
| integer
| Фактична тривалість. | Внутрішня платформа замовника. |-
| capacity_weight
| decimal
| Вантажопідйомність. SEO-опис
db=db,
* timeout;
* HTTP 429;
* HTTP 500;
* HTTP 502;
* HTTP 503;
* HTTP 504;
* тимчасової недоступності ANT-Logistics;
* тимчасової помилки отримання статусу;
* тимчасової помилки синхронізації маршрутів. SEO-опис
<div style="border-left: 6px solid #6a1b9a; background: #f3e5f5; padding: 12px 16px; margin: 16px 0;">
|-
| K2 ERP / CRM / WMS / інтернет-магазин
| Джерело замовлень, клієнтів, товарів і складів.</pre>
|-
| AC-11
| Замовлення доставлено. SEO-опис
base_url: str
order.error_message = str(exc)
|-
| Заявок створено
| Загальна кількість заявок за період. | Заборонити автоматичну зміну. | style="background:#ef9a9a;" | Критично
|-
| Частково доставлено
| виступає як відхилення по кількості або сумі. | Статус підсвічується червоним. |-
| created_at
| timestamp
| Дата створення. Пріоритет
Як логіст,
"external_point_id": "CLIENT-001",
це Python-клас або пакет, який інкапсулює роботу з API ANT-Logistics виступає ключовою рисою ANT-Logistics Client. Сутність
GET /api/v1/ant-logistics/dashboard?date_from=2026-05-01&date_to=2026-05-31
! |-
| Delivery Order
| Замовлення на доставку з K2 ERP. |}
=== 19.1. Створення заявки ===
! Обов'язковість
'''Критично критично:''' інтеграційні функції ERP з логістичною системою не повинна втрачати заявки на доставку. * Сторінка API ANT-Logistics. Поле
event_type="DELIVERY_ORDER_SENT_TO_ANT",
! task_response = ant_client.create_delivery_task(task_payload)
pass
! |-
| Python Integration Service
| Інтеграційний шар між K2 ERP та ANT-Logistics. |-
| Audit Logger
| Зберігає всі запити, відповіді та помилки. Призначення
|-
| AC-8
| ANT-Logistics сформувала маршрут. Дата
v
7. |-
| Delivery Status
| Статус доставки. |-
| Status Sync Worker
| Отримує статуси доставок. |-
| is_active
| boolean
| Активність. |-
| Отримання маршруту
| ANT route ID, водій, автомобіль, точки. |-
| email
| string
| Email.</pre>
* офіційний сайт ANT-Logistics / Мурашина логістика.<pre>
== 4. Передумови ==
|-
| ValidationError
| Некоректні інформаційні дані заявки. |-
| Отримання статусу
| Старий статус, новий статус, джерело. # Чи потрібно передавати автомобілі та водіїв?[[Категорія:ANT-Logistics]]
def create_delivery_order(command: "CreateDeliveryOrderCommand", db: "Session") -> "DeliveryOrder":
old_status = order.status
POST /api/v1/ant-logistics/integrations/{integration_id}/check-connection
До MVP не входить:
! | Таблиця status_mapping і статус UNKNOWN. |-
| Неправильні адреси
| Маршрути можуть будуватись некоректно. |}
! |-
| RouteLockedError
| Маршрут уже зафіксований. Де застосовується для
if existing:
{| class="wikitable"
|
} | Коментар
"volume": 0.8, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| id | uuid | Внутрішній ID точки. Критерій
integration_mode: str = "api_v2" | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Зелений | #c8e6c9 | - | name | varchar | - | payment_type | varchar | - | group_name | varchar | Група. Замовлення
except TemporaryAntError as exc: v 11.2. Основні компоненти Python-сервісу |
№
|
Синхронізація довідників | Низький | - | AC-17 | виступає як заявки без координат. POST /api/v1/ant-logistics/points/sync | }
order.status = "SENDING" я хочу передати замовлення з K2 ERP у Мурашину логістику, ) Приклад hash: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| external_driver_id | string | ID водія в K2 ERP. Компонент
20.2. Retry-логікаANT_LOGISTICS_ACCOUNT_ID=account-001 17.1. Логіка черги{ "places": 4 finally: audit_logger.log( return existing def create_or_update_driver(self, payload: "DriverPayload") -> "AntDriverResponse": ANT_LOGISTICS_INTEGRATION_MODE=api_v2 13. API Python-сервісу"amount": command.payment.amount, order.ant_status = status_response.status |
- | Помилка передачі | Код, повідомлення, raw-відповідь. "delivery_date": "2026-05-08",
8.4. Водій / кур'єр7.4. Робота водія8. Типи даних для передачі16. Дедублікація</syntaxhighlight> 6. SEO-опис Критично критично: заявка, яка вже включена в маршрут або виконана водієм, не повинна автоматизовано змінюватись без окремого правила. K2 ERP створює замовлення на доставку. |- |
name | string | Ручна обробка, нестандартні маршрути. |- | status | varchar | - | plate_number | string | Державний номер. Колір
new_status = status_mapper.from_ant(status_response.status) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| AC-4 | K2 ERP створює заявку на доставку. Ключ
"amount": 5700.00, 8. |- |
ant_route_id | varchar | - | name | varchar | - | point_id | string | Так | - | latitude | decimal | Ні | - | idempotency_key | Зберігається ant_task_id. |- | idempotency_key | varchar | style="background:#ffcc80;" | Потрібна дія | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Без координат | Точки, які потребують геокодування.=== 7.1. Передача заявки === | - | places | integer | - | Скасування заявки | Високий | }
13.9. Скасування заявки |
}
pass |
Помилки API, недоставка. | Робити GPS-синхронізацію опційною. № | - | AC-13 | Замовлення частково доставлено. Статус | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| id | uuid | - | GPS-трекери | - | Жовтий | #fff9c4 | - | AC-18 | - | API недоступне | - | latitude | numeric | Широта. def check_connection(self) -> "ConnectionStatus":
},def create_or_update_point(self, payload: "DeliveryPointPayload") -> "AntPointResponse": застосовується для для: Етап 4. Заявки та валідація
|