Documentation
adrs/032-unit-of-measure-system.md
ADR-032: Unit of Measure System
Status
Accepted
Context
The catalog component currently uses a simple attribute system with basic data types and units stored as simple text abbreviations. This approach has several limitations:
- No standardization: Units are free text with no validation
- No relationships: Cannot enforce which units are valid for which physical quantities
- No metadata: Missing important information like symbols, conversion factors
- Poor internationalization: No support for locale-specific unit display
- Industrial requirements: Need ISO 80000/SI compliance for enterprise clients
As the system scales to support industrial asset tracking, we need a robust measurement framework that ensures data integrity and supports scientific accuracy.
Decision
We will implement a comprehensive Unit of Measure (UoM) system based on ISO 80000/SI standards to replace the simple attribute type system.
Implementation Details
- Create four new database tables:
quantity_categories,quantities,units_of_measure, andquantity_units_of_measure - Establish many-to-many relationships between quantities and units
- Include comprehensive reference data for common measurements
- Support Unicode symbols for proper unit display
- Implement validation to ensure unit-quantity compatibility
Consequences
Positive
- Standards compliance: ISO 80000/SI alignment for industrial applications
- Data integrity: Enforced relationships prevent invalid unit associations
- Extensibility: Easy to add new quantities and units
- Future-ready: Foundation for unit conversion and calculations
- Professional: Meets enterprise requirements for measurement systems
Negative
- Migration complexity: Existing data must be transformed
- Increased complexity: More tables and relationships to manage
- Performance overhead: Additional joins for unit lookups
- Learning curve: Developers need to understand the new model
Neutral
- Reference data must be maintained and versioned
- UI components need updates to use the new system
- API contracts change to support quantity/unit relationships
Decision Drivers
- Customer requirements for ISO standards compliance
- Need for scientific measurement accuracy
- Support for multiple industries with different unit preferences
- Data validation and integrity requirements
- Future requirements for unit conversions
Considered Options
Option 1: Keep Simple Attribute System
- Pros: No migration needed, simpler model
- Cons: Doesn't meet requirements, no validation
Option 2: Third-party Library
- Pros: Pre-built functionality, tested code
- Cons: External dependency, may not fit our model
Option 3: Custom UoM System (Selected)
- Pros: Tailored to our needs, full control, standards-compliant
- Cons: Development effort, maintenance responsibility
Related Decisions
- ADR-005: Separation of abstractions and implementations
- ADR-024: FluentValidation for input validation
- ADR-027: Component interaction patterns
Links
- Linear Project: Unit of Measure System Enhancement
- Feature Spec: Feature Specification Document
- Linear Issue: SWE-128
- Migration:
20250917154305_AddUomSystem - Documentation:
/docs/features/unit-of-measure-system/
Notes
This decision represents a significant enhancement to the catalog component's capabilities and sets the foundation for advanced measurement features in future releases.
Date: 2025-01-17
Author: Core Platform Team
Reviewed by: Pending