Skip to content

Feature Tag Matrix — MiniApp V2 (2026-02-27)

Mục tiêu: gắn tag trạng thái kỹ thuật cho từng feature miniapp_v2 để đội dev ưu tiên triển khai từ mock → production. Scope: miniapp_v2/miniapp (consumer app), đối chiếu với backend v2 và spec v3 mới.

1) Tag Dictionary

1.1 Spec/Design Tags

  • SPEC_STRONG: Spec đã rõ requirement + acceptance + rollout.
  • SPEC_GAP: Spec chưa đủ chi tiết để implement an toàn.
  • LEGACY_PARITY_OK: Đã cover parity cần thiết từ legacy.
  • LEGACY_NOT_TARGET: Feature legacy nằm ngoài scope phase hiện tại.

1.2 Backend Readiness Tags

  • BE_READY: Có endpoint + contract đủ dùng cho production flow.
  • BE_PARTIAL: Có endpoint chính nhưng còn thiếu action/contract phụ.
  • BE_CONTRACT_GAP: Chưa có contract endpoint rõ cho behavior hiện tại của FE.
  • BE_MOCK_ONLY: FE hiện chỉ chạy mock data/in-memory.
  • BE_GUARD_RISK: Manifest cảnh báo guard/permission chưa chắc chắn, cần verify code truth.

1.3 Frontend/Test Tags

  • FE_READY: UI flow đã đủ màn hình/trạng thái chính.
  • FE_PARTIAL: UI có nhưng còn thiếu xử lý edge-case hoặc coupling mock.
  • TEST_GAP: Chưa có contract/E2E coverage theo mức go-live.
  • OBS_GAP: Chưa chuẩn hóa telemetry/monitoring cho feature.

2) Matrix

Feature KeyFeatureRoutes / SurfaceSpec TagBackend TagFE TagTest TagCurrent TagsPriorityNext Action
MA.AUTH.001Tenant Zalo Login BootstrapApp init, auth gateSPEC_STRONGBE_PARTIALFE_PARTIALTEST_GAPSPEC_STRONG,BE_PARTIAL,FE_PARTIAL,TEST_GAPP0Chốt bootstrap contract tenantId/appInstanceId, implement real auth adapter + refresh race handling
MA.AUTH.002Protected Route Resume/orders, /addresses, /vouchers, /notifications, /news/savedSPEC_STRONGBE_READYFE_READYTEST_GAPSPEC_STRONG,BE_READY,FE_READY,TEST_GAPP0Thêm E2E resume-action sau login
MA.AUTH.003Auth Gate Modal (Global)Overlay modal across protected actionsSPEC_STRONGBE_PARTIALFE_PARTIALTEST_GAPSPEC_STRONG,BE_PARTIAL,FE_PARTIAL,TEST_GAPP0Chuẩn hóa modal auth (resume/cancel/retry), tránh pending-action chạy lặp
MA.CAT.001Catalog Home Feed/SPEC_STRONGBE_READYFE_READYTEST_GAPSPEC_STRONG,BE_READY,FE_READY,TEST_GAP,BE_GUARD_RISKP0Cắm real API cho categories/products/news; verify permission guard thực tế
MA.CAT.002Category Listing/Filter/categories, /category/:idSPEC_STRONGBE_READYFE_READYTEST_GAPSPEC_STRONG,BE_READY,FE_READY,TEST_GAPP1Chuẩn hóa server-side filter/sort để giảm lệch FE filter local
MA.CAT.003Product Detail/product/:idSPEC_STRONGBE_READYFE_READYTEST_GAPSPEC_STRONG,BE_READY,FE_READY,TEST_GAPP1Map chuẩn payload stock/price/variant từ BE DTO
MA.SEARCH.001Product Search + Suggestion/searchSPEC_STRONGBE_PARTIALFE_READYTEST_GAPSPEC_STRONG,BE_PARTIAL,FE_READY,TEST_GAP,OBS_GAPP1Tách suggestion/trending API rõ; chuẩn hóa search telemetry event schema
MA.CART.001Cart Sync/cartSPEC_STRONGBE_READYFE_PARTIALTEST_GAPSPEC_STRONG,BE_READY,FE_PARTIAL,TEST_GAP,BE_MOCK_ONLYP0Thay in-memory cart bằng /v2/ecommerce/carts/* adapter + sync strategy
MA.CHK.001Checkout Submit/checkoutSPEC_STRONGBE_READYFE_PARTIALTEST_GAPSPEC_STRONG,BE_READY,FE_PARTIAL,TEST_GAP,BE_MOCK_ONLYP0Chuyển create order sang endpoint thật, thêm error normalization
MA.CHK.002Checkout Success State/checkout (success state)SPEC_STRONGBE_PARTIALFE_PARTIALTEST_GAPSPEC_STRONG,BE_PARTIAL,FE_PARTIAL,TEST_GAPP0Bổ sung idempotent guard + success navigation contract + order code binding
MA.VCH.001Voucher Wallet/vouchersSPEC_STRONGBE_PARTIALFE_READYTEST_GAPSPEC_STRONG,BE_PARTIAL,FE_READY,TEST_GAPP1Chốt API list voucher theo user/tenant
MA.VCH.002Voucher Validate/Apply/checkoutSPEC_STRONGBE_READYFE_READYTEST_GAPSPEC_STRONG,BE_READY,FE_READY,TEST_GAPP0Lock race-condition apply + revalidate trước submit
MA.ORD.001Order List/ordersSPEC_STRONGBE_READYFE_READYTEST_GAPSPEC_STRONG,BE_READY,FE_READY,TEST_GAP,BE_GUARD_RISKP0Map query pagination/filter vào BE thật, thêm contract tests
MA.ORD.002Order Detail/order/:idSPEC_STRONGBE_READYFE_READYTEST_GAPSPEC_STRONG,BE_READY,FE_READY,TEST_GAPP0Kiểm tra mapping timeline/status notes từ BE domain
MA.ORD.003Order Actions (cancel/retry/confirm/reorder)/order/:idSPEC_STRONGBE_CONTRACT_GAPFE_PARTIALTEST_GAPSPEC_STRONG,BE_CONTRACT_GAP,FE_PARTIAL,TEST_GAPP0Chốt endpoint/action map: cancel reason, payment retry URL, confirm received
MA.ADDR.001Address CRUD + Default/addresses, checkout pickerSPEC_STRONGBE_CONTRACT_GAPFE_READYTEST_GAPSPEC_STRONG,BE_CONTRACT_GAP,FE_READY,TEST_GAP,BE_MOCK_ONLYP0Định nghĩa và implement address API v2 chính thức + unique default rule
MA.ADDR.002Address Picker Modal/checkout (sub-flow)SPEC_STRONGBE_CONTRACT_GAPFE_PARTIALTEST_GAPSPEC_STRONG,BE_CONTRACT_GAP,FE_PARTIAL,TEST_GAP,BE_MOCK_ONLYP0Đồng bộ chọn địa chỉ trong checkout với API thật, bỏ lệch local/server
MA.ADDR.003Address Form Modal + Location Cascade/checkout, /addresses (sub-flow)SPEC_STRONGBE_CONTRACT_GAPFE_PARTIALTEST_GAPSPEC_STRONG,BE_CONTRACT_GAP,FE_PARTIAL,TEST_GAP,BE_MOCK_ONLYP0Dùng GET /v2/admin/mdm/locations làm source chuẩn + map code->label cho city/district/ward
MA.NOTI.001In-app Notifications/notifications, home badgeSPEC_STRONGBE_PARTIALFE_READYTEST_GAPSPEC_STRONG,BE_PARTIAL,FE_READY,TEST_GAP,BE_GUARD_RISKP1Verify guard chain cho /v2/content/notifications/in-app* và chốt unread-count/read idempotent
MA.NEWS.001News Feed/newsSPEC_STRONGBE_CONTRACT_GAPFE_READYTEST_GAPSPEC_STRONG,BE_CONTRACT_GAP,FE_READY,TEST_GAPP1Tách read API public miniapp (không yêu cầu CMS_VIEW nội bộ) + filter/sort/paging chuẩn
MA.NEWS.002News Detail + Related/news/:slugSPEC_STRONGBE_CONTRACT_GAPFE_READYTEST_GAPSPEC_STRONG,BE_CONTRACT_GAP,FE_READY,TEST_GAP,OBS_GAPP1Bổ sung by-slug + related endpoints; hiện tại controller chỉ có GET :id
MA.NEWS.003News Search/news/searchSPEC_STRONGBE_CONTRACT_GAPFE_READYTEST_GAPSPEC_STRONG,BE_CONTRACT_GAP,FE_READY,TEST_GAPP1Bổ sung query search contract (q) thay vì chỉ filter status/category
MA.NEWS.004News Bookmark/news/savedSPEC_STRONGBE_CONTRACT_GAPFE_PARTIALTEST_GAPSPEC_STRONG,BE_CONTRACT_GAP,FE_PARTIAL,TEST_GAP,BE_MOCK_ONLYP1Tạo bookmark API server-side theo user
MA.REV.001Product Reviews / Write Review/product/:id/reviews, /write-review/:orderId/:productIdSPEC_STRONGBE_CONTRACT_GAPFE_READYTEST_GAPSPEC_STRONG,BE_CONTRACT_GAP,FE_READY,TEST_GAPP2Chốt review API contract + policy verified-purchase
MA.SUP.001Support Center/supportSPEC_STRONGBE_PARTIALFE_READYTEST_GAPSPEC_STRONG,BE_PARTIAL,FE_READY,TEST_GAPP2Nối CMS/contact config thay hardcoded content
MA.SUP.002Contact Support Channels/support (contact actions)SPEC_STRONGBE_CONTRACT_GAPFE_PARTIALTEST_GAPSPEC_STRONG,BE_CONTRACT_GAP,FE_PARTIAL,TEST_GAPP1Bổ sung config tenant-aware hotline/chat/email + SDK fallback
MA.SUP.003Support Category Pages/support/:categorySPEC_STRONGBE_CONTRACT_GAPFE_PARTIALTEST_GAPSPEC_STRONG,BE_CONTRACT_GAP,FE_PARTIAL,TEST_GAPP1Triển khai route category + article list động theo CMS
MA.SUP.004Q&A Center/question-and-answerSPEC_STRONGBE_CONTRACT_GAPFE_PARTIALTEST_GAPSPEC_STRONG,BE_CONTRACT_GAP,FE_PARTIAL,TEST_GAPP1Thiết kế contract tab all/mine + auth gate cho mine scope
MA.SUP.005Send Question/send-questionSPEC_STRONGBE_CONTRACT_GAPFE_PARTIALTEST_GAPSPEC_STRONG,BE_CONTRACT_GAP,FE_PARTIAL,TEST_GAPP1Implement form submit + moderation lifecycle + rate-limit handling

3) Summary by Tag

3.1 High-risk (P0 + backend chưa chắc)

  • MA.AUTH.001
  • MA.AUTH.003
  • MA.CART.001
  • MA.CHK.001
  • MA.CHK.002
  • MA.ORD.003
  • MA.ADDR.001
  • MA.ADDR.002
  • MA.ADDR.003

3.2 Mock-only hotspots

  • MA.CART.001
  • MA.CHK.001
  • MA.ADDR.001
  • MA.ADDR.002
  • MA.ADDR.003
  • MA.NEWS.004

3.3 Guard verification needed

  • MA.CAT.001
  • MA.ORD.001
  • MA.NOTI.001

  • Gate-1: Toàn bộ P0 không còn tag BE_MOCK_ONLY hoặc BE_CONTRACT_GAP.
  • Gate-2: Mỗi P0 có contract test + 1 E2E path pass.
  • Gate-3: Không còn BE_GUARD_RISK chưa verify ở flow có mutation.
  • Gate-4: Traceability update đồng bộ FEATURE_STATUS_MATRIX.md + WORKITEM_BOARD.md.

5) Source References

  • Core spec mới: 02_SPECS/core/miniapp.md
  • Gap closure spec: 02_SPECS/core/miniapp_v2_mock_completion_specs.md
  • Backend manifest: 05_GENERATED/backend_api_manifest.md
  • UI routes: miniapp_v2/miniapp/src/App.tsx

FitZalo Platform Documentation