refactor(ocpp): enforce strict version separation in OCPPServiceUtils
Extract version-specific logic from cross-version utilities:
- P1: Move buildStatusNotificationRequest into OCPP16ServiceUtils and
OCPP20ServiceUtils as version-specific static methods
- P2: Move buildTransactionEndMeterValue to OCPP16ServiceUtils, remove
dead OCPP 2.0 branch that was never called
- P3: Split buildMeterValue into thin dispatcher plus dedicated
buildMeterValueForOCPP16/buildMeterValueForOCPP20 internal functions
- P4: Simplify checkConnectorStatusTransition to select transition
tables by version then apply single shared lookup logic
Harmonize tests to match new module structure:
- Rename OCPPServiceUtils-StopTransaction.test.ts to
OCPPServiceOperations.test.ts (functions moved to that module)
- Move mapStopReasonToOCPP20 tests to OCPPServiceUtils-pure.test.ts
(function still lives in OCPPServiceUtils)
- Add dedicated unit tests for buildStatusNotificationRequest in both
OCPP16ServiceUtils.test.ts and new OCPP20ServiceUtils-StatusNotification.test.ts
- Fix redundant describe nesting in OCPP20 test file