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ỉ roleadmin. - Filter tuỳ chọn theo
status:ACTIVEhoặcINACTIVE; 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
- Là 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. - Là 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.
- Là 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/packagesyêu cầu roleadmin. - AC-2: Filter
statuslà tuỳ chọn; chỉ nhậnACTIVE/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óiACTIVE;status=INACTIVE→ chỉ góiINACTIVE. - 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óiINACTIVEvà 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
ACTIVEqua endpoint public. Pagetrả 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
- Phụ thuộc: package-view
- Ảnh hưởng: Chưa có.
- Cùng nhóm admin: admin-package-create, admin-package-update, admin-package-statistics, admin-package-subscribers