Complete QA Documentation, Permission Framework, and Feature Matrix for WCW CRM v1.0
Status: Ready for PBAC Migration
Effective Date: April 8, 2026
| Symbol | Meaning | |——–|———| | ✅ | Full Access / Works | | 🟠 | Partial / Conditional | | ❌ | No Access / Restricted | | 🔴 | Not Implemented |
| Feature | Admin | Manager | Sales Rep | Inside Rep | Status |
|---|---|---|---|---|---|
| View Dashboard | ✅ All Data | ✅ Team Data | ✅ Own Region | ✅ Own Region | ✅ |
| Filter Dashboard | ✅ All Regions | ✅ Team | 🟠 Own Only | 🟠 Own Only | ✅ |
| Access Settings | ✅ All | 🟠 Limited | ❌ | ❌ | 🟠 |
| View Navigation Menu | ✅ All Items | ✅ Most Items | 🟠 Filtered | 🟠 Filtered | ✅ |
| Manage Global Settings | ✅ Yes | 🟠 Team Only | ❌ | ❌ | 🟠 |
| Feature | Admin | Manager | Sales Rep | Inside Rep | Status |
|---|---|---|---|---|---|
| View Customers | |||||
| - List View | ✅ All | ✅ Team | ✅ Own | ✅ Own | ✅ |
| - Detail View | ✅ Any | ✅ Team | ✅ Own | ✅ Own | ✅ |
| Create Customer | ✅ | ✅ Assign to Team | ✅ Assign to Self | ✅ Assign to Self | ✅ |
| Edit Customer | ✅ Any | ✅ Team Only | 🟠 Own Only | 🟠 Own Only | 🟠 |
| Delete Customer | ✅ | 🟠 Team Only | ❌ | ❌ | 🟠 |
| Search/Filter | ✅ All Data | ✅ Team Data | 🟠 Own Data | 🟠 Own Data | ✅ |
| Export Customers | ✅ | ✅ | ✅ | ✅ | 🟠 |
| Feature | Admin | Manager | Sales Rep | Inside Rep | Status |
|---|---|---|---|---|---|
| View Contacts | |||||
| - List View | ✅ All | ✅ Team | ✅ Customer’s | ✅ Customer’s | ✅ |
| - Detail View | ✅ Any | ✅ Team | ✅ Own Customer | ✅ Own Customer | ✅ |
| Create Contact | ✅ | ✅ Team Customers | ✅ Own Customer | ✅ Own Customer | ✅ |
| Edit Contact | ✅ Any | ✅ Team’s | ✅ Own Customer’s | ✅ Own Customer’s | ✅ |
| Delete Contact | ✅ | 🟠 Team Only | ❌ | ❌ | 🟠 |
| Feature | Admin | Manager | Sales Rep | Inside Rep | Status |
|---|---|---|---|---|---|
| View Opportunities | |||||
| - List View | ✅ All | ✅ Team | ✅ Own | ✅ Own | ✅ |
| - Pipeline View | ✅ All | ✅ Team | ✅ Own | ✅ Own | ✅ |
| Create Opportunity | ✅ | ✅ Assign to Team | ✅ Own | ✅ Own | ✅ |
| Edit Opportunity | ✅ Any | ✅ Team Only | 🟠 Own Only | 🟠 Own Only | ✅ |
| Mark Won/Lost | ✅ | ✅ Team | ✅ Own | ✅ Own | ✅ |
| Delete Opportunity | ✅ | 🟠 Team Only | ❌ | ❌ | 🟠 |
| Feature | Admin | Manager | Sales Rep | Inside Rep | Status |
|---|---|---|---|---|---|
| View Tasks | ❌ Restricted | ✅ Team + Own | ✅ Own | ✅ Own | 🟠 |
| Create Task | ❌ Restricted | ✅ Assign to Team | ✅ Own | ✅ Own | 🟠 |
| Edit Task | ❌ Restricted | ✅ Team + Own | ✅ Own | ✅ Own | 🟠 |
| Complete Task | ❌ Restricted | ✅ | ✅ | ✅ | 🟠 |
| Delete Task | ❌ Restricted | 🟠 Team Only | ❌ | ❌ | 🟠 |
| Feature | Admin | Manager | Sales Rep | Inside Rep | Status |
|---|---|---|---|---|---|
| View Commitments | ✅ All | ✅ Team | ✅ Own | ✅ Own | ✅ |
| Create Commitment | ✅ | ✅ Assign to Team | ✅ Own | ✅ Own | ✅ |
| Edit Commitment | ✅ Any | ✅ Team | ✅ Own | ✅ Own | ✅ |
| Mark Completed | ✅ | ✅ | ✅ | ✅ | ✅ |
| Feature | Admin | Manager | Sales Rep | Inside Rep | Status |
|---|---|---|---|---|---|
| View Calendar | 🟠 Mock Data | 🟠 Mock Data | 🟠 Mock Data | 🟠 Mock Data | 🔴 |
| Create Meeting | 🟠 | 🟠 | 🟠 | 🟠 | 🔴 |
| View Schedule | ❌ Restricted | ✅ Team + Own | ✅ Own | ✅ Own | 🟠 |
| Create Schedule Entry | ❌ Restricted | ✅ Team | ✅ Own | ✅ Own | 🟠 |
| Feature | Admin | Manager | Sales Rep | Inside Rep | Status |
|---|---|---|---|---|---|
| View Targets | ✅ All | ✅ Team | ✅ Own | ✅ Own | ✅ |
| Create/Edit Target | ✅ | ✅ Team | ❌ | ❌ | ✅ |
| View Daily Alerts | ❌ Restricted | ✅ Team | ✅ Own | ✅ Own | ✅ |
| Manage Alerts | ❌ Restricted | ✅ | ✅ | ✅ | ✅ |
| Feature | Admin | Manager | Sales Rep | Inside Rep | Status |
|---|---|---|---|---|---|
| User Management | |||||
| - View Users | ✅ All | 🟠 Team | ❌ | ❌ | ✅ |
| - Create User | ✅ | ❌ | ❌ | ❌ | ✅ |
| - Edit User | ✅ All | 🟠 Team | ❌ | ❌ | ✅ |
| - Deactivate User | ✅ | ❌ | ❌ | ❌ | ✅ |
| Permission Management | 🔴 Not Impl | 🔴 Not Impl | ❌ | ❌ | 🔴 |
| Region Management | |||||
| - View Regions | ✅ All | 🟠 Own | 🟠 Own | 🟠 Own | ✅ |
| - Manage Regions | ✅ | 🟠 Own | ❌ | ❌ | 🟠 |
| Group Management | |||||
| - View Groups | ✅ All | 🟠 Team | ❌ | ❌ | ✅ |
| - Create/Edit Groups | ✅ | 🟠 Team | ❌ | ❌ | 🟠 |
| Global Settings | ✅ | 🟠 | ❌ | ❌ | 🟠 |
Type: Super Access | Primary: System Administration
All Modules Accessible:
Restrictions:
Type: Super Access | Primary: Team Oversight & Approval
All Modules Accessible (with team scope):
Restrictions:
Type: Standard | Primary: Field Sales Operations
Modules with Limited Access:
No Access:
Can Manage:
Type: Standard | Primary: Office-based Sales Operations
Same as Sales Rep + Office Scope:
Differences from Sales Rep:
✅ user.view - View user list
✅ user.create - Create new user (Admin only)
✅ user.edit - Edit user details
✅ user.delete - Deactivate user (Admin only)
✅ dashboard.view - Access dashboard
✅ dashboard.filter - Apply dashboard filters
✅ dashboard.refresh - Refresh dashboard data
🔴 customer.view - View customers
🔴 customer.create - Create customer
🔴 customer.edit - Edit customer
🔴 customer.delete - Delete customer
🔴 contact.view - View contacts
🔴 contact.create - Create contact
🔴 contact.edit - Edit contact
🔴 contact.delete - Delete contact
🔴 opportunity.view - View opportunities
🔴 opportunity.create - Create opportunity
🔴 opportunity.edit - Edit opportunity
🔴 opportunity.delete - Close/delete opportunity
🔴 task.view - View tasks
🔴 task.create - Create task
🔴 task.edit - Edit/complete task
🔴 task.delete - Delete task (Manager only)
🔴 commitment.view - View commitments
🔴 commitment.create - Create commitment
🔴 commitment.edit - Edit commitment
🔴 target.view - View targets
🔴 target.create - Set targets (Manager/Admin)
🔴 region.view - View regions
🔴 region.manage - Manage regions
🔴 group.view - View groups
🔴 group.manage - Manage groups
🔴 setting.view - View settings
🔴 setting.edit - Edit settings
🔴 permission.view - View permissions
🔴 permission.manage - Manage permissions
👤 Your Own Data
USER -> Can view/edit own records
Can view own customer's related data
Can view own team's data tasks (if Manager)
👥 Team Data
MANAGER -> Can view team members' data
Can view team customers
Can assign tasks to team
Can set team targets
🏢 Regional/Office Data
REGION_FILTER -> All users see only their region
OFFICE_FILTER -> Inside reps see only their office
🌍 Global Data
ADMIN -> Can view all data across all regions
MANAGER -> Can view all team data across regions
❌ Same customer/opportunity cannot be edited by 2+ users simultaneously
❌ Cannot view another user's private notes or tasks
✅ Can view shared team tasks assigned to you
✅ Can view team member's customer if it's a shared customer
When Customer is deleted:
├─ Contacts (cascade delete) ❌ Sales Rep cannot see
├─ Opportunities (archive or delete)
├─ Tasks (reassign or archive)
└─ Commitments (mark complete or archive)
When Contact is deleted:
├─ Tasks related to contact (mark invalid)
└─ Commitments (mark complete)
When User is deleted:
├─ Assign customers to manager
├─ Reassign tasks
├─ Archive opportunities
└─ Reassign commitments
Design Decision: Tasks are field-level operations
Admin visibility could compromise field rep independence
Workaround: Manager can view team tasks
Design Decision: Schedule is personal planning tool
Admin visibility compromises privacy
Workaround: Manager can view team schedules for coordination
Design Decision: Alerts are operational indicators for field reps
Admin visibility unnecessary (has dashboard)
Workaround: Daily alerts auto-aggregate to manager
Design Decision: Maintain audit trail for all field activities
Prevents accidental data loss
Workaround: Admin/Manager can delete if necessary
Sales Rep Views Customer:
├─ Full name ✅ (own)
├─ Email ✅
├─ Phone ✅
├─ Address ✅
├─ Billing history ✅
├─ Contact history ✅
├─ Internal notes ✅ (own)
├─ Manager notes ✅ if visible
└─ Assigned rep ✅ (shows as "Self")
Manager Views Sales Rep's Customer:
├─ Full name ✅
├─ Email ✅
├─ Phone ✅
├─ Address ✅
├─ Billing history ✅
├─ Contact history ✅
├─ Internal notes ✅ (team visibility)
├─ Manager notes ✅ (full)
└─ Assigned rep ✅ (shows team member name)
Admin Views Any Customer:
├─ All fields ✅
├─ Internal notes ✅ (all)
├─ System audit ✅
└─ Can see "masked" fields
Current State (RBAC):
1. User has "Sales Rep" role
2. Has implicit access to all sales rep features
3. Restrictions via route-level middleware
New State (PBAC - Planned):
1. User record stores array of permissions
2. Each permission checked at UI and API
3. Example: user.permissions = [
"customer.view",
"customer.create",
"opportunity.view",
"opportunity.create",
"opportunity.edit"
]
4. Missing: "customer.edit", "opportunity.delete"
5. UI hides "Edit" button for customers
6. API rejects edit request if permission missing
4 Roles × 17 Modules × 5 CRUD Operations = 340 Primary Tests
└─ Plus edge cases ≈ 750+ total tests ✅ (Playwright suite)
1. Admin full access (baseline)
2. Manager team-scoped access (verify scoping works)
3. Sales Rep own-only access (verify restrictions)
4. Inside Rep variations (document differences)
5. Cross-role scenarios (Admin viewing Sales Rep's data)
6. Permission combos (edge permissions)
| Symbol | Color | Meaning | Action |
|---|---|---|---|
| ✅ | Green | Fully Implemented & Working | Use in production |
| 🟡 | Yellow | Partial/Issues | Document limitations |
| 🔴 | Red | Not Implemented | Mark as blocker |
| 🟠 | Orange | In Progress/Design | Plan completion |
| ❌ | Red X | No Access / Restricted | Works as designed |
Last Updated: April 8, 2026
Next Update: Post-PBAC Migration (Target: April 15, 2026)
Repository: WCW CRM Frontend - Playwright Test Suite
Maintained By: QA Team