TorbatYar/frontend/docs/crm-validation-report.md
Mortezakoohjani e140908034 Ship enterprise CRM frontend with real API wiring and thin app routes.
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>
2026-07-26 20:58:17 +03:30

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

  • CrmPageError maps CrmApiError 403 → 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.ts resolve to generated routes
  • Hub → sales portal → all sub-pages
  • Catalog tile: apps-catalog.ts/crm/hub status available

Design system validation

  • CRM uses @/components/ds only (no duplicate atoms)
  • Module accent via --crm-accent tokens
  • Consistent CrmTablePage / PageHeader / card radius rounded-2xl

Known limitations (by design)

  1. No server-side search/filter/sort — client-side only
  2. No list total count from API — pagination is approximate
  3. Tasks/meetings: no update/delete API in backend 6.3
  4. /capabilities endpoint missing — health version shown instead

Recommendations (future)

  1. Add GET /capabilities to CRM backend for discovery UI
  2. Add server-side filter params when backend supports them
  3. Shared useCrmPermission() hook when Identity exposes user permissions to FE