Skip to content

Projects workload heatmap (1.6.0) — Production Readiness Audit ​

FieldValue
Date2026-09-29
Re-verified2026-09-29 — Pest Heatmap 4/4 + catalog bump; docs updated
StatusGo for production (merge/deploy remaining)
ScopeWorkload Heatmap view + GET /projects/heatmap; catalog projects 1.5.0 → 1.6.0
BackendProjectService::heatmap; route before {project}; migrate-only bump + CatalogSeeder; Pest ProjectHeatmapTest
FrontendBoard/List/Gantt/Heatmap toggle; assignee × week cells; pressure band; Playwright workflow coverage
DocsUser/developer/API/deployment/roadmap/changelog + upgrade + this audit
CompanionProjects deployment · Overview · API · CHANGELOG

Executive summary ​

Projects list gains a Heatmap view mode. The API returns per-assignee rows with weekly buckets (open project schedule overlap + soft project Tasks due that week when entitled) under the same filters and visibility as list/board/Gantt. Pressure score/band mirrors the CRM Analytics staff-workload idea. No new permissions, queues, scheduler entries, or env vars.

Go / No-Go: Go.

GateResult
Platform freezePass
Visibility parity with list (non-assign)Pass — Pest
Soft Tasks only when entitled + tasks.view + Task policy / assign scopePass — Pest
Catalog migrate-only 1.6.0 + CatalogSeederPass
SPA Board / List / Gantt / Heatmap togglePass
Playwright Projects workflow includes HeatmapPass (coverage added; full suite env-dependent)
User / developer / API / deployment / roadmap / changelogPass
New permission / env / queue / seeder for cutoverN/A

Security summary ​

ControlStatus
No new Spatie permissionsPass
module:projects + projects.view / viewAnyPass
Project visibility scope reused from listPass
Soft Tasks gated by entitlement + tasks.view + assign scope / Task policyPass
Tenant isolation unchangedPass

No open residuals.


Change inventory ​

Backend ​

  • GET /projects/heatmap (projects.heatmap) before {project} show route
  • ProjectService::heatmap — filters/visibility via query(); weeks 1–16 (default 8); soft Tasks; pressure score
  • Migration 2026_09_29_010000_bump_projects_module_version_to_1_6_0
  • CatalogSeeder projects 1.6.0
  • Pest: ProjectHeatmapTest (4) + ProjectsModuleVersion160BumpTest

Frontend ​

  • projects-heatmap.tsx + list view mode Heatmap
  • Types / projectService.heatmap / QUERY_KEYS.projectHeatmap
  • Playwright Heatmap assertion in projects workflow

Docs ​

  • User / developer / API / deployment / roadmap / changelog
  • Upgrade note 1.5.0 → 1.6.0
  • This production readiness audit

Test evidence ​

SuiteResultNotes
herd php artisan test --compact tests/Feature/Tenant/Project/ProjectHeatmapTest.php4 passedSoft tasks; no-tasks entitlement; visibility; overdue pressure
Catalog bump PestPassProjectsModuleVersion160BumpTest
Playwright test:e2e:projectsCoverage addedRun against live API/demo when env available

Staging smoke ​

  1. php artisan migrate --force — catalog → 1.6.0 (do not db:seed).
  2. Deploy Frontend with Projects Heatmap view.
  3. Open dated project with assignee → Heatmap → row + week cell load.
  4. With Tasks entitled, project task due this week increases cell load / open_tasks.
  5. Staff without projects.assign: only their visible projects’ assignees appear.
  6. Without Tasks entitled: includes_tasks=false, task counts stay 0.

Rollback ​

Roll back Frontend first (hides Heatmap UI). Catalog bump down restores display version 1.5.0; endpoint absence follows Backend code rollback.

Official documentation for the EloSync SaaS Platform.