Admin Portal Feature Parity & Portal-Wide Sorting/Filtering (QA)
Executive summary
This QA release rolls up two large frontend efforts into the testing environment: a comprehensive Admin Portal parity pass that closes the remaining feature gaps against the legacy admin portal, and a sorting & filtering revamp that brings consistent 3-state column sorting and in-column filters to every admin and vendor data grid. It also includes a new Meta Entities management page and a batch of contact/department form alignment fixes.
Why this was needed
The new frontend admin portal was missing capabilities that existed in the legacy backend admin portal, forcing administrators to fall back to the old tool for certain tasks (managing folder assignments, role permissions, meta entities, tenant upload centers, etc.). Separately, data grids across the product had inconsistent and incomplete sort/filter behavior. This work audits the legacy portal feature-by-feature to close those gaps and standardizes grid interaction so the new portal can fully replace the legacy one.
Client / user impact
- Administrators can now manage folders (assignments, system-folder flag, bulk delete with hard-delete/reassign), users (contact name + status/tenant/role filters), tenants (optional upload-center creation), rules, roles+permissions, templates, and policies entirely from the new portal.
- A new Meta Entities page lets admins search, view, and safely delete meta entities with a dry-run preview before unlinking.
- The Dashboard now shows live stat cards (Tenants, Users, Roles, Documents Today) and more quick actions.
- Every admin and vendor table supports click-to-cycle sorting (none -> ascending -> descending) and in-column status/type filters, giving a consistent, predictable grid experience.
Technical scope
Frontend-only change (71 files, ~+4,526/-485) promoting dev to qa. Two feature branches plus fixes:
- Admin parity (PR #914): New
meta-entities/page.tsx(+ types, routes, services, queries, mutations); reworkedRoleFormDialogwith permissions dual-list and newCreatePermissionForm; Folder form Assignments section + System Folder toggle (Code field removed to match backend); Userscontact_name+ filters; Tenantcreate_upload_centerswitch; Rules bulk/permanent delete + status filter; Template locale/tenant fields; Policy tenant/roles/permissions targeting; Dashboard stat cards + skeletons. - Sorting/filtering revamp (PR #913): New shared
@dsm/ui/grid-filtersmodule (types +formatFiltersForAPI); newSortableColumnHeader,ColumnFilterPopover,AppliedFiltersDisplay; server-side 3-state sort wired across ~14 admin pages with pagination reset; vendor upload-activitySortableTableHeadfor Files/Tasks tabs. - Fixes: Contact create/update payload aligned to backend schema (email/phone optional); department list deduplication; folder Delete renamed to Deactivate; permission-list invalidation and counter (negative/double-count) fixes; revert of a Docker buildx change.
Risk & mitigation
Moderate breadth — this touches nearly every admin grid page and several shared UI components, so a regression in the sort/filter infrastructure could affect many screens at once. Risk is contained to the frontend (no backend changes here), and the sort/filter logic is centralized in shared components, making behavior consistent and easier to verify. Note: at least two flows depend on backend behavior outside this PR — user-linked contact updates and bulk operations — where backend 500s have been observed; these should be confirmed against the QA backend.
QA validation focus
- Load every admin page (Folders, Users, Tenants, Rules, Roles, Templates, Policies, Meta Entities, Dashboard) and confirm no errors.
- On each grid, click a column header and confirm the 3-state cycle (unsorted -> asc -> desc) and that sorting resets to page 1.
- Verify in-column filters: Folders (Only Active / System), Users (status/tenant/role), Rules (status), Email Reminders (All/Active/Paused).
- Exercise CRUD: create a Role with assigned + inline-created permissions; create a Folder with assignments and the System toggle; create a Tenant with the Upload Center option.
- Meta Entities: search, type filter, View Detail, and Delete with dry-run preview.
- Confirm Dashboard stat cards load and quick actions navigate correctly.
- Vendor upload activity: confirm Files and Tasks tab sorting works.
- Confirm contact create/edit and department creation succeed; watch for backend 500s on user-linked contact updates and bulk deletes.