111 lines
3.5 KiB
Markdown
111 lines
3.5 KiB
Markdown
# Runtime driver working-time processing
|
|
|
|
Runtime driver working-time processing is a source-neutral processing plan over canonical EventHub events.
|
|
|
|
The preferred runtime execution endpoint is:
|
|
|
|
```http
|
|
POST /api/eventhub/runtime-processing/executions
|
|
```
|
|
|
|
Use:
|
|
|
|
```json
|
|
{
|
|
"processingPlanKey": "driver-working-time-v1",
|
|
"sourceSelection": {
|
|
"tenantKey": "default",
|
|
"driverKey": "12:12345678901234",
|
|
"occurredFrom": "2026-05-01T00:00:00Z",
|
|
"occurredTo": "2026-05-31T23:59:59Z",
|
|
"sourceInputs": [
|
|
{
|
|
"sourceFamily": "TACHOGRAPH_FILE_SESSION",
|
|
"eventBackend": "SOURCE_DB",
|
|
"sessionIds": [
|
|
"11111111-1111-1111-1111-111111111111",
|
|
"22222222-2222-2222-2222-222222222222"
|
|
]
|
|
},
|
|
{
|
|
"sourceFamily": "TACHOGRAPH_DB",
|
|
"eventBackend": "EVENTHUB_DB"
|
|
},
|
|
{
|
|
"sourceFamily": "YELLOWFOX_DB",
|
|
"eventBackend": "SOURCE_DB"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
Use `sourceInputs` when one runtime request must mix direct-source and EventHub-backed inputs. Keep `sourceFamilies + eventBackend` only for legacy same-backend scopes.
|
|
|
|
## Canonical input idea
|
|
|
|
The plan should work with events from any source once they are normalized into canonical EventHub event semantics:
|
|
|
|
```text
|
|
DRIVER_ACTIVITY START/END
|
|
DRIVER_CARD or DRIVER_VEHICLE_USAGE INSERT/WITHDRAW
|
|
POSITION / PLACE / BORDER_CROSSING / LOAD_UNLOAD / IGNITION / ODOMETER support evidence
|
|
```
|
|
|
|
Tachograph files and tachograph databases are only two possible sources. YellowFox and future telematics providers can contribute vehicle-only evidence that is attached to driver partitions by vehicle/time overlap.
|
|
|
|
## New source-neutral artifacts
|
|
|
|
```text
|
|
DriverWorkingTimeProcessingResultDto
|
|
DriverWorkingTimeProcessingCore
|
|
RuntimeDriverWorkingTimeScopeProcessingService
|
|
DriverWorkingTimeRuntimeProcessingPlan
|
|
runtime-driver-event-interval-preprocessor.epl
|
|
driver-working-time-derived-projections.epl
|
|
```
|
|
|
|
## Compatibility artifacts
|
|
|
|
The following names are kept only for backward compatibility with existing file-session APIs and older Postman calls:
|
|
|
|
```text
|
|
TachographEsperDriverProcessingResultDto
|
|
TachographEsperProcessingCore
|
|
UnifiedRuntimeTachographEsperScopeProcessingService
|
|
tachograph-driving-derived-projection-events-preprocessor.epl
|
|
tachograph-driving-derived-projection-bundle.epl
|
|
```
|
|
|
|
New runtime-processing code should use the driver-working-time names.
|
|
|
|
The common Esper contract is source-neutral as well:
|
|
|
|
```text
|
|
DriverWorkingTimeActivityPointInputEvent
|
|
DriverWorkingTimeVehicleUsagePointInputEvent
|
|
DriverWorkingTimeActivityIntervalInputEvent
|
|
DriverWorkingTimeVehicleUsageIntervalInputEvent
|
|
DriverWorkingTimeSupportEvidenceInputEvent
|
|
DriverWorkingTimeProjectionFinalizeEvent
|
|
DriverWorkingTimeVehicleUsageIntervalInputWindow
|
|
```
|
|
|
|
Tachograph-prefixed Esper types remain only inside the compatibility resources listed above.
|
|
|
|
## EPL-backed phase modules
|
|
|
|
The driver working-time plan now contains first-class EPL-backed phase modules for event-to-interval conversion:
|
|
|
|
```text
|
|
event-to-activity-intervals
|
|
EventHub DRIVER_ACTIVITY START/END events
|
|
-> DriverActivityIntervalEvent
|
|
|
|
event-to-vehicle-usage-intervals
|
|
EventHub DRIVER_CARD INSERT/WITHDRAW events
|
|
-> DriverVehicleUsageIntervalEvent
|
|
```
|
|
|
|
The final derived projection module still delegates to the shared working-time projection service for parity with existing file-session processing. This lets us migrate the pipeline gradually: common event-to-interval conversion is now EPL-module based, while the larger rest/trip/overnight projection bundle remains compatibility-safe.
|