Chuyển tới nội dung chính

Tiến độ migrate

Đây là trang để kiểm tra độ phủ: với mỗi API Shukah mà app gọi trong mảng user và điểm, có route Locate nào thay thế nó không, và route đó hiện có phản hồi trên dev không?

Bấm vào một route Shukah để xem nó được đặt cạnh route Locate trên trang Shukah vs Locate. Bấm Chi tiết để mở trang endpoint đầy đủ.

Đang chuyển app sang Locate? Hãy bắt đầu từ Danh sách chuyển đổi: mọi thay đổi app phải làm, gom ở một chỗ.

Chú giải trạng thái​

DấuÝ nghĩa
✅ Đã thay thếĐã có route Locate cho API Shukah này. App có thể chuyển sang dùng nó, sau khi xử lý các điểm khác biệt ghi trên trang của nó.
❌ Chưa thay thếChưa có route Locate. App vẫn gọi Shukah cho API này.
➖ Không migrateAPI này cố ý ở lại Shukah. Hiện chưa có API nào ở trạng thái này.
🚩 flagRoute Locate đã có, nhưng một công tắc quyết định có dùng hay không: flag ở server, hoặc setting của app (với enableMerchantService thì route ở server đã bật, và setting của app quyết định app có gọi nó hay không). Ghi chú cho biết công tắc nằm ở đâu.

Cột Verdict cho biết chuyển app sang route Locate cần làm gì:

VerdictÝ nghĩa
Drop-inChỉ đổi base URL và path.
AdaptApp phải đổi code: có ít nhất một khác biệt breaking.
BlockedRoute đã có nhưng app chưa dùng được (flag đang tắt hoặc token bị từ chối). Ghi chú nêu lý do.

Trong hộp TL;DR trên mỗi trang endpoint, 🔴 breaking nghĩa là app hiện tại sẽ hỏng hoặc hiển thị sai dữ liệu nếu không đổi code, còn 🟡 to watch nghĩa là route có khác biệt nhưng app hiện tại vẫn chạy được, hoặc chỉ ảnh hưởng một trường hợp biên.

Cột Kiểm tra trên dev là một request tới route Locate trên dev, gửi không kèm token, vào ngày được hiển thị. Nó cho biết route đã được deploy và có phản hồi hay chưa, chứ không cho biết route có chạy đúng với một client đã đăng nhập hay không. ✅ có phản hồi nghĩa là route có đó và đã trả lời; mã HTTP đi kèm trong ngoặc, ví dụ (401) khi route đòi token. ❌ chưa có trên dev nghĩa là 404. ⚠️ không phản hồi nghĩa là request thất bại.

Auth​

12/14 đã thay thế · 2 chưa thay thế · 0 không migrate

API ShukahAPI LocateServiceTrạng tháiKết luậnKiểm tra trên devTrangGhi chú
GET /maeda/api/reset-otpGET /api/v1/clients/reset-otpauth-service✅ Đã thay thế Thay thẳng✅ có phản hồi (400) · 2026-10-01Chi tiếtMột route phục vụ cả đăng nhập lẫn đăng ký, giống Shukah; trên Locate, số điện thoại chưa tồn tại nhận 400 "Last Name cannot be blank." (tín hiệu để app mở màn hình đăng ký; theo code, còn nội dung hiện tại của Shukah chưa được tài liệu hóa) và receive_offers không được đọc.
GET /maeda/api/verify-otpGET /api/v1/clients/verify-otpauth-service✅ Đã thay thế Cần sửa app✅ có phản hồi (400) · 2026-10-01Chi tiếtTrả về access_token và profile trong data, trong đó token là một JWT của Locate (body thành công của Shukah có cùng shape, capture 2026-10-02), còn fcm_token và platform bị bỏ qua.
GET /maeda/api/verify-tokenGET /api/v1/clients/verify-tokenauth-service✅ Đã thay thế Cần sửa app✅ có phản hồi (401) · 2026-10-01Chi tiết
GET /maeda/clientGET /api/v1/clientsauth-service✅ Đã thay thế Cần sửa app✅ có phản hồi (401) · 2026-10-01Chi tiết
GET /maeda/address-bookGET /api/v1/clients/address-bookauth-service✅ Đã thay thế Cần sửa app✅ có phản hồi (401) · 2026-10-01Chi tiếtLocate trả is_default dạng boolean và id dạng chuỗi 24 ký tự hex, trong khi Shukah trả 0 hoặc 1 và id là số nguyên (lat và lng là số ở cả hai phía); phần kiểm tra mặc định của app chấp nhận boolean, nhưng mọi chỗ coi id là số đều phải sửa.
GET /maeda/address-book/:idGET /api/v1/clients/address-book/:idauth-service✅ Đã thay thế Cần sửa app✅ có phản hồi (401) · 2026-10-01Chi tiết
POST /maeda/address-bookPOST /api/v1/clients/address-bookauth-service✅ Đã thay thế Cần sửa app✅ có phản hồi (401) · 2026-10-01Chi tiết
PUT /maeda/address-book/:idPUT /api/v1/clients/address-book/:idauth-service✅ Đã thay thế Cần sửa app✅ có phản hồi (401) · 2026-10-01Chi tiếtBody phẳng theo kiểu Shukah; id có thể là id 24 ký tự hex hoặc id số của Shukah.
DELETE /maeda/address-book/:idDELETE /api/v1/clients/address-book/:idauth-service✅ Đã thay thế Cần sửa app✅ có phản hồi (401) · 2026-10-01Chi tiết
PUT /maeda/client/:client_idPUT /api/v1/clients/:client_idauth-service✅ Đã thay thế Cần sửa app✅ có phản hồi (401) · 2026-10-01Chi tiết
PUT /maeda/client/:client_idPUT /api/v1/clients/settingauth-service✅ Đã thay thế Cần sửa app✅ có phản hồi (401) · 2026-10-01Chi tiết
POST /maeda/client/add-device-idPOST /api/v1/clients/add-device-idauth-service✅ Đã thay thế Thay thẳng✅ có phản hồi (200) · 2026-10-01Chi tiết
GET /maeda/client/status——❌ Chưa thay thế ———Không có route Locate. Snapshot của app có khai báo route này nhưng không có code nào gọi nó, vậy mà bảng traffic production ngày 2026-10-02 ghi nhận 768 lượt gọi trong 3 ngày; Shukah dev trả 404 "The route maeda/client/status could not be found."
GET /maeda/client/delete——❌ Chưa thay thế ———Không có route nào của Locate xóa tài khoản, nên app vẫn gọi route Shukah này, route cần một token mà Shukah chấp nhận. App xóa token đã lưu khi gặp 401 ở đây, nên app chỉ có JWT sẽ bị đăng xuất.

Điểm​

11/16 đã thay thế · 5 chưa thay thế · 0 không migrate

API ShukahAPI LocateServiceTrạng tháiKết luậnKiểm tra trên devTrangGhi chú
GET /maeda/client/pointsGET /api/v2/client/pointsorder-v2 → point-service✅ Đã thay thế Thay thẳng✅ có phản hồi (401) · 2026-10-01Chi tiết
GET /maeda/point-rateGET /api/v2/client/system_configs/point_ratesorder-v2✅ Đã thay thế 🚩 enableMerchantServiceThay thẳng✅ có phản hồi (200) · 2026-10-01Chi tiết
GET /maeda/giftcard-code/usePOST /api/v2/client/gift-card-codeorder-v2✅ Đã thay thế 🚩 enableMerchantServiceThay thẳng✅ có phản hồi (401) · 2026-10-01Chi tiếtLocate nhận POST với {code} thay vì GET ?code= và kiểm tra code với các gift-card code do chính Locate giữ (chưa rõ code do Shukah phát hành có tồn tại ở đó không); app đã gọi route này ở chế độ Merchant. 0 lượt gọi trong bảng traffic production ngày 2026-10-02 (3 ngày).
GET /maeda/client/point-historyGET /api/v2/client/point-historyorder-v2 → point-service✅ Đã thay thế Cần sửa app✅ có phản hồi (401) · 2026-10-01Chi tiết
GET /maeda/point-offerGET /api/v2/client/point-offersorder-v2 → point-service✅ Đã thay thế Thay thẳng✅ có phản hồi (401) · 2026-10-01Chi tiếtBộ lọc ?id= bị bỏ qua: lệnh gọi vẫn trả toàn bộ danh sách.
GET /maeda/point-occasionGET /api/v2/client/point-occasionsorder-v2 → point-service✅ Đã thay thế Thay thẳng✅ có phản hồi (401) · 2026-10-01Chi tiết
POST /maeda/point-orderPOST /api/v2/client/point-ordersorder-v2 → point-service✅ Đã thay thế 🚩 POINT_ORDER_POINT_ENABLEDCần sửa app✅ có phản hồi (401) · 2026-10-01Chi tiếtChỉ chấp nhận payment_type point hoặc checkout (không có payfort hay hyperpay) và trả về order có shape khác (correlation_id, money_amount, v.v.).
POST /maeda/point-order/get-descriptionPOST /api/v2/client/point-orders/descriptionorder-v2 → point-service✅ Đã thay thế Thay thẳng✅ có phản hồi (401) · 2026-10-01Chi tiết
POST /maeda/order/checkout-payment-standalonePOST /api/v2/client/point-orders/:correlation_id/pay/cardorder-v2 → point-service✅ Đã thay thế 🚩 POINT_ORDER_CARD_ENABLEDCần sửa app✅ có phản hồi (401) · 2026-10-01Chi tiếtChỉ cho point order: body giống nhau (id, cvv), nhưng order được chỉ định trong path bằng correlation_id, không phải point_order_id.
POST /maeda/order/checkout-payment-flowPOST /api/v2/client/point-orders/:correlation_id/pay/sessionorder-v2 → point-service✅ Đã thay thế 🚩 POINT_ORDER_CARD_ENABLEDCần sửa app✅ có phản hồi (401) · 2026-10-01Chi tiếtChỉ cho point order: body giống nhau (rememberMe); point_order_id và payment_type bị bỏ qua và order được chỉ định bằng correlation_id trong path.
GET /maeda/points-faqGET /api/v2/client/points-faqorder-v2 → point-service✅ Đã thay thế Thay thẳng✅ có phản hồi (401) · 2026-10-01Chi tiếtNăm mục FAQ giống hệt Shukah trên dev, nhưng Locate cần token trong khi Shukah trả lời không cần token.
GET /maeda/point-order——❌ Chưa thay thế ———Không có route Locate nào liệt kê các quà đã gửi của một user, nên tab Sent gifts vẫn gọi Shukah.
POST /maeda/order/checkout-payment——❌ Chưa thay thế ———Với point order, Locate chỉ có route thẻ đã lưu và route session, nên route thanh toán bằng token thẻ Checkout.com không có route thay thế. 0 lượt gọi trong bảng traffic production ngày 2026-10-02 (3 ngày).
POST /maeda/order/checkout-payment-stcpay——❌ Chưa thay thế ———Theo thiết kế (D24), Locate dự kiến xử lý STC Pay bên trong route pay-session chứ không dùng endpoint STC Pay riêng của order-v2; chưa được chứng minh trên thiết bị.
POST /maeda/order/payfort-token——❌ Chưa thay thế ———PayFort được hoãn có chủ đích cho point order của Locate, nên đường PayFort vẫn gọi Shukah. 0 lượt gọi trong bảng traffic production ngày 2026-10-02 (3 ngày).
POST /maeda/order/payfort-stc-pay-checkout——❌ Chưa thay thế ———PayFort được hoãn có chủ đích cho point order của Locate, nên đường STC Pay này vẫn gọi Shukah. 0 lượt gọi trong bảng traffic production ngày 2026-10-02 (3 ngày).

Endpoint mới (không có endpoint tương đương trên Shukah)​

Các route Locate này không có API Shukah đứng sau, nên chúng không phải là dòng trong các bảng ở trên. Đó là những khả năng mới mà app có thể dùng.

Danh sách này đến từ đâu​

Danh sách là các lời gọi Shukah tìm thấy trong một snapshot của mobile app (mobile/locate-client, branch development) ngày 2026-02-26, đối chiếu với tài liệu và code của Locate service đọc vào 2026-10-01. Hai nguồn muộn hơn được thêm vào ngày 2026-10-02:

  • Bảng traffic production ("api used last 3 days", nhận ngày 2026-10-02): các route Shukah mà production đã phục vụ trong 3 ngày, kèm số lời gọi. Nó đã thêm client/status (768 lời gọi) và cho thấy bốn dòng hoàn toàn không có lời gọi nào (xem bên dưới). Cột "Implemented in Laravel" của nó theo dõi bản port Laravel của chính Shukah ở cùng các URL, không phải việc chuyển sang Locate.
  • Capture app 2.31.5 (dev, 2026-10-02): các request body mà app 2.31.5 đã gửi tới các route checkout-payment-flow và checkout-payment-stcpay.

Snapshot vẫn là nguồn duy nhất cho code của app. Bất cứ thứ gì app thêm sau 2026-02-26 mà hai nguồn trên không cho thấy đều không có trên trang này.

Không có lời gọi nào trong 3 ngày. Bảng traffic cho thấy 0 lời gọi với giftcard-code/use, order/checkout-payment, order/payfort-token và order/payfort-stc-pay-checkout. Chúng vẫn giữ dòng của mình, vì code của app vẫn có các lời gọi đó; ghi chú của mỗi dòng nói rõ điều này.

Team mobile: vui lòng xác nhận danh sách này với app hiện tại. Hãy cho chúng tôi biết mọi lời gọi Shukah trong mảng user hoặc điểm mà đang thiếu ở đây, và mọi dòng mà app không còn gọi nữa.

Cố ý không đưa vào, vì không thuộc migrate user hay điểm:

  • GET /maeda/api/settings, mà Locate phục vụ dưới dạng order-v2 GET /api/v2/client/settings. Đó là cấu hình chung của app và app chỉ gọi nó ở chế độ Merchant. Nó không có dòng nào và không có dev check.
  • Catalog và nhà hàng: merchant, item, category, cuisine, service, advert, popular-search, banner và api/restaurant-config, cùng các sub-route của chúng.
  • Đơn hàng, checkout và group order: order, order/history, order/checkout, các route make-payment-* và confirm-order-change, api/get-distance, các route group-order, order/add-push-token và client/apns/token.
  • Thay đổi đơn hàng: order/calculate-delivery-fee, order/change-to-delivery và order/change-to-pickup.
  • Đơn nhà hàng trên bốn route order/checkout-payment*. Các dòng ở trên chỉ phủ trường hợp dùng cho đơn mua điểm.
  • Thẻ đã lưu: order/payment-card (get và delete). Tài liệu của point service có nêu các route Locate cho việc này trên order-v2.
  • Thông báo: notification và notification/status. Không tìm thấy route Locate nào cho chúng.
  • FAQ chung và điều khoản: faq. Điều khoản là một trang trên locate.sa, không phải lời gọi API.
  • Được khai báo trong app nhưng không bao giờ được gọi: client/create-food-truck-user, api/point-order và api/point-offer. Một Shukah GET point-order/{id} cũng có trong code của app, nhưng không màn hình nào dùng nó, nên nó không có dòng. (client/status nằm trong danh sách này cho đến 2026-10-02. Bảng traffic cho thấy 768 lời gọi trong 3 ngày, nên giờ nó có dòng.)
  • Server-to-server: các route mà backend service gọi, không phải app. Số lời gọi lấy từ bảng traffic (3 ngày).
    • client/add-point (30,049 lời gọi) và client/reduce-point (2,434). order-v2 vẫn cộng điểm qua Shukah add-point khi flag usePointService của nó đang tắt (xem Points wallet).
    • GET client/{id} (21 lời gọi): hồ sơ của client. talon-one-service gọi nó bằng API key, không phải token của client. Shukah dev trả 401 cho token của chính client.
    • POST billing-info/create (14 lời gọi) và PUT billing-info/{id} (38 lời gọi): lưu dữ liệu thanh toán, không phải dữ liệu user. Merchant sync của locate-merchant-v2-api gửi các thay đổi billing của store sang Shukah bằng POST billing-info và PUT billing-info/{Shukah merchant id}. Caller nào dùng path /create: Chưa được tài liệu hóa.

Cách xác định trạng thái​

  • ✅ Đã thay thế nghĩa là route Locate đã được implement trên branch develop của service. Việc nó đã deploy lên production hay chưa là một câu hỏi riêng mà Dev check và các ghi chú flag trả lời.
  • ❌ Chưa thay thế nghĩa là không tìm thấy route Locate nào cho API này trên develop. Điều này được quyết định dựa trên code.
  • 🚩 flag nghĩa là route đã implement nhưng bị tắt bởi một flag. Trạng thái vẫn là Đã thay thế và flag cho biết cái gì phải được bật.
  • Dev check là một request duy nhất không kèm token tới route Locate trên dev. Nó được thực hiện vào 2026-10-01. Ngày cũ hơn lần thay đổi route nghĩa là kết quả kiểm tra đã lỗi thời.

Cách cập nhật trang này​

Các bảng không được viết tay. Mỗi dòng là một entry trong sites/internal/src/components/migration/registry.ts, và cùng entry đó cấp dữ liệu cho các bảng Shukah vs Locate và hộp "Replaces" trên mọi trang endpoint.

Để đổi một dòng, sửa đúng entry đó (status, flag, dev check hoặc note), rồi chạy:

npm run test:internal && npm run build:internal

Các test kiểm tra quy tắc của registry và build kiểm tra mọi link. Đừng chạy build khi dev server đang chạy trong cùng checkout; xem README của repository. Để thêm một API Shukah, thêm một entry và section của nó trên trang so sánh, và trỏ page tới một endpoint block có thật.

Bản dịch​

Vietnamese: translated 2026-10-02 from the English pages of that date.

Arabic: translated 2026-10-02 from the English pages of that date — needs review by a native Arabic speaker before it is shared.