Bỏ qua nội dung

Admin xem danh sách gói package

Feature URL
Module
admin
Status
shipped
Priority
P1
Platforms
fe · be
AC progress
7 / 7
Last reviewed
2026-06-08

Mục tiêu

Cho phép admin tra cứu toàn bộ catalog gói thuê bao trong trang quản trị, gồm cả gói INACTIVE mà người dùng cuối không thấy. Đây là cửa sổ duy nhất giúp admin kiểm tra cấu hình gói trước khi tạo / cập nhật, đối chiếu giá và các flag quyền lợi, mà không cần truy vấn trực tiếp database.

Phạm vi

Trong phạm vi (In scope):

  • API tra cứu danh sách gói GET /admin/subscriptions/packages, chỉ role admin.
  • Filter tuỳ chọn theo status: ACTIVE hoặc INACTIVE; không truyền → trả toàn bộ.
  • Phân trang qua Pageable (page, size, sort).
  • Trả Page<SubscriptionPackageResponse> với đầy đủ field cấu hình gói: code, name, description, plans[]/giá, listingLimit, dailyListingDistributionLimit, các flag entitlement, status, affiliateRate
  • Hiển thị cả gói INACTIVE — khác hẳn endpoint public.

Ngoài phạm vi (Out of scope):

  • Endpoint public GET /subscriptions/plans (chỉ trả ACTIVE, không phân trang) — phục vụ user, không thuộc feature này.
  • Tạo gói — xem admin-package-create.
  • Cập nhật gói — xem admin-package-update.
  • Thống kê số subscriber theo gói — xem admin-package-statistics.
  • Danh sách subscriber của một gói — xem admin-package-subscribers.
  • Lưu lịch sử thao tác xem / audit log — không thuộc mô hình tài liệu này.

User Stories

  • admin, tôi muốn xem toàn bộ gói trong catalog (kể cả gói đã ẩn INACTIVE) để kiểm tra cấu hình trước khi chỉnh sửa.
  • admin, tôi muốn lọc theo trạng thái và phân trang để dễ duyệt khi catalog có nhiều gói.
  • admin, tôi muốn xem đầy đủ field cấu hình (giá, plans, flag quyền lợi, affiliate rate) ngay trong danh sách để đối chiếu nhanh.

Luồng chức năng

sequenceDiagram
    actor Admin
    participant App as FE Admin
    participant BE

    Admin->>App: Mở trang quản lý gói
    App->>BE: GET /admin/subscriptions/packages?status&page&size&sort
    BE->>BE: Kiểm tra role admin
    alt Có filter status
        BE->>BE: Lọc theo status (ACTIVE / INACTIVE)
    else Không filter
        BE->>BE: Lấy toàn bộ gói
    end
    BE->>BE: Phân trang theo Pageable
    BE-->>App: Page<SubscriptionPackageResponse>

Acceptance Criteria

  • AC-1: GET /admin/subscriptions/packages yêu cầu role admin.
  • AC-2: Filter status là tuỳ chọn; chỉ nhận ACTIVE / INACTIVE.
  • AC-3: Không truyền status → trả tất cả gói, kể cả INACTIVE.
  • AC-4: Truyền status=ACTIVE → chỉ trả gói ACTIVE; status=INACTIVE → chỉ gói INACTIVE.
  • AC-5: Hỗ trợ phân trang qua Pageable (page, size, sort), trả Page<SubscriptionPackageResponse>.
  • AC-6: Mỗi item trả đầy đủ field cấu hình gói: code, name, description, plans[]/giá, listingLimit, dailyListingDistributionLimit, các flag entitlement, status, affiliateRate.
  • AC-7: Khác endpoint public GET /subscriptions/plans: admin thấy cả gói INACTIVE và có phân trang.

Quy tắc nghiệp vụ

  • Đây là endpoint TRA CỨU thuần read-only; không tạo / sửa / xoá gói và không ghi lại thao tác xem.
  • Admin có quyền thấy mọi trạng thái gói; user chỉ thấy gói ACTIVE qua endpoint public.
  • Page trả về metadata phân trang chuẩn (totalElements, totalPages, number, size) để FE dựng pagination.
  • Field cấu hình phản ánh đúng giá trị hiện tại trong catalog Package; không snapshot.

Dữ liệu & Trạng thái

Entity nghiệp vụ:

  • Package: catalog gói (định nghĩa đầy đủ tại package-view).
  • SubscriptionPackageResponse: view trả về cho mỗi gói trong danh sách.
  • Pageable / Page<SubscriptionPackageResponse>: tham số phân trang và kết quả.

Trạng thái Package (hiển thị trong danh sách):

  • ACTIVE — đang bán, hiện trên catalog public.
  • INACTIVE — tạm ẩn / chưa bán, chỉ admin thấy.

Liên quan