2. Request-Response Flow Diagram
GET /api/traffic/action (Auto-generated observations)
sequenceDiagram
participant Client as External Client
participant JG as Java Gateway<br/>Port 8080
participant PS as Python Service<br/>Port 8000
participant Model as RL Model<br/>PPO
Client->>JG: GET /api/traffic/action
Note over JG: Generate dummy<br/>observations (10 values)
JG->>JG: Create random observation<br/>values [0-1]
JG->>PS: POST /predict_action<br/>{"obs_data": [0.1, 0.2, ...]}
Note over PS: Load model & predict
PS->>Model: Call model.predict()
Model-->>PS: Return action (0-3)
Note over PS: Format response
PS-->>JG: {"action": 2}
Note over JG: Map action to signal
JG->>JG: 2 → "GREEN"
JG-->>Client: {<br/>"predictedAction": 2,<br/>"signalState": "GREEN",<br/>"timestamp": ...,<br/>"status": "success"<br/>}
POST /api/traffic/action (Custom observations)
sequenceDiagram
participant Client as External Client
participant JG as Java Gateway<br/>Port 8080
participant Val as Validator
participant PS as Python Service<br/>Port 8000
participant Model as RL Model<br/>PPO
Client->>JG: POST /api/traffic/action<br/>{"observations": [0.1, 0.2, ...]}
JG->>Val: Validate observations
alt Validation Success
Val-->>JG: ✓ Valid
else Validation Failed
Val-->>JG: ✗ Error: Empty/Null
JG-->>Client: 400 Bad Request
end
JG->>PS: POST /predict_action<br/>{"obs_data": [0.1, 0.2, ...]}
Note over PS: Process with model
PS->>Model: Call model.predict()
Model-->>PS: Return action
PS-->>JG: {"action": 1}
JG-->>Client: {<br/>"predictedAction": 1,<br/>"signalState": "YELLOW",<br/>"timestamp": ...,<br/>"status": "success"<br/>}
GET /api/traffic/health (Health Check)
sequenceDiagram
participant Client as External Client
participant JG as Java Gateway<br/>Port 8080
participant HealthCheck as Health Checker
participant PS as Python Service<br/>Port 8000
Client->>JG: GET /api/traffic/health
JG->>HealthCheck: Check all services
HealthCheck->>PS: GET /health
alt Python Service "Up"
PS-->>HealthCheck: {"status": "healthy"}
HealthCheck-->>JG: ✓ All healthy
else Python Service "Down"
PS--xHealthCheck: Connection refused
HealthCheck-->>JG: ⚠️ Degraded
end
JG-->>Client: {<br/>"status": "healthy",<br/>"inferenceService": "up",<br/>"timestamp": ...<br/>}