This repository was archived by the owner on May 29, 2026. It is now read-only.
feat(dashboard): apply spec#330
Merged
Merged
Conversation
Re-applies openspec/changes/dashboard on top of the manifest-v1 migration. The original PR #135 targeted a top-level Dashboard.vue that no longer exists; this re-apply adopts the new manifest-driven shell. REQ-DASH-003 — Cases by Type - Add typeBreakdown aggregation to KpiAggregationService (grouped open cases by caseType, ordered descending) - Add cases-by-type widget entry + layout slot to src/manifest.json (row 2: cases-by-status / cases-by-type / my-work, 4 cols each) - New src/views/dashboard/CasesByType.vue with click-to-filter on /cases?caseType= navigation - Update KpiAggregationServiceTest + KpiControllerTest for the new typeBreakdown key and DB query count (8 -> 9) Sibling widget route fix (extends spec T03 to all five widgets that had the same bug — only CasesOverviewWidget was in scope per the proposal, but five others referenced the same non-existent route) - Replace `.dashboard.index` with `.dashboard.page` in OverdueCases, MyTasks, Stalled, TaskReminders, DeadlineAlerts widgets T02 (registerDashboardWidget calls in Application.php) was already in place from a prior change and required no edits. Gates run locally: composer lint, phpcs (no new errors on production code), psalm (no errors), phpunit (135/135 tests pass), eslint (CasesByType.vue clean), webpack build (succeeds).
Contributor
Quality Report — ConductionNL/procest @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ❌ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ❌ | ||||
| stylelint | ❌ | ||||
| composer | ✅ | ✅ 100/100 | |||
| npm | ✅ | ✅ 407/407 | |||
| PHPUnit | ⏭️ | ||||
| Newman | ⏭️ | ||||
| Playwright | ❌ |
Spec coverage: 3% (21 tests / 613 specs)
Quality workflow — 2026-05-11 05:53 UTC
Download the full PDF report from the workflow artifacts.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Applies
openspec/changes/dashboardon top of the manifest-v1 migration.CasesByType.vuewidget + manifest entry +KpiAggregationService.getTypeBreakdown()aggregation. Click-to-filter navigates to/cases?caseType=…..dashboard.index→.dashboard.pagein five sibling widgets that had the same non-existent-route bug (OverdueCases,MyTasks,Stalled,TaskReminders,DeadlineAlerts). Spec only scopedCasesOverviewWidget; per workspace rule "fix all issues encountered", the rest were swept too.Application::register()already callsregisterDashboardWidget()for every widget.typeBreakdownkey + DB query count (8 → 9).build.jsonupdated with re-apply note referencing the original PR Implement: Dashboard #135 commit.Context
The original PR #135 (commit
50db73f) implemented this against a top-levelDashboard.vuethat was deleted by theprocest-manifest-v1change (PR #320). This re-apply matches the new manifest-driven shell.Test plan
composer lint— passescomposer phpcson changed production code — no new errors (3 added errors in test files match the pre-existing positional-arg pattern used by every other PHPUnit test in the repo)composer psalm— no errorscomposer test:unit— 135/135 tests passnpm run lintonCasesByType.vue— cleannpm run build— webpack succeedsSpec artefacts
openspec/changes/dashboard/proposal.mdopenspec/changes/dashboard/tasks.md(already all[x])openspec/changes/dashboard/specs/dashboard/spec.md