3.2 KiB
3.2 KiB
Manager Phase 1 — Shell, navigation, dashboard, and personal learning
Delivered
- Manager-specific navigation now labels Dashboard, My team, Team learning, Team courses, Reports, Notifications, and Personalization clearly.
My learningis permission-aware and appears only withlearning.personal.view.- Manager personal learning reuses the learner home API and learner player; no second player or learning domain was introduced.
- The Manager player route stays under
/manager/my-learning/:assignmentId, while backend ownership remains tied to the authenticated user's assignment. - The dashboard now provides real compact KPIs for team members, active learners, completion rate, overdue learning, and upcoming deadlines.
- Needs Attention remains the main actionable panel and links only to scoped team members.
- Team course progress, upcoming deadlines, personal continue-learning, and recent team activity use real backend records.
- A manager without an assigned team receives a useful empty state and retains a direct route to personal learning.
Data contract additions
GET /api/v1/manager/workspace adds:
overview.activeLearnersoverview.dueSoonrecentActivity[]
Recent activity is selected only after managed-team member IDs and organization scope are resolved. The query is bounded to eight records and does not add an N+1 query.
Responsive and accessibility decisions
- The dashboard uses existing semantic design tokens for light/dark compatibility.
- Navigation keeps icon and text labels, visible focus, keyboard drawer behavior, and minimum touch targets.
- Progress visuals now expose
progressbar, min/max, and current value semantics. - Dense desktop KPI layout reflows to three, then two columns; dashboard panels and personal-learning rows become single-column where needed.
- Automated browser checks cover 375, 768, and 1440 pixel widths with no document-level horizontal overflow.
- Reduced-motion behavior continues to come from the shared application foundation.
Behavior intentionally deferred
- Send Reminder and team learning assignment remain unavailable until Phase 3 backend permissions and recipient scoping exist.
- Skills snapshot is not shown because the Manager workspace does not yet return a verified team skill model; this belongs to Phase 4.
- Approvals are not shown because no approval domain/workflow currently exists.
- Saved reports and pending approvals are not fabricated.
Verification
- Backend authorization and workspace tests
- Manager dashboard and personal-learning component tests
- Shared learner player regression tests
- Manager navigation permission tests
- Full frontend and backend test suites
- Frontend lint, TypeScript, and production build
- PHP Pint format check
- Playwright Manager desktop/tablet/mobile smoke test
Deferred technical debt
Medium
- The production bundle already reports chunks over 500 kB. Route-level splitting should be handled as a dedicated performance task rather than mixed into Manager Phase 1.
Low
- The local seeded Manager has no personal assignment by default, so the browser smoke test validates the honest empty state. Assigned-course rendering and ownership are covered by frontend and backend automated tests.