PRD: Backoffice Portal
| Module | Commerce (CORE-03) | PRD ID | PRD-BOP-001 |
| Status | Planned | Owner | Hải Cao · Phát Nguyễn |
| Date | 2026-06-11 | Version | v0.1 (draft) |
| Packages | @nx/commerce · @nx/helpdesk · apps/bo | URD | BOP |
| Epic | BANA-1337 | Window | Jun (onboard+config) · Jul (import) · Aug (support+dashboards) |
TL;DR
An operator runs a client end-to-end from the BO alone: onboard (org → merchant MST → channels → business type), configure everything the client needs, import their catalog from one Excel file, handle their support tickets, and watch adoption on an admin dashboard.
1. Context & Problem
The pieces exist but don't make a portal: onboarding BE and a BO wizard exist; config screens exist for category templates, tax groups and licensing - but payment-methods config and transaction lookup are buried at merchant scope; Excel import doesn't exist at all; helpdesk has a rich backend and a client-side ticket UI but no BO ticket dashboard; and there is no admin view of stores/transactions. Operating a client today means hopping tools and asking devs.
2. Goals & Non-Goals
Goals - onboard from BO alone (URD-BOP-001) · full config from BO (002, 008) · admin-level transaction lookup (003) · bulk Excel import with row errors + duplicate-safe re-import (004) · Support Center in BO (005, 006) · admin dashboard (007).
Non-Goals - client-side (merchant-facing) screens · usage/behaviour analytics beyond the two dashboard views · API logs (later).
3. Success Metrics
| Metric | Target |
|---|---|
| Time to onboard + configure a client | One BO session, no dev help |
| Catalog import | Spreadsheet → sellable catalog, bad rows reported by row |
4. Personas & Use Cases
BO operator (NEXPANDO/VNPAY ops): onboards & supports clients · Admin: watches adoption (stores, transactions).
5. User Stories
- As an operator, I onboard a signed client and configure packages, templates, tax groups in one sitting.
- As an operator, I import the client's product list from Excel and fix only the rows it flags.
- As a support agent, I work tickets (list → detail → resolve) inside the BO.
6. Functional Requirements
Delivers URD BOP URD-BOP-001…008 (Musts 001-005).
7. Non-Functional Requirements
- Import handles thousands of rows with clear progress; all BO actions respect per-merchant authorization (E11).
8. UX & Flows
- Onboard (Jun): wizard org → merchant (MST) → channels → business type → done-checklist.
- Configure (Jun): packages & licenses · industries & category templates · tax groups · payment methods (admin level) · transaction lookup (admin level).
- Import (Jul): upload Excel → validate → row-level errors → apply → re-import safe.
- Support + monitor (Aug): ticket list/detail, SLA/category/agent config; dashboard of stores by industry + transactions by store.
9. Data & Domain
- Onboarding reuses the existing atomic endpoints; import introduces an Excel pipeline (categories → products/variants → prices → tax, in dependency order); support reuses the helpdesk backend.
10. Dependencies & Assumptions
| Dependency | Why |
|---|---|
| Per-merchant authz + BO user split (E11, Jun) | Operator/admin roles gate the portal |
| Retail templates (PRD-RTL-001) | Industry templates config covers retail |
| Helpdesk backend | Support Center front |
11. Risks & Open Questions
- Import file format: lock the template early (one sheet vs multi-sheet).
- Helpdesk package had build issues historically - verify before the Aug slice.
12. Release Plan & Launch Criteria
Jun: onboard + config slices. Jul: import. Aug: support + dashboards. Launch: AC-BOP-01 passes - a client onboarded, configured and imported from BO alone.
13. FAQ
- Is this a new app? No - it's completing
apps/bointo a true operations portal.
References
URD BOP · Phase 2 - By Month · Epic BANA-1337