Skip to content

[Phase 1.3] Async Operation Execution GET/DELETE Routes #3

@rettde

Description

@rettde

Beschreibung

Fuer asynchrone Operationen (ISO 17978-3, Kapitel 7.9) fehlen die Routen GET und DELETE auf /operations/{service}/executions/{id}. Aktuell existiert nur GET/POST auf /operations/{service}/executions (Listing und Start), aber der Client kann den Status einer laufenden Execution nicht abfragen und sie nicht abbrechen.

Betroffene Dateien

  • cda-sovd/src/sovd/mod.rs — Route-Registrierung (Zeile 438-448)
  • cda-sovd/src/sovd/components/ecu/operations/ — Handler-Logik
  • cda-sovd-interfaces/src/components/ecu/operations.rs — Interface-Definitionen

Implementierungs-Tasks

  • Route GET /operations/{service}/executions/{id} registrieren
  • Route DELETE /operations/{service}/executions/{id} registrieren
  • GET Handler: Status der laufenden Execution zurueckgeben (pending/running/completed/failed)
  • GET Handler: Bei abgeschlossener Execution das Ergebnis zurueckgeben
  • DELETE Handler: Laufende Execution abbrechen (ggf. UDS StopRoutine SID 31 SF 02)
  • DELETE Handler: Abgeschlossene Execution aus Speicher entfernen
  • OpenAPI-Dokumentation fuer beide Endpoints
  • Execution-Lifecycle State Machine (Created -> Running -> Completed/Failed/Cancelled)

Unit Tests (Pflicht)

  • Test: GET auf laufende Execution -> Status 200 mit progress
  • Test: GET auf abgeschlossene Execution -> Status 200 mit Ergebnis
  • Test: GET auf nicht-existierende Execution -> Status 404
  • Test: DELETE auf laufende Execution -> Status 200, Operation gestoppt
  • Test: DELETE auf abgeschlossene Execution -> Status 200, Cleanup
  • Test: DELETE auf nicht-existierende Execution -> Status 404
  • Test: Parallele GET-Requests auf gleiche Execution
  • Test: GET nach DELETE -> Status 404

CrossCheck & Constraints

  • Pruefung gegen ISO 17978-3 Kapitel 7.9 (Asynchronous Operations)
  • Constraint: Execution-ID muss UUID v4 Format haben
  • Constraint: Abgebrochene Executions muessen UDS StopRoutine senden
  • Constraint: Execution-Status muss konsistent sein (kein Race Condition)
  • Regressionstests: Bestehende sync Operations duerfen nicht brechen

Security Audit

  • Execution-ID darf nicht erratbar sein (UUID v4 Randomness)
  • Nur der Lock-Holder darf DELETE ausfuehren
  • GET darf keine sensiblen UDS-Response-Daten an unauthorisierte Clients leaken
  • Memory-Leak Prevention: Abgeschlossene Executions muessen nach Timeout bereinigt werden

Zeitschaetzung

Aufwand
Konventioneller Entwickler 2 PT
KI-Agent 0.5 PT

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions