| """ |
| Seed RAG graph with historical healing action success rates. |
| Run once before starting the API server. |
| """ |
| import sys |
| import os |
| sys.path.append(os.path.dirname(__file__)) |
|
|
| from app.core.deps import get_rag_graph |
| from agentic_reliability_framework.core.models.event import HealingAction |
|
|
| def seed_historical_data(): |
| rag = get_rag_graph() |
| |
| |
| seed_data = [ |
| |
| {"incident_id": "seed_restart_1", "component": "test", "action": HealingAction.RESTART_CONTAINER.value, "success": True, "resolution_time_minutes": 2}, |
| {"incident_id": "seed_restart_2", "component": "test", "action": HealingAction.RESTART_CONTAINER.value, "success": True, "resolution_time_minutes": 3}, |
| {"incident_id": "seed_restart_3", "component": "test", "action": HealingAction.RESTART_CONTAINER.value, "success": False, "resolution_time_minutes": 10}, |
| |
| |
| {"incident_id": "seed_rollback_1", "component": "test", "action": HealingAction.ROLLBACK.value, "success": True, "resolution_time_minutes": 1}, |
| {"incident_id": "seed_rollback_2", "component": "test", "action": HealingAction.ROLLBACK.value, "success": True, "resolution_time_minutes": 2}, |
| {"incident_id": "seed_rollback_3", "component": "test", "action": HealingAction.ROLLBACK.value, "success": False, "resolution_time_minutes": 5}, |
| |
| |
| {"incident_id": "seed_scale_1", "component": "test", "action": HealingAction.SCALE_OUT.value, "success": True, "resolution_time_minutes": 5}, |
| {"incident_id": "seed_scale_2", "component": "test", "action": HealingAction.SCALE_OUT.value, "success": False, "resolution_time_minutes": 15}, |
| |
| |
| {"incident_id": "seed_cb_1", "component": "test", "action": HealingAction.CIRCUIT_BREAKER.value, "success": True, "resolution_time_minutes": 1}, |
| {"incident_id": "seed_cb_2", "component": "test", "action": HealingAction.CIRCUIT_BREAKER.value, "success": True, "resolution_time_minutes": 2}, |
| |
| |
| {"incident_id": "seed_ts_1", "component": "test", "action": HealingAction.TRAFFIC_SHIFT.value, "success": True, "resolution_time_minutes": 4}, |
| {"incident_id": "seed_ts_2", "component": "test", "action": HealingAction.TRAFFIC_SHIFT.value, "success": False, "resolution_time_minutes": 8}, |
| ] |
| |
| |
| for item in seed_data: |
| |
| from agentic_reliability_framework.core.models.event import ReliabilityEvent |
| event = ReliabilityEvent( |
| component=item["component"], |
| latency_p99=500, |
| error_rate=0.1, |
| service_mesh="default" |
| ) |
| |
| rag.record_outcome( |
| incident_id=item["incident_id"], |
| event=event, |
| action_taken=item["action"], |
| success=item["success"], |
| resolution_time_minutes=item["resolution_time_minutes"] |
| ) |
| print(f"Seeded: {item['action']} -> success={item['success']}") |
| |
| print(f"Seeded {len(seed_data)} historical outcomes.") |
| print(f"Stats per action:") |
| for action in HealingAction: |
| stats = rag.get_historical_effectiveness(action.value, component_filter="test") |
| print(f" {action.value}: uses={stats['total_uses']}, success_rate={stats['success_rate']:.2f}, avg_time={stats['avg_resolution_time_minutes']:.1f} min") |
|
|
| if __name__ == "__main__": |
| seed_historical_data() |
|
|