Files
alla-allaos-fullstack/docs/implementation/task-j-crm-dashboard-kpi.md
phaichayon 04a886ea26 task-j1
2026-06-17 16:04:19 +07:00

75 lines
3.2 KiB
Markdown

# Task J: CRM Dashboard KPI and Sales Analytics
## Files added
- `src/features/crm/dashboard/api/types.ts`
- `src/features/crm/dashboard/api/service.ts`
- `src/features/crm/dashboard/api/queries.ts`
- `src/features/crm/dashboard/server/service.ts`
- `src/features/crm/dashboard/components/crm-dashboard.tsx`
- `src/features/crm/dashboard/components/dashboard-filters.tsx`
- `src/features/crm/dashboard/components/dashboard-summary-cards.tsx`
- `src/features/crm/dashboard/components/dashboard-funnel.tsx`
- `src/features/crm/dashboard/components/dashboard-revenue-cards.tsx`
- `src/features/crm/dashboard/components/dashboard-sales-ranking.tsx`
- `src/features/crm/dashboard/components/dashboard-followups.tsx`
- `src/features/crm/dashboard/components/dashboard-approval-metrics.tsx`
- `src/features/crm/dashboard/components/dashboard-hot-projects.tsx`
- `src/app/api/crm/dashboard/route.ts`
- `src/app/api/crm/dashboard/export/route.ts`
## Files modified
- `src/app/dashboard/crm/page.tsx`
- `src/config/nav-config.ts`
- `src/lib/auth/rbac.ts`
- `src/lib/searchparams.ts`
- `docs/implementation/technical-debt.md`
## KPI widgets added
- Replaced the CRM placeholder route with a production dashboard at `/dashboard/crm`.
- Added summary cards for lead, opportunity, quotation, and revenue metrics.
- Added a funnel widget for lead -> opportunity -> quotation -> pending approval -> approved -> closed won.
- Added a hot-project widget based on real enquiry data.
## Revenue analytics added
- Added top end-customer, billing-customer, contractor, and consultant revenue tables.
- Reused the Task D.2.1 reporting helpers so revenue attribution follows the frozen governance rules.
- Added export support for revenue analytics through the dashboard export route.
## Sales ranking added
- Added a production sales ranking table using enquiry assignment and quotation salesman ownership rules.
- Added CSV export for sales ranking.
## Approval and follow-up analytics added
- Added approval KPI cards and a `My Pending Approvals` table.
- Added follow-up KPI cards and an `Upcoming Follow Ups` table from enquiry and quotation follow-up sources.
## Export and permissions added
- Added `crm.dashboard.read`.
- Added `crm.dashboard.export`.
- Added audit logging for `crm_dashboard_export` with `export_csv` and `export_excel`.
- Added sidebar navigation for the CRM dashboard.
## Remaining risks
- `closed_won` is not yet a first-class enquiry lifecycle field, so the dashboard currently uses quotation status `accepted` as the practical won-stage proxy.
- follow-up completion is inferred from `outcome` presence because the follow-up model still has no explicit completion flag.
- the global `Project Party Role` filter currently influences revenue analytics and exports, but the rest of the dashboard still depends mainly on enquiry and quotation core filters.
- sales users currently read organization-wide dashboard data; own-scope filtering is still future work.
## Task K readiness
- the CRM dashboard now uses real production data
- KPI widgets are live
- revenue analytics is reusable
- sales ranking is exportable
- approval and follow-up analytics exist
- export and audit hooks are in place
- the app is ready for Task K report-center expansion