Accident State Manager Agent
The Accident State Manager Agent handles the lifecycle and state transitions of traffic accidents from detection to resolution.
π Overviewβ
| Property | Value |
|---|---|
| Module | src.agents.state_management.accident_state_manager_agent |
| Class | AccidentStateManagerAgent |
| Author | UIP Team |
| Version | 1.0.0 |
π― Purposeβ
- Track accident lifecycle from detection to resolution
- Manage state transitions with validation rules
- Coordinate response workflows based on state changes
- Maintain accident history for analytics
π Accident Statesβ
| State | Description | Next States |
|---|---|---|
detected | Initial detection by CV analysis | confirmed, false_positive |
confirmed | Verified by additional data | responding, resolved |
responding | Emergency services dispatched | resolved |
resolved | Accident cleared | - |
false_positive | Detection was incorrect | - |
State Machineβ
ββββββββββββ
β detected β
ββββββ¬ββββββ
β
βββββββββββββββββββββββ
βΌ βΌ
ββββββββββββ βββββββββββββββ
βconfirmed β βfalse_positiveβ
ββββββ¬ββββββ βββββββββββββββ
β
βββββββββββββββββ
βΌ βΌ
βββββββββββββ ββββββββββββ
βresponding ββββΆβ resolved β
βββββββββββββ ββββββββββββ
π Usageβ
Create Accidentβ
from src.agents.state_management.accident_state_manager_agent import AccidentStateManagerAgent
manager = AccidentStateManagerAgent()
# Create new accident
accident = manager.create_accident({
"id": "ACC_001",
"location": {"lat": 10.762, "lon": 106.660},
"severity": "moderate",
"detected_by": "CAM_025",
"timestamp": "2025-11-29T10:30:00Z"
})
Transition Stateβ
# Confirm accident
manager.transition(
accident_id="ACC_001",
to_state="confirmed",
metadata={
"confirmed_by": "operator_1",
"confirmation_source": "visual_verification"
}
)
# Mark as responding
manager.transition(
accident_id="ACC_001",
to_state="responding",
metadata={
"response_unit": "UNIT_12",
"eta_minutes": 5
}
)
# Resolve accident
manager.transition(
accident_id="ACC_001",
to_state="resolved",
metadata={
"resolution_time": "2025-11-29T11:00:00Z",
"lane_cleared": True
}
)
Query Accidentsβ
# Get active accidents
active = manager.get_by_state(["detected", "confirmed", "responding"])
# Get accident history
history = manager.get_state_history("ACC_001")
# Get accidents by location
nearby = manager.get_by_location(
lat=10.762,
lon=106.660,
radius_km=1.0
)
βοΈ Configurationβ
# config/accident_config.yaml
accident_state_manager:
enabled: true
# State definitions
states:
detected:
auto_expire_minutes: 30
allowed_transitions:
- confirmed
- false_positive
confirmed:
allowed_transitions:
- responding
- resolved
responding:
allowed_transitions:
- resolved
resolved:
final: true
false_positive:
final: true
# Notifications
notifications:
on_detected:
- alert_dispatcher
- dashboard
on_confirmed:
- emergency_services
- traffic_management
on_resolved:
- analytics
- reporting
π Eventsβ
| Event | Trigger | Payload |
|---|---|---|
accident.detected | New detection | accident details |
accident.confirmed | Confirmation | verification info |
accident.response_started | Response begins | unit details |
accident.resolved | Accident cleared | resolution details |
π Related Documentationβ
- Accident Detection Agent - Detection logic
- Alert Dispatcher - Alerting
- Congestion State Manager - Related congestion
See the complete agents reference for all available agents.