Appearance
Inventory Dashboard
| Backlog field | Value |
|---|---|
| Story ID | INV-DASH-001 |
| Epic | Inventory |
| Story type | Dashboard |
| Review status | Draft - business analyst and business owner review required |
| Source evidence | Inventory MFE route/form, Inventory.Apis controller, application command/query handlers, validators, domain entities, and posting services |
| Last source review | 2026-07-10 |
Purpose
Give managers a current operational view of inventory activity, stock distribution, and risks.
User stories
- As a branch manager, I want to see inventory totals and stock-movement statuses so that I can identify unfinished or unusual activity.
- As an inventory controller, I want to see stock distributed by warehouse and category so that I can focus on material locations.
- As an inventory controller, I want to see recent stock-in and stock-out transactions so that I can monitor daily operations.
- As a warehouse user, I want to see expiring tracked items so that I can act before stock becomes unusable.
Acceptance criteria
- The dashboard shows only data within the user's company/branch scope.
- Totals, category data, warehouse data, status counts, recent stock-in, recent stock-out, and expiry information load independently.
- Warehouse summary navigation opens the Warehouses feature.
- Empty datasets show an empty state rather than a misleading zero-filled chart.
- An unavailable widget does not prevent the remaining dashboard widgets from being used.
- Dates, names, and numbers follow the current language and user preferences.
Data shown and interactions
- Inventory totals summarize authorized on-hand data.
- warehouse and category charts group current stock distribution.
- status chart groups Stock In/Out transaction statuses.
- recent Stock In and Stock Out widgets use the configured result count.
- expiry items show tracking number and expiry context for actionable stock.
- Clicking the warehouse summary navigates to the Warehouses page and still requires its List permission.
- Dashboard data is read-only; clicking a chart must not post, adjust, reserve, or revalue stock.
- Each widget has independent loading/error/empty states so one failed query does not misrepresent the others.
Frontend page coverage
The following UI coverage is sourced from the pulled MFE route configuration. A Module-level supporting artifact mapping is evidence of a reachable screen, but requires BA confirmation that it belongs to this story rather than a more specific feature story.
| Route/page | Component | Mode | Route permission/guard | Mapping confidence | Source |
|---|---|---|---|---|---|
| (module default) | InventoryDashboardComponent | Dashboard | No route-level permission/guard found in source window | Feature token match | apps/inventory/src/app/remote-entry/dashboard/dashboard.module.ts:12 |
Observed frontend fields and validation
| Component | Control | Observed frontend rule | Component source |
|---|---|---|---|
| - | - | No reactive formControlName controls were found for the routed components; review template-driven/shared child components. | Route sources above |
Observed frontend actions
| Component | Click action/handler | Business review requirement | Component source |
|---|---|---|---|
| - | - | No direct (click) handler was found; review shared toolbar/table commands and form submission bindings. | Route sources above |
Page-specific frontend acceptance criteria
- (module default) - Dashboard: Load authorized summary values consistently with source reports, support exposed date/branch filters, and handle empty/error states. Security observed: No route-level permission/guard found in source window