🎬 Simulate:
Product List
+ Add ProductFilter
Products
4 active · 1 inactive (default: active only)
| Product Name | Type | Price (LAK) | Covered Items | Status | Action |
|---|---|---|---|---|---|
| Basic Digital Skills · Lifetime | Lifetime | ₭ 450,000 | 1 Course | Active | Edit |
| Basic Digital Skills · 1 Year | Period | ₭ 350,000 | 1 Course | Active | Edit |
| Digital Literacy Track | Lifetime | ₭ 1,150,000 | 3 Courses + 1 Special Program + 2 Tags | Active | Edit |
| Technical Skills Pathway · 6 Months | Period | ₭ 720,000 | 1 Special Program + 3 Tags | Active | Edit |
| Pilot Course (legacy) | Lifetime | ₭ 200,000 | 1 Course | Inactive | Edit |
Page 1 of 1 · 5 items
Screen Flow (from uc-bil-07-manage-product.flow.puml):
📝 Spec notes — UC-BIL.07 / SCR-BIL.08 (fields, actions, requirements)
Identity
- Screen: SCR-BIL.08 — Product List
- Use case: UC-BIL.07 — Manage Product
- Primary actor: Sale Admin (ACT-12)
Brief description
Product List is the admin-facing master page for UC-BIL.07 — Sale Admin sees the entire Product catalog (lifetime + period) with filters for type, status, and link kind. Each row shows name, type, price, covered-item summary, status, and an Edit button. Status changes (activate / deactivate) are performed exclusively through the Edit form (SCR-BIL.09) — there is no separate Deactivate button on this screen.
Fields
filter_type"Product Type" — enum (all / lifetime / period) · default: all · always visible · editablefilter_status"Status" — enum (all / active / inactive) · default: active · always visible · editablefilter_link_kind"Linked To" — enum (all / course / special_program / tag) · default: all · always visible · editablerow_name"Product Name" — text ·Product.name· always · read-onlyrow_type"Type" — enum (lifetime / period) ·Product.type· always · read-onlyrow_price"Price (LAK)" — number ·Product.price· always · read-onlyrow_link_summary"Covered Items" — computed (count summary: courses + special programs + tags) · always · read-onlyrow_status"Status" — enum (active / inactive) ·Product.status· always · read-onlypage_no"Page" — number · default: 1 · visible when total_pages > 1 · min: 1
Actions
search"Search" — always enabled · triggers UC-BIL.07-M-1 (re-loads product list with applied filters)clear"Clear" — always enabled · resets all filters to defaults (type: all, status: active, linked_to: all)add_product"+ Add Product" — always enabled · triggers UC-BIL.07-M-2 → navigates to Product Form (create mode)edit_product"Edit" — always enabled per row · triggers UC-BIL.07-A-2A-1 → navigates to Product Form (edit mode, pre-filled)prev_page"Previous" — enabled when page_no > 1 · triggers UC-BIL.07-M-1next_page"Next" — enabled when page_no < total_pages · triggers UC-BIL.07-M-1
Additional requirements
- RBAC — Sale Admin (ACT-12) or Super Administrator (ACT-04); reject 403 + log security event if user lacks the role. [refs: NFR-10]
- Product list default shows active only (filter_status default = active); inactive Products appear when admin selects filter_status = all or inactive. [refs: —]
- Pagination default 20 rows/page. [refs: NFR-02]
- Success notification (toast or inline banner) shown after Add / Edit success — message includes product name and action performed. [refs: —]
⚠ UC open issues
- Product schema (multi-link lists) conflicts with entities.puml and UC-BIL.01 data_touched (old link_type/link_ref single-link) — awaiting /analyze-entities reconcile.
- SpecialProgram + Tag entities not yet registered in LMS Core entities.puml — /analyze-entities must add them.
- Price/type change on a Product with active Subscriptions — current design: "no impact (snapshot pricing stored in Transaction)" — awaiting DTVE confirmation.