MEDUSA DOCUMENT

MEDUSA DOCUMENT

Tài liệu Medusa mô tả toàn bộ hệ thống theo sidebar Admin live: Medusa Core, Extensions, mobile app, media, promotion, payment và checklist BA.

1. Sơ đồ

2.1 Sơ đồ tổng quan hệ thống

Medusa AdminAdmin/BA/Ops cấu hình dữ liệu
Medusa BackendAPI + business rule + xử lý dữ liệu
Flutter Mobile AppKhách xem menu, đặt hàng, thanh toán
PostgreSQLLưu dữ liệu chính
Cloudflare R2Lưu ảnh/media
PayOS / VNPayCổng thanh toán
iPOS / FABiĐồng bộ menu/order
Mailgun / SESEmail giao dịch

2.2 Sơ đồ luồng dữ liệu mobile

1. Admin cấu hìnhMedia, menu, branch, promotion, sales policy
2. Backend lưuDatabase + metadata + modules
3. Store APImobile-bootstrap, mobile-menu, mobile-media
4. Mobile hiển thịHome, Menu, Store, Media
5. Khách thao tácChọn sản phẩm + modifier
6. Cart/FulfilmentDelivery hoặc Pickup
7. PromotionAuto promotion / voucher
8. PaymentPayOS hoặc VNPay
9. AuditOrders + Payment Audit + Logs

2.3 Sơ đồ nhóm Admin theo sidebar live

Admin SidebarToàn bộ menu quản trị

Medusa Core

Orders
Drafts
Products
Product Attributes
Stores
Inventory
Customers
Promotions
Price Lists

Extensions

Discount Rules
Promotion Catalog
24H Settings
Logs
Menus

3. Mô tả từng mục Admin

MụcTrong mục có gìTác dụngẢnh hưởng
OrdersDanh sách đơn, chi tiết đơn, khách hàng, sản phẩm, modifier, tổng tiền, payment status, fulfilment statusTheo dõi và xử lý đơn hàng sau khi khách đặtĐơn mobile phải đúng sản phẩm, giá, promotion, payment và trạng thái
DraftsĐơn nháp, khách hàng, item, giá tạm tínhGiữ đơn chưa hoàn tất hoặc admin tạo đơnDraft chưa hoàn tất không được tính như đơn thật
ProductsTên, ảnh, mô tả, giá, variant, category/collection, statusNguồn dữ liệu sản phẩm để bánProduct active hiển thị đúng; inactive không hiển thị sai; giá/ảnh/tên đúng trên app
Product AttributesNhóm thuộc tính và giá trị thuộc tính sản phẩmGắn đặc điểm cho sản phẩm để lọc hoặc áp promotionPromotion/filter theo attribute áp dụng đúng sản phẩm
StoresStore, sales channel, location, region hoặc cấu hình store coreQuản lý nơi bán/kênh bán theo Medusa coreKhông lẫn core store với branch/cửa hàng hiển thị trên mobile
InventorySKU, số lượng tồn, location tồn kho, trạng thái khả dụngQuản lý còn hàng/hết hàngNếu bật kiểm tồn, sản phẩm hết hàng phải bị chặn hoặc hiển thị đúng
CustomersDanh sách khách, email, phone, lịch sử đơn, metadataQuản lý tài khoản khách hàngLogin OTP/email/google gắn đúng customer; đơn hàng gắn đúng khách
PromotionsCampaign, rule, code, budget, status của Medusa coreQuản lý khuyến mãi mặc định của MedusaCần phân biệt với Promotion Engine custom, tránh nhầm rule
Price ListsBảng giá theo sản phẩm/variant, kênh bán, nhóm khách hoặc điều kiệnThiết lập giá khác nhau theo kịch bản bán hàngGiá mobile đúng theo channel, fulfilment và customer group nếu có
Discount RulesRule giảm giá, điều kiện áp dụng, trạng tháiCấu hình giảm giá theo extension/customKhông xung đột với Promotion Engine custom, giảm đúng điều kiện
Promotion CatalogBranches, mobile menus, product attributes, product modifiers, membership tiers, loyaltyDữ liệu nền cho mobile và promotionInactive không hiển thị/sử dụng sai; branch/tier/attribute áp rule đúng
24H SettingsMobile settings, media settings, R2 settings, promotion, sales, syncCấu hình trực tiếp app và hệ thống 24HSau lưu, mobile/store API đọc đúng dữ liệu mới
LogsCustomer logs, payment logs, system logsDebug lỗi khách hàng, thanh toán và backendLog đủ message/status/error/payload cần thiết
MenusMenu list, menu detail, section detail, item detailQuản lý cấu trúc menu customSection/item đúng thứ tự, inactive không hiển thị, item điều hướng đúng

4.1 Nội dung các mục Extension quan trọng

Mục chaMục conTrong mục có gìTác dụngẢnh hưởng
Promotion CatalogBranchesCửa hàng, địa chỉ, tọa độ, giờ mở cửaNguồn cửa hàng cho pickup/delivery/promotionMobile chọn cửa hàng, tính km, áp promotion theo branch
Promotion CatalogMobile MenusMenu, section, itemCấu hình menu đồ uống mobileMobile hiển thị menu theo cấu trúc này
Promotion CatalogProduct AttributesThuộc tính/giá trị sản phẩmĐiều kiện lọc/promotionPromotion áp dụng đúng nhóm sản phẩm
Promotion CatalogProduct ModifiersNhóm topping/optionCấu hình câu hỏi khi chọn sản phẩmProduct detail và cart total
Promotion CatalogMembership TiersHạng thành viênPhân nhóm khách theo tierPromotion/quyền lợi theo hạng
Promotion CatalogLoyaltyTài khoản điểm, ledger điểmTheo dõi điểm khách hàngMàn tài khoản/ưu đãi khách hàng
24H SettingsMobile SettingsSplash, popup, hero, feed, logo, menu banner, price, access, app release, contact/legalCấu hình trực tiếp mobile appGiao diện và hành vi mobile
24H SettingsMedia SettingsAsset ảnh, placement, status, order, schedule, target URLQuản lý media tập trungẢnh hiển thị trong app
24H SettingsCloudflare R2 SettingsAccount, bucket, CDN URL, access key, secret key, env/statusCấu hình nơi lưu ảnhUpload ảnh thành công/thất bại
24H SettingsSales SettingsLogin rule web/mobile, guest fieldsQuy định khách phải login khi nàoGuest/login flow
24H SettingsSync SettingsCấu hình đồng bộĐiều khiển sync hệ thống ngoàiiPOS/FABi/menu/order
LogsCustomer logsSự kiện/liên quan khách hàngDebug login/account/orderHỗ trợ truy lỗi khách
LogsPayment logsLog thanh toán PayOS/VNPayDebug payment/callback/webhookHỗ trợ truy lỗi thanh toán
LogsSystem logsLog hệ thốngTheo dõi lỗi backend/tích hợpHỗ trợ vận hành

4. Phân hệ Mobile Settings / Media

Cách hiểu bảng Media: Kích cỡ đề xuất là chuẩn để đội design xuất ảnh. Ảnh hiện tại trong Media là kích cỡ thật của ảnh đang có trên Admin/CDN. Nếu ảnh hiện tại khác tỉ lệ khuyến nghị thì vẫn có thể hiển thị, nhưng có rủi ro bị crop, lệch hoặc mất chữ/CTA.
MediaDùng ở đâuTỉ lệ khuyến nghịKích cỡ đề xuấtẢnh hiện tại trong MediaĐánh giáRủi ro/Ghi chú design
SplashMở app9:161080 x 19201126 x 2437Gần đúng tỉ lệ 9:16Ảnh full màn hình, nội dung chính không đặt sát mép.
Home popupPopup trang chủ3:41080 x 1440706 x 913Chưa đạt tỉ lệ 3:4Ảnh hiện tại thiếu chiều cao so với chuẩn; cần export lại theo 1080 x 1440, 900 x 1200 hoặc 750 x 1000. Tránh đặt chữ/CTA sát mép.
Home heroBanner trang chủXấp xỉ 144:651440 x 65016 ảnh, đa số 1080 x 1135; một số 1080 x 1134Chưa khớp chuẩn banner ngangẢnh hiện tại là ảnh dọc/cao hơn chuẩn banner ngang, dễ bị crop mạnh nếu khung hiển thị dạng banner. Đội design cần xác nhận lại khung app thật trước khi xuất lại.
Home feedCard promo2:11200 x 6006 ảnh 991 x 403/404; 1 ảnh wide 1080 x 164Chưa đồng bộ tỉ lệ6 ảnh đầu gần 2.45:1, ảnh wide rất mỏng. Cần chốt lại một tỉ lệ dùng chung để tránh card cao thấp không đều.
Brand logoLogo/badge1:1 hoặc file trong suốtLogo vuông/transparent143 x 142Gần đúng 1:1Ưu tiên PNG/WebP nền trong suốt; tránh logo bị mờ, lệch hoặc dư nền.
Menu bannerBanner menu đồ uống16:71600 x 700 hoặc 1280 x 560Chưa có asset trong bộ backfillThiếu dữ liệuBanner ngang trong menu; giữ nội dung chính ở vùng an toàn để tránh crop/lệch UI.
Rule upload hiện tại: output WebP, quality 0.82, cạnh dài tối đa 1440px, dung lượng tối đa 2 MB, lưu Cloudflare R2.
Số đo "Ảnh hiện tại trong Media" ở bảng trên được scan từ bộ ảnh nguồn dùng trong script backfill Media local. API live đang trả 400 khi gọi từ môi trường này, nên nếu Admin live đã thay ảnh thủ công sau backfill thì cần mở Media Settings để đối chiếu lại URL/kích cỡ thực tế.

6. Phân hệ Product Modifier

EntityÝ nghĩa
ProductModifierGroupNhóm topping/câu hỏi
ProductModifierOptionLựa chọn trong nhóm
ProductModifierGroupOptionLiên kết group-option
ProductModifierProductGroupLiên kết product-group

Checklist: min/max selection đúng, option bắt buộc không được bỏ qua, giá pickup/delivery đúng, tổng tiền cập nhật đúng.

7. Phân hệ Branch / Store

Nội dungMô tả
Dùng choChọn cửa hàng pickup, tìm cửa hàng gần bạn, promotion theo branch
Dữ liệuTên, địa chỉ, phone, giờ mở cửa, latitude, longitude, image
ChecklistDanh sách đúng, tìm kiếm đúng, km hợp lý, reload có trạng thái tải, chi tiết cửa hàng đúng

8. Phân hệ Promotion

PhầnMô tả
Promotion CatalogDữ liệu nền: branch, tier, loyalty, attribute
Promotion EngineTạo rule khuyến mãi/voucher
VoucherMã giảm giá có usage limit/status
Rule typescart_adjustment, product_adjustment, buy_x_get_x, buy_x_get_y, bundle_fixed_price, free_gift, free_shipping

9. Phân hệ Auth / Account

LuồngAPI
OTP phone/store/auth/otp/send, /verify
Email login/register/store/auth/email/login, /register
Google OAuth/store/auth/google/config, /callback
Refresh/logout/store/auth/session/refresh, /logout
Change email/phone/store/account/email/change, /phone/change

10. Phân hệ Cart / Payment / Logs

NhómBA cần kiểm tra
CartSản phẩm, modifier, quantity, total
FulfilmentDelivery/pickup, store/address
PromotionAuto promotion, voucher
PaymentPayOS, VNPay, callback, status
AuditAmount, status, error, payload
LogsCustomer/payment/system log

11. Rủi ro + Checklist

IDRủi roẢnh hưởng
R-01Media sai tỉ lệApp crop mất chữ/hình
R-02Rule login web/mobile bị lẫnGuest/login sai luồng
R-03Promotion thiếu branch/fulfilment/tierÁp dụng sai
R-04Modifier min/max saiKhông add cart hoặc tính tiền sai
R-05Payment callback lỗiĐơn hàng sai trạng thái
R-06iPOS sync ghi đè dữ liệuMenu/product sai
NhómChecklist test toàn hệ thống
Mobile mediaSplash, popup, hero, feed, logo, menu banner
MenuSection, item, product detail, inactive
StorePickup list, nearest, favorite, detail, reload
AuthPhone OTP, email, Google, logout, token refresh
Sales policyGuest/login rule web/mobile
CartModifier, quantity, total, fulfilment
PromotionAuto promotion, voucher, branch/tier/time limit
PaymentPayOS, VNPay, callback, status, audit
AccountProfile, orders, loyalty, email/phone change
AdminCRUD, validation, status, schedule, logs