feat(domain): add ModbusAddress type and HealthStatus enum
Implements T025-T027 from TDD workflow (red-green-refactor): - T025 (red): Tests for ModbusAddress with From<RelayId> conversion - T026 (green): ModbusAddress newtype (#[repr(transparent)]) with offset mapping - T027 (red+green): HealthStatus enum with state transitions ModbusAddress wraps u16 and converts user-facing relay IDs (1-8) to Modbus addresses (0-7) at the domain boundary. HealthStatus tracks relay health with Healthy, Degraded, and Unhealthy states supporting error tracking and recovery monitoring. Ref: T025, T026, T027 (specs/001-modbus-relay-control)
This commit is contained in:
@@ -260,19 +260,19 @@
|
||||
- **File**: src/domain/relay.rs
|
||||
- **Complexity**: Low | **Uncertainty**: Low
|
||||
|
||||
- [ ] **T025** [US1] [TDD] Write tests for ModbusAddress type
|
||||
- [x] **T025** [US1] [TDD] Write tests for ModbusAddress type
|
||||
- Test: ModbusAddress::from(RelayId(1)) → ModbusAddress(0)
|
||||
- Test: ModbusAddress::from(RelayId(8)) → ModbusAddress(7)
|
||||
- **File**: src/domain/modbus.rs
|
||||
- **Complexity**: Low | **Uncertainty**: Low
|
||||
|
||||
- [ ] **T026** [US1] [TDD] Implement ModbusAddress type with From<RelayId>
|
||||
- [x] **T026** [US1] [TDD] Implement ModbusAddress type with From<RelayId>
|
||||
- #[repr(transparent)] newtype wrapping u16
|
||||
- Implement From<RelayId> with offset: user 1-8 → Modbus 0-7
|
||||
- **File**: src/domain/modbus.rs
|
||||
- **Complexity**: Low | **Uncertainty**: Low
|
||||
|
||||
- [ ] **T027** [US3] [TDD] Write tests and implement HealthStatus enum
|
||||
- [x] **T027** [US3] [TDD] Write tests and implement HealthStatus enum
|
||||
- Enum: Healthy, Degraded { consecutive_errors: u32 }, Unhealthy { reason: String }
|
||||
- Test transitions between states
|
||||
- **File**: src/domain/health.rs
|
||||
|
||||
Reference in New Issue
Block a user