Skip to content

واجهة السائق

حركة السائق تذهب إلى واجهة الإدارة (http://localhost:5001).

دخول الموظف

نفس الملتقط: POST /v1/auth/login بالبريد وكلمة المرور. احفظ accessToken وrefreshToken. أرسل Authorization: Bearer <accessToken> مع كل استدعاء. التحديث عبر POST /v1/auth/refresh مع { "refreshToken" }.

وجّه الواجهة عندما results.user.roleKey === "driver".

بذور التطوير: driver1@test.com، driver2@test.com، كلمة المرور 123. الصلاحيات: orders:read، orders:update. مقيّد بالفرع إن وُجدت branchIds.

سير العمل

ready --pickup--> out_for_delivery --deliver--> delivered
                         |
                         +--fail--> delivery_failed --retry--> out_for_delivery
                                              |
                                              +--return--> ready

استطلع GET /v1/fulfillment/driver/orders. حالات الطابور: ready، out_for_delivery، delivery_failed.

النقاط

GET يتطلب orders:read. POST يتطلب orders:update.

الطريقةالمسارالجسمالغرض
GET/v1/fulfillment/driver/ordersبطاقات الطابور
GET/v1/fulfillment/driver/orders/:orderIdالطلب الكامل + محاولات التوصيل
POST/v1/fulfillment/driver/orders/:orderId/pickupبدء الرحلة؛ الحالة → out_for_delivery
POST/v1/fulfillment/driver/orders/:orderId/deliverنجاح؛ الحالة → delivered
POST/v1/fulfillment/driver/orders/:orderId/fail{ reason, note? }زيارة فاشلة
POST/v1/fulfillment/driver/orders/:orderId/retryالخروج من المتجر مجدداً
POST/v1/fulfillment/driver/orders/:orderId/returnالكيس يعود للمتجر؛ الحالة → ready

أسباب الفشل

reasonاستخدمه عندما
customer_absentلا أحد عند الباب
refusedرفض العميل الطلب
wrong_addressالعنوان غير صالح للاستخدام
unreachableفشل الهاتف / الوصول
otherأي شيء آخر (note موصى به)

note اختياري، حد أقصى 256 حرفاً.

مثال الاستلام ثم التسليم

http
POST /v1/fulfillment/driver/orders/665f0c0c0c0c0c0c0c0c0c10/pickup
Authorization: Bearer <accessToken>
http
POST /v1/fulfillment/driver/orders/665f0c0c0c0c0c0c0c0c0c10/deliver
Authorization: Bearer <accessToken>

مثال الفشل

http
POST /v1/fulfillment/driver/orders/665f0c0c0c0c0c0c0c0c0c10/fail
Content-Type: application/json

{ "reason": "customer_absent", "note": "لا رد بعد 3 دقائق" }

retry لا يعيد إشعار العميل. return يعيد الطلب إلى رف الجاهزية لرحلة جديدة.

يشمل delivery على الطلب الحقول driver وpickedUpAt وdeliveredAt الاختياري وattempts[] وlastFailureReason.

الموقع الجغرافي

يسمح مخطط التوصيل بالموقع لاحقاً. الواجهة الحالية لا تقبل نبضات GPS حية.