Connect all CRM pages to the BFF and CRM service, add module docs, and mark CRM available in the SuperApp catalog. Co-authored-by: Cursor <cursoragent@cursor.com>
3.2 KiB
3.2 KiB
CRM Validation Report
Date: 2026-07-26
Scope: CRM frontend (modules/crm/, app/crm/)
Quality gates
| Gate | Result | Notes |
|---|---|---|
npm run typecheck |
✅ Pass | All CRM modules type-clean |
npm run lint |
✅ Pass | No CRM-specific warnings |
npm run validate:architecture |
✅ Pass | No cross-domain imports |
npm run build |
⚠️ Compile OK | Typecheck in build passed; final step hit transient Next font-manifest env error |
Route validation
| Check | Count | Status |
|---|---|---|
| Required pages (spec) | 41 | ✅ Generated |
Thin page.tsx (re-export only) |
41 | ✅ |
loading.tsx per route |
41 | ✅ |
error.tsx per route |
41 | ✅ |
| Sales layout + portal gate | 1 | ✅ |
| Root layout + not-found | 2 | ✅ |
API validation
| Domain | Connected | Mock/placeholder removed |
|---|---|---|
| Leads | ✅ CRUD + assign + restore | ✅ |
| Contacts | ✅ CRUD + delete | ✅ |
| Organizations | ✅ CRUD + delete | ✅ |
| Opportunities (deals) | ✅ CRUD + stage + win/lose | ✅ |
| Pipelines | ✅ CRUD | ✅ |
| Activities | ✅ CRUD + complete | ✅ |
| Tasks | ✅ create + complete | ✅ |
| Meetings, Calls | ✅ create + list | ✅ |
| Quotes | ✅ CRUD | ✅ |
| Tags, Notes, Attachments, Custom fields | ✅ | ✅ |
| Timeline, Mentions | ✅ list / read | ✅ |
| Team roles/members | ✅ partial (no role list API) | ✅ honest UI |
| Campaigns, Segments, Import, Automation, Integrations, API keys | N/A backend | ✅ scope notice (no fake data) |
CRUD validation
| Operation | Supported pages |
|---|---|
| Create | All entity list pages via Dialog |
| Read | All list + dashboard aggregates |
| Update | leads, contacts, companies, deals, activities, quotes, pipelines |
| Delete | leads, contacts, companies (+ bulk) |
| Restore | leads only (API) |
| Archive | via soft-delete flags in list filter |
| Export | client CSV on export page + per-entity export button |
| Import | scope notice — no API |
Permission validation
CrmPageErrormapsCrmApiError403 → permission empty state- Static permission tree on
/crm/sales/permissions - No client-side RBAC gate (matches platform pattern); server enforces JWT roles
Navigation validation
- All sidebar links in
constants/portals.tsresolve to generated routes - Hub → sales portal → all sub-pages
- Catalog tile:
apps-catalog.ts→/crm/hubstatusavailable
Design system validation
- CRM uses
@/components/dsonly (no duplicate atoms) - Module accent via
--crm-accenttokens - Consistent
CrmTablePage/PageHeader/ card radiusrounded-2xl
Known limitations (by design)
- No server-side search/filter/sort — client-side only
- No list total count from API — pagination is approximate
- Tasks/meetings: no update/delete API in backend 6.3
/capabilitiesendpoint missing — health version shown instead
Recommendations (future)
- Add
GET /capabilitiesto CRM backend for discovery UI - Add server-side filter params when backend supports them
- Shared
useCrmPermission()hook when Identity exposes user permissions to FE