60 خطوط
3.2 KiB
Markdown
60 خطوط
3.2 KiB
Markdown
# 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 learning` is permission-aware and appears only with `learning.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.activeLearners`
|
|
- `overview.dueSoon`
|
|
- `recentActivity[]`
|
|
|
|
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.
|