Appearance
Attribute Definitions
| Backlog field | Value |
|---|---|
| Story ID | INV-DASH-002 |
| 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
Define reusable item characteristics and allowed values used to form item variants.
User stories
- As a catalog administrator, I want to create attributes and allowed values so that variants are described consistently.
- As a catalog user, I want to assign attribute groups to items so that valid variant combinations can be generated.
- As an auditor, I want to view and export attribute definitions and values.
Acceptance criteria
- An attribute definition has a unique required identity and at least the values required by its configuration.
- Values can be added, edited, viewed, activated/deactivated, and removed subject to permission and dependency rules.
- Generated item variants do not contain duplicate attribute combinations.
- Attributes or values already used by item variants cannot be destructively removed from history.
- List, view, add, edit, delete, activate, and export actions are permission-controlled.
Required and optional data
- Attribute group English and Arabic names are required, unique, and limited to 50 characters.
- Attribute values require their localized identity and owning group.
- Value lists are required only when an attribute group is used to generate controlled variants.
- Active state controls future selection; it must not remove values from existing variant descriptions.
Variant effect
Assigning groups/values to an item generates or enables unique attribute combinations. The same combination cannot create two variants. Removing a group/value is blocked when it would invalidate referenced variants, stock, barcodes, prices, or transactions.
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) | LayoutPageComponent | List/navigation | Guards: AuthGuard, moduleLicenseGuard | Feature token match | apps/inventory/src/app/remote-entry/entry.routes.ts:6 |
| attribute-definition | AttributeDefinitionComponent | List/navigation | Permission: AppInventoryPermissions.ItemAttributesGroup_List,; Guards: PolicyAuthGuard | Feature token match | apps/inventory/src/app/remote-entry/items/items.module.ts:377 |
| masterdata | Lazy-loaded route | List/navigation | No route-level permission/guard found in source window | Feature token match | apps/inventory/src/app/remote-entry/entry.routes.ts:22 |
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) - List/navigation: Load an authorized paged/searchable list or navigation page; preserve filters/sort/paging and expose only permitted row and bulk actions. Security observed: Guards: AuthGuard, moduleLicenseGuard
- attribute-definition - List/navigation: Load an authorized paged/searchable list or navigation page; preserve filters/sort/paging and expose only permitted row and bulk actions. Security observed: Permission: AppInventoryPermissions.ItemAttributesGroup_List,; Guards: PolicyAuthGuard
- masterdata - List/navigation: Load an authorized paged/searchable list or navigation page; preserve filters/sort/paging and expose only permitted row and bulk actions. Security observed: No route-level permission/guard found in source window