تقدّم الترحيل
هذه هي الصفحة المرجعية لمعرفة مدى التغطية: لكل واجهة Shukah يستدعيها التطبيق في مجالي المستخدمين والنقاط، هل يوجد route في Locate يحل محلها، وهل يستجيب هذا الـ route على dev اليوم؟
انقر على route من Shukah لترى مقارنته بالـ route المقابل في Locate في صفحة Shukah مقابل Locate. وانقر على التفاصيل للانتقال إلى صفحة الـ endpoint الكاملة.
هل تحوّل التطبيق إلى Locate؟ ابدأ من قائمة التحويل: كل تغيير يجب على التطبيق إجراؤه في مكان واحد.
دليل الحالات
| العلامة | المعنى |
|---|---|
| ✅ تم الاستبدال | يوجد route في Locate لهذه الواجهة من Shukah. يمكن للتطبيق التحوّل إليه بعد معالجة الفروق المذكورة في صفحته. |
| ❌ لم يُستبدل | لا يوجد route في Locate بعد. يواصل التطبيق استدعاء Shukah لهذه الواجهة. |
| ➖ لن يُرحَّل | تبقى الواجهة على Shukah عن قصد. لا توجد واجهة بهذه الحالة اليوم. |
| 🚩 flag | الـ route في Locate موجود، لكن استخدامه يتوقف على مفتاح: flag على الخادم أو إعداد في التطبيق (ففي enableMerchantService يكون الـ route مفعّلًا على الخادم، ويقرر إعداد التطبيق هل يستدعيه). وتوضح الملاحظة مكان هذا المفتاح. |
يبيّن عمود Verdict ما يتطلبه تحويل التطبيق إلى الـ route في Locate:
| Verdict | المعنى |
|---|---|
| Drop-in | يتغيّر فقط الـ base URL والمسار. |
| Adapt | يجب أن يغيّر التطبيق الكود: يوجد اختلاف كاسر (breaking) واحد على الأقل. |
| Blocked | الـ route موجود لكن التطبيق لا يستطيع استخدامه بعد (flag مغلق أو token مرفوض). وتذكر الملاحظة السبب. |
في صندوق TL;DR في كل صفحة endpoint، تعني 🔴 breaking أن التطبيق الحالي سيتعطل أو يعرض بيانات خاطئة ما لم يتغيّر كوده، وتعني 🟡 to watch أن الـ route مختلف لكن التطبيق الحالي يظل يعمل، أو أن الأمر يمس حالة حدّية فقط.
عمود الفحص على dev هو طلب واحد إلى الـ route في Locate على dev، أُرسل دون token، في التاريخ
المبيّن. وهو يبيّن ما إذا كان الـ route منشورًا ويستجيب، لا ما إذا كان يعمل لعميل مسجّل الدخول.
تعني ✅ يستجيب أن الـ route موجود وقد ردّ، ويأتي رمز HTTP بعدها بين قوسين، مثل (401) عندما يطلب الـ route
token. وتعني ❌ غير موجود على dev أن الاستجابة 404. وتعني ⚠️ لا استجابة أن الطلب فشل.
المصادقة
12 من 14 تم استبدالها · 2 لم تُستبدل بعد · 0 لن تُرحَّل
| واجهة Shukah | واجهة Locate | الخدمة | الحالة | التقييم | الفحص على dev | الصفحة | ملاحظة |
|---|---|---|---|---|---|---|---|
GET /maeda/api/reset-otp | GET /api/v1/clients/reset-otp | auth-service | ✅ تم الاستبدال | استبدال مباشر | ✅ يستجيب (400) · 2026-10-01 | التفاصيل | route واحد يخدم تسجيل الدخول والتسجيل معًا، كما في Shukah؛ وفي Locate يحصل الهاتف غير المعروف على 400 "Last Name cannot be blank." (وهي إشارة للتطبيق لفتح التسجيل؛ بحسب الكود، أما نص Shukah الحالي فغير موثّق) ولا يُقرأ receive_offers. |
GET /maeda/api/verify-otp | GET /api/v1/clients/verify-otp | auth-service | ✅ تم الاستبدال | يحتاج تعديل التطبيق | ✅ يستجيب (400) · 2026-10-01 | التفاصيل | يُرجع access_token وملفًا شخصيًا في data، حيث الـ token هو JWT من Locate (وbody النجاح في Shukah له الشكل نفسه، التُقط في 2026-10-02)، ويُتجاهل fcm_token وplatform. |
GET /maeda/api/verify-token | GET /api/v1/clients/verify-token | auth-service | ✅ تم الاستبدال | يحتاج تعديل التطبيق | ✅ يستجيب (401) · 2026-10-01 | التفاصيل | |
GET /maeda/client | GET /api/v1/clients | auth-service | ✅ تم الاستبدال | يحتاج تعديل التطبيق | ✅ يستجيب (401) · 2026-10-01 | التفاصيل | |
GET /maeda/address-book | GET /api/v1/clients/address-book | auth-service | ✅ تم الاستبدال | يحتاج تعديل التطبيق | ✅ يستجيب (401) · 2026-10-01 | التفاصيل | تُرجع Locate القيمة is_default كـ boolean والمعرّف id كسلسلة hex من 24 حرفًا، بينما تُرجع Shukah القيمة 0 أو 1 ومعرّف id عددًا صحيحًا (و lat وlng أرقام على الجانبين)؛ ويقبل فحص الافتراضي في التطبيق الـ boolean، لكن أي شيء يعامل المعرّف كرقم يجب تغييره. |
GET /maeda/address-book/:id | GET /api/v1/clients/address-book/:id | auth-service | ✅ تم الاستبدال | يحتاج تعديل التطبيق | ✅ يستجيب (401) · 2026-10-01 | التفاصيل | |
POST /maeda/address-book | POST /api/v1/clients/address-book | auth-service | ✅ تم الاستبدال | يحتاج تعديل التطبيق | ✅ يستجيب (401) · 2026-10-01 | التفاصيل | |
PUT /maeda/address-book/:id | PUT /api/v1/clients/address-book/:id | auth-service | ✅ تم الاستبدال | يحتاج تعديل التطبيق | ✅ يستجيب (401) · 2026-10-01 | التفاصيل | body مسطّح بنمط Shukah؛ ويمكن أن يكون المعرّف معرّف hex من 24 حرفًا أو معرّف Shukah العددي. |
DELETE /maeda/address-book/:id | DELETE /api/v1/clients/address-book/:id | auth-service | ✅ تم الاستبدال | يحتاج تعديل التطبيق | ✅ يستجيب (401) · 2026-10-01 | التفاصيل | |
PUT /maeda/client/:client_id | PUT /api/v1/clients/:client_id | auth-service | ✅ تم الاستبدال | يحتاج تعديل التطبيق | ✅ يستجيب (401) · 2026-10-01 | التفاصيل | |
PUT /maeda/client/:client_id | PUT /api/v1/clients/setting | auth-service | ✅ تم الاستبدال | يحتاج تعديل التطبيق | ✅ يستجيب (401) · 2026-10-01 | التفاصيل | |
POST /maeda/client/add-device-id | POST /api/v1/clients/add-device-id | auth-service | ✅ تم الاستبدال | استبدال مباشر | ✅ يستجيب (200) · 2026-10-01 | التفاصيل | |
GET /maeda/client/status | — | — | ❌ لم يُستبدل | — | — | — | لا يوجد route في Locate. تُعلن لقطة التطبيق هذا الـ route لكن لا يستدعيه أي كود، ومع ذلك يُظهر جدول حركة production بتاريخ 2026-10-02 عدد 768 استدعاءً خلال 3 أيام؛ وتجيب Shukah dev بـ 404 "The route maeda/client/status could not be found." |
GET /maeda/client/delete | — | — | ❌ لم يُستبدل | — | — | — | لا يوجد route في Locate يحذف حسابًا، لذا يواصل التطبيق استدعاء route Shukah هذا، الذي يحتاج إلى token تقبله Shukah. ويحذف التطبيق الـ token المخزَّن عند 401 هنا، لذا يُسجَّل خروج تطبيق يملك JWT فقط. |
النقاط
11 من 16 تم استبدالها · 5 لم تُستبدل بعد · 0 لن تُرحَّل
| واجهة Shukah | واجهة Locate | الخدمة | الحالة | التقييم | الفحص على dev | الصفحة | ملاحظة |
|---|---|---|---|---|---|---|---|
GET /maeda/client/points | GET /api/v2/client/points | order-v2 → point-service | ✅ تم الاستبدال | استبدال مباشر | ✅ يستجيب (401) · 2026-10-01 | التفاصيل | |
GET /maeda/point-rate | GET /api/v2/client/system_configs/point_rates | order-v2 | ✅ تم الاستبدال 🚩 enableMerchantService | استبدال مباشر | ✅ يستجيب (200) · 2026-10-01 | التفاصيل | |
GET /maeda/giftcard-code/use | POST /api/v2/client/gift-card-code | order-v2 | ✅ تم الاستبدال 🚩 enableMerchantService | استبدال مباشر | ✅ يستجيب (401) · 2026-10-01 | التفاصيل | تقبل Locate الطلب POST مع {code} بدل GET ?code= وتفحص الأكواد مقابل أكواد بطاقات الهدايا التي تحتفظ بها Locate بنفسها (وغير معروف هل الأكواد الصادرة عن Shukah موجودة هناك)؛ ويستدعيه التطبيق بالفعل في وضع Merchant. 0 استدعاء في جدول حركة production بتاريخ 2026-10-02 (3 أيام). |
GET /maeda/client/point-history | GET /api/v2/client/point-history | order-v2 → point-service | ✅ تم الاستبدال | يحتاج تعديل التطبيق | ✅ يستجيب (401) · 2026-10-01 | التفاصيل | |
GET /maeda/point-offer | GET /api/v2/client/point-offers | order-v2 → point-service | ✅ تم الاستبدال | استبدال مباشر | ✅ يستجيب (401) · 2026-10-01 | التفاصيل | يُتجاهل المرشح ?id=؛ ولا يزال الاستدعاء يُرجع القائمة كلها. |
GET /maeda/point-occasion | GET /api/v2/client/point-occasions | order-v2 → point-service | ✅ تم الاستبدال | استبدال مباشر | ✅ يستجيب (401) · 2026-10-01 | التفاصيل | |
POST /maeda/point-order | POST /api/v2/client/point-orders | order-v2 → point-service | ✅ تم الاستبدال 🚩 POINT_ORDER_POINT_ENABLED | يحتاج تعديل التطبيق | ✅ يستجيب (401) · 2026-10-01 | التفاصيل | تقبل payment_type بالقيمة point أو checkout فقط (لا payfort ولا hyperpay) وتُرجع طلبًا بشكل مختلف (correlation_id وmoney_amount وغيرهما). |
POST /maeda/point-order/get-description | POST /api/v2/client/point-orders/description | order-v2 → point-service | ✅ تم الاستبدال | استبدال مباشر | ✅ يستجيب (401) · 2026-10-01 | التفاصيل | |
POST /maeda/order/checkout-payment-standalone | POST /api/v2/client/point-orders/:correlation_id/pay/card | order-v2 → point-service | ✅ تم الاستبدال 🚩 POINT_ORDER_CARD_ENABLED | يحتاج تعديل التطبيق | ✅ يستجيب (401) · 2026-10-01 | التفاصيل | لطلبات النقاط فقط: الـ body نفسه (id وcvv)، لكن الطلب يُسمّى في المسار بـ correlation_id لا point_order_id. |
POST /maeda/order/checkout-payment-flow | POST /api/v2/client/point-orders/:correlation_id/pay/session | order-v2 → point-service | ✅ تم الاستبدال 🚩 POINT_ORDER_CARD_ENABLED | يحتاج تعديل التطبيق | ✅ يستجيب (401) · 2026-10-01 | التفاصيل | لطلبات النقاط فقط: الـ body نفسه (rememberMe)؛ ويُتجاهل point_order_id وpayment_type ويُسمّى الطلب بـ correlation_id في المسار. |
GET /maeda/points-faq | GET /api/v2/client/points-faq | order-v2 → point-service | ✅ تم الاستبدال | استبدال مباشر | ✅ يستجيب (401) · 2026-10-01 | التفاصيل | مدخلات الأسئلة الشائعة الخمسة مطابقة لـ Shukah على dev، لكن Locate تحتاج إلى token بينما كانت Shukah تجيب بدونه. |
GET /maeda/point-order | — | — | ❌ لم يُستبدل | — | — | — | لا يوجد route في Locate يسرد الهدايا المرسَلة لمستخدم، لذا يواصل تبويب Sent gifts استدعاء Shukah. |
POST /maeda/order/checkout-payment | — | — | ❌ لم يُستبدل | — | — | — | لطلبات النقاط، توفّر Locate route لبطاقة محفوظة وroute لجلسة فقط، لذا فالـ route الذي يدفع ببطاقة token من Checkout.com لا بديل له. 0 استدعاء في جدول حركة production بتاريخ 2026-10-02 (3 أيام). |
POST /maeda/order/checkout-payment-stcpay | — | — | ❌ لم يُستبدل | — | — | — | بحسب التصميم (D24)، يُفترض أن تعالج Locate STC Pay داخل route الدفع بالجلسة (pay-session) لا عبر endpoint STC Pay المنفصل في order-v2؛ ولم يثبت ذلك بعد على جهاز. |
POST /maeda/order/payfort-token | — | — | ❌ لم يُستبدل | — | — | — | PayFort مؤجَّل عن قصد لطلبات نقاط Locate، لذا يواصل مسار PayFort استدعاء Shukah. 0 استدعاء في جدول حركة production بتاريخ 2026-10-02 (3 أيام). |
POST /maeda/order/payfort-stc-pay-checkout | — | — | ❌ لم يُستبدل | — | — | — | PayFort مؤجَّل عن قصد لطلبات نقاط Locate، لذا يواصل مسار STC Pay هذا استدعاء Shukah. 0 استدعاء في جدول حركة production بتاريخ 2026-10-02 (3 أيام). |
endpoints جديدة (لا مقابل لها في Shukah)
هذه الـ routes في Locate لا تقف خلفها أي واجهة من Shukah، لذلك ليست صفوفًا في الجداول أعلاه. وهي إمكانات جديدة يستطيع التطبيق استخدامها.
GET /api/v1/users: الملف الشخصي للعميل الذي يخصّه الـ token.POST /api/v1/clients/exchange-token: استبدال token من Shukah بـ token من Locate، أو العكس.GET /api/v2/client/point-offers/:id: عرض نقاط واحد.GET /api/v2/client/point-orders/:correlation_id: قراءة طلب نقاط مجددًا، مثلًا بعد انتهاء المهلة (timeout).
مصدر هذه القائمة
القائمة هي استدعاءات Shukah التي وُجدت في نسخة لحظية (snapshot) من تطبيق الجوال (mobile/locate-client، الفرع
development) بتاريخ 2026-02-26، وقورنت بوثائق خدمات Locate وشيفرتها التي قُرئت في
2026-10-01. وأُضيف مصدران أحدث في 2026-10-02:
- جدول حركة الإنتاج (production traffic sheet) ("api used last 3 days"، وصل في 2026-10-02): routes Shukah التي
خدمها الإنتاج في 3 أيام، مع عدد الاستدعاءات. وقد أضاف
client/status(768 استدعاءً) وبيّن أن أربعة صفوف لا استدعاءات لها إطلاقًا (انظر أدناه). ويتتبع عموده "Implemented in Laravel" نقل Shukah نفسها إلى Laravel على الـ URLs نفسها، لا الانتقال إلى Locate. - التقاطات التطبيق 2.31.5 (dev، 2026-10-02): أجسام الطلبات (request bodies) التي أرسلها التطبيق 2.31.5 إلى
routes
checkout-payment-flowوcheckout-payment-stcpay.
ولا تزال النسخة اللحظية هي المصدر الوحيد لشيفرة التطبيق. وأي شيء أضافه التطبيق بعد 2026-02-26 ولا يظهره المصدران أعلاه غير موجود في هذه الصفحة.
لا استدعاءات في 3 أيام. يُظهر جدول الحركة 0 استدعاء لـ giftcard-code/use
وorder/checkout-payment وorder/payfort-token وorder/payfort-stc-pay-checkout. وتحتفظ
بصفوفها، لأن شيفرة التطبيق لا تزال فيها الاستدعاءات؛ وتذكر ملاحظة كل صف ذلك.
فريق الجوال: يرجى تأكيد هذه القائمة على التطبيق الحالي. أخبرونا بأي استدعاء إلى Shukah في مجالي المستخدمين أو النقاط ينقص هنا، وبأي صف لم يعد التطبيق يستدعيه.
مستثنى عن قصد، لأنه ليس من ترحيل المستخدمين أو النقاط:
GET /maeda/api/settings، وتخدمه Locate عبر order-v2GET /api/v2/client/settings. وهو إعداد عام للتطبيق، ولا يستدعيه التطبيق إلا في وضع Merchant. وليس له صف ولا فحص على dev.- الكتالوج والمطاعم:
merchantوitemوcategoryوcuisineوserviceوadvertوpopular-searchوbannerوapi/restaurant-config، مع routes الفرعية الخاصة بها. - الطلبات والدفع (checkout) والطلبات الجماعية:
orderوorder/historyوorder/checkoutوroutesmake-payment-*وconfirm-order-changeوapi/get-distanceوroutesgroup-orderوorder/add-push-tokenوclient/apns/token. - تغييرات الطلب:
order/calculate-delivery-feeوorder/change-to-deliveryوorder/change-to-pickup. - طلبات المطاعم على routes
order/checkout-payment*الأربعة. فالصفوف أعلاه تغطي استخدامها في طلبات النقاط فقط. - البطاقات المحفوظة:
order/payment-card(الجلب والحذف). وتذكر وثائق خدمة النقاط routes في Locate لهذا الغرض على order-v2. - الإشعارات:
notificationوnotification/status. لم يُعثر على route في Locate لها. - الأسئلة الشائعة العامة والشروط:
faq. أما الشروط فهي صفحة علىlocate.saوليست استدعاء API. - معرَّفة في التطبيق لكن لا تُستدعى أبدًا:
client/create-food-truck-userوapi/point-orderوapi/point-offer. كما يوجدGET point-order/{id}من Shukah في شيفرة التطبيق، لكن لا توجد شاشة تستخدمه، فليس له صف. (كانclient/statusفي هذه القائمة حتى 2026-10-02. ويُظهر جدول الحركة 768 استدعاءً في 3 أيام، فصار له صف الآن.) - من خادم إلى خادم (server-to-server): routes تستدعيها خدمات الـ backend، لا التطبيق. وأعداد الاستدعاءات من
جدول الحركة (3 أيام).
client/add-point(30,049 استدعاءً) وclient/reduce-point(2,434). ولا يزال order-v2 يمنح النقاط عبرadd-pointفي Shukah بينما يكون flagusePointServiceفيه معطّلًا (انظر Points wallet).GET client/{id}(21 استدعاءً): الملف الشخصي للعميل. تستدعيهtalon-one-serviceبـ API key، لا بـ token عميل. وتجيب Shukah على dev بـ401على token العميل نفسه.POST billing-info/create(14 استدعاءً) وPUT billing-info/{id}(38 استدعاءً): يخزّنان بيانات الفوترة، لا بيانات المستخدم. وتُرسل مزامنة التاجر فيlocate-merchant-v2-apiتغييرات فوترة المتجر إلى Shukah بـPOST billing-infoوPUT billing-info/{Shukah merchant id}. وأي مستدعٍ يستخدم المسار/create: غير موثّق بعد.
كيف تُحدَّد الحالة
- ✅ تم الاستبدال يعني أن الـ route في Locate منفَّذ في فرع
developللخدمة. أما هل هو منشور في production فسؤال منفصل يجيب عنه الفحص على dev وملاحظات الـ flag. - ❌ لم يُستبدل يعني أنه لم يُعثر على route في Locate لهذه الواجهة في
develop. ويُحدَّد هذا من الشيفرة. - 🚩 flag يعني أن الـ route منفَّذ لكنه معطَّل بواسطة flag. وتبقى الحالة «تم الاستبدال» ويبيّن الـ flag ما يجب تفعيله.
- الفحص على dev هو طلب واحد دون token إلى الـ route في Locate على dev. أُجري في 2026-10-01. وإذا كان التاريخ أقدم من تغيير أُدخل على الـ route فالفحص قديم.
كيف تُحدَّث هذه الصفحة
الجداول لا تُكتب يدويًا. كل صف هو مدخل واحد في
sites/internal/src/components/migration/registry.ts، ويغذّي المدخل نفسه جداول
Shukah مقابل Locate والمربع «Replaces» في كل صفحة endpoint.
لتغيير صف، عدّل ذلك المدخل الواحد (حالته أو flag أو فحص dev أو ملاحظته)، ثم شغّل:
npm run test:internal && npm run build:internal
تفحص الاختبارات قواعد الـ registry، ويفحص البناء (build) كل رابط. ولا تشغّل البناء بينما يعمل خادم التطوير (dev server) في النسخة (checkout) نفسها؛ انظر README في المستودع. ولإضافة واجهة Shukah جديدة، أضف
مدخلًا وقسمها في صفحة المقارنة، واجعل page يشير إلى كتلة endpoint موجودة.
الترجمات
الفيتنامية: تُرجمت بتاريخ 2026-10-02 من الصفحات الإنجليزية بذلك التاريخ.
العربية: تُرجمت بتاريخ 2026-10-02 من الصفحات الإنجليزية بذلك التاريخ — وتحتاج إلى مراجعة متحدث أصلي للعربية قبل مشاركتها.