Files
L-Ami-Fiduciaire/_bmad-output/implementation-artifacts/2-3-review-notes.md
Saad Zoubir a02b5f12d8 feat: implement Story 2.4 — Dashboard Activity Feed with review fixes
Add role-scoped activity feed to the dashboard showing the 20 most recent
workspace events. Owners/Managers see all activity (declarations, clients,
team changes); Workers see only their assigned declarations. Includes
French descriptions, relative timestamps, responsive layout (desktop
sidebar, tablet inline, mobile collapsible), and 7 passing Pest tests.

Review fixes applied: batch-load declarations/clients/users to eliminate
N+1 queries, consistent soft-delete handling in URL resolution, French
grammar singular/plural fix, missing icon map entry, and corrected tablet
breakpoint per spec.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 21:21:07 +01:00

2.0 KiB

Story 2.3 Code Review — Deferred Findings

Review date: 2026-03-22 Story: 2.3 — Worker-Scoped Dashboard Reviewer: BMAD adversarial code review (3-layer)

These items are pre-existing issues surfaced during the Story 2.3 code review. They are not caused by 2.3 changes but should be addressed in future work.


D-1 — Nudge/Reassign dropdown items unconditionally disabled

Severity: Medium Location: resources/js/pages/Dashboard.vue — DropdownMenu items "Relancer" and "Réassigner" Affects: Epic 3, Story 3-2 (One-Click Nudge System)

The dropdown actions are hardcoded as disabled for all roles. The spec implies they should be enabled for Owners/Managers once the nudge system is built. When implementing Story 3-2, enable these actions for Owner/Manager roles and keep them disabled (or hidden) for Workers.


D-2 — StatCard assignee param not consumed by declarations index

Severity: Low (intentional) Location: app/Http/Controllers/DashboardController.php$assigneeParam Affects: Epic 4, Story 4-1 (FilterBar Component)

The assignee={user.id} URL parameter is included in StatCard hrefs but the declarations list page does not yet filter by it. This is by design — the param exists for forward compatibility. When implementing Story 4-1/4-2 (FilterBar), ensure the assignee query param is recognized and applied as a default filter.


D-3 — Cache not invalidated on role change

Severity: Low Location: app/Http/Controllers/DashboardController.phpCache::remember() with key dashboard:{workspace_id}:{user_id} Affects: Cross-cutting (cache architecture)

If a user's role changes (e.g., worker promoted to manager), the cached dashboard data remains scoped to the old role for up to 5 minutes (TTL). Current risk is low given the short TTL. If role management gets a dedicated story or if TTL is increased, add cache invalidation on role change events (e.g., listen for WorkspaceUser updated event and Cache::forget() the affected key).